在给定图像上查找十字及其方向
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.
另一个可能更简单的解决方案是:
- 计算骨架
- 强力剪枝,小枝全部剪掉
- 那么,如果一个像素有3个邻居,它就属于一个T形交集,如果它有4个,它就是一个十字交集。
我想从一些任意照片图像中识别 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.
另一个可能更简单的解决方案是:
- 计算骨架
- 强力剪枝,小枝全部剪掉
- 那么,如果一个像素有3个邻居,它就属于一个T形交集,如果它有4个,它就是一个十字交集。