Я пытаюсь извлечь вертикальные линии из изображения fabri c, используя грубые линии в opencv. Я применил контрастное усиление, чтобы улучшить линии и двустороннюю фильтрацию, чтобы попытаться удалить другие текстуры fabri c. Тем не менее, при применении резких линий, код обнаруживает линии по всему изображению. Я попытался поиграться с параметрами для hough, но результаты были такими же.
Входное изображение после применения выравнивания гистограммы и двустороннего фильтра:
Вот изображение после применения грубой линии, красным цветом обозначены обнаруженные линии. Выходные данные, показывающие обнаружение резких скачков:
Другой способ, который я могу попробовать, чтобы скачка не начинала обнаруживать мелкие фигуры Фабри c в виде линий а?
Вот код, который у меня есть:
`
img1= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img2 = cv2.equalizeHist(img1)
img3 = cv2.equalizeHist(img2)
img4 = cv2.equalizeHist(img3)
img5 = cv2.bilateralFilter(img4, 9, 75,75)
cv2.imshow("threshold",img5)
edges = cv2.Canny(img4,50,127,apertureSize = 3)
lines= cv2.HoughLines(edges, 1, math.pi/180.0, 200, np.array([]), 0, 0)
a,b,c = lines.shape
for i in range(a):
rho = lines[i][0][0]
theta = lines[i][0][1]
a = math.cos(theta)
b = math.sin(theta)
x0, y0 = a*rho, b*rho
pt1 = ( int(x0+1000*(-b)), int(y0+1000*(a)) )
pt2 = ( int(x0-1000*(-b)), int(y0-1000*(a)) )
cv2.line(img, pt1, pt2, (0, 0, 255), 2, cv2.LINE_AA)
cv2.imshow('image1',img)
cv2.waitKey(0)
cv2.destroyAllWindows()`