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

Finding crosses and their orientation on a given image

我想从一些任意照片图像中识别 table 结构并将其存储在一些正式的符号中(让它成为 HTML table 符号)。

例如,我将这张模糊图像作为输入:

二值化后我实现了这个:

现在为了检测结构,我想检测线之间的交点、它们的类型(T 型、X 型或简单角)、它们的方向和它们在图像上的位置。在此之后,我将使用所有获得的信息进一步连接某个结构中的相邻十字,并将该结构转化为形式表示。

问题在于检测十字及其方向:

一般来说,这些十字可以缩放 and/or 旋转。 也许有人可以帮助解决这个问题的方法?或者可能会为整个任务推荐不同的方法?

到目前为止我写的就是这些:

 # -*- 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)

提前感谢任何response/idea。

您想使用霍夫变换。它会检测到不同的行,你会得到 equations/orientations.

另一个可能更简单的解决方案是:

  1. 计算骨架
  2. 强力剪枝,小枝全部剪掉
  3. 那么,如果一个像素有3个邻居,它就属于一个T形交集,如果它有4个,它就是一个十字交集。