how to calculate the skew slopes of the skewed document using connnected components opencv python?

Viewed 77

I am using Connected components(NN) method to detect and correct the skew document.I have an image of skew document.I have done the following steps :

1.document image preprocessing.

2.elegible connected components

def imshow(image1):
    plt.figure(figsize=(20,10)
    plt.imshow(image1)

output = cv2.connectedComponentsWithStats(invr_binary, connectivity, cv2.CV_32S) 
(numLabels, labels, stats, centroids) = output
 
## non text removal 
w_avg=stats[1:, cv2.CC_STAT_WIDTH].mean()
h_avg=stats[1: , cv2.CC_STAT_HEIGHT].mean()
B_max=(w_avg * h_avg) * 4
B_min=(w_avg * h_avg) * 0.25

result = np.zeros((labels.shape), np.uint8)
output1=image.copy()
a, b=0.6, 2    
for i in range(0, numLabels - 1):

area=stats[i, cv2.CC_STAT_AREA]
if area>B_min and area<B_max:           ## non text removal
    result[labels == i + 1] = 255
    x = stats[i, cv2.CC_STAT_LEFT]
    y = stats[i, cv2.CC_STAT_TOP]
    w = stats[i, cv2.CC_STAT_WIDTH]
    h = stats[i, cv2.CC_STAT_HEIGHT]
    area = stats[i, cv2.CC_STAT_AREA]
    (cX, cY) = centroids[i]
    c=w/h
    if a<c and c<b:                           ## A and C type filtering
        result[labels == i + 1] = 255
        cv2.rectangle(output1, (x, y), (x + w, y + h), (0, 255, 0), 1)
        cv2.circle(output1, (int(cX), int(cY)), 1, (0, 0, 255), -1)
    
imshow(output1)   

input image :
enter image description here

output image :

enter image description here

After finding the center points of the text which is shown in the output image.Now is the next step skew slop calculation. But I could not understand that how to calculate that.I am using that research papers link :3.3(page no. 7) https://www.mdpi.com/2079-9292/9/1/55/pdf

0 Answers
Related