在给定图像上查找十字架及其方向

时间:2016-03-27 17:57:16

标签: opencv image-processing computer-vision

我想从一些任意照片图像识别表格结构,并以一些正式表示法存储它(让它成为HTML表格符号)。

例如,我将此模糊图像作为输入: enter image description here

二值化后我实现了这个目的: enter image description here

现在要检测结构我想要检测线之间的交叉点,它们的类型(T型,X型或简单角),它们的方向以及它们在图像上的位置。在此之后,我将使用所有获得的信息进一步加入某些结构中的相邻十字架,并将此结构转换为正式表示。

问题在于检测十字架及其方向: enter image description here enter image description here

通常,这些十字可以缩放和/或旋转。 也许有人可以帮助解决这个问题的方法?或者可能为整个任务推荐不同的方法?

到目前为止我所写的内容:

 # -*- coding: utf-8 -*-

 import cv2
 import cv
 import numpy

 original = cv2.imread("/home/user/my_photo-1.jpg")
 grayscale = cv2.cvtColor(original, cv2.COLOR_BGR2GRAY)
 smoothed = cv2.GaussianBlur(grayscale, (5,5), 0)
 cv2.imshow("original", original)
 cv2.imshow("grayscale", grayscale)

 binarized = cv2.adaptiveThreshold(grayscale, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 7, 8)
 binarized = cv2.Canny(grayscale, 50, 200)
 cv2.imshow("binarized", binarized)
 cv2.waitKey(0)

提前感谢任何回复/想法。

1 个答案:

答案 0 :(得分:1)

您想要使用Hough变换。它将检测不同的线,您将获得方程式/方向。

另一种解决方案,可能更简单:

  1. 计算骨架
  2. 强力修剪以删除所有小分支
  3. 然后,如果一个像素有3个邻居,它属于T形交叉点,如果它有4个,则它是交叉交叉点。