I used the Laplacian transform in OpenCV for edge detection and then used Hough Line Transform for detecting lines in it. These identified lines need to eventually removed from the image.
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('Feb_16-0.jpg',0)
kernel = np.ones((1,1),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
blur = cv2.GaussianBlur(opening,(1,1),0)
ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
laplacian = cv2.Laplacian(th4,cv2.CV_8UC1)
cst = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(laplacian,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(cst,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imwrite('houghlines5.jpg',cst)
I expect to identify all the lines in the Bill:
The results of the laplacian edge detection is as follows:
whereas the results returned by Hough Line Transform identifies only one line as marked by the green line in the below image:
Could anyone help me figure out what modifications in code would be required so that all the bold horizontal/vertical lines of the Internet Bill could be identified?