想要确定自动相关是否是区分实线和虚线的好主意。
我得到了由虚线(不同图像中的可变频率的间隙)和实线(实线的长度可能不会延伸到整个图像尺寸)组成的固定尺寸的图像
首先,我开始沿图像长度收集图像的斑块窗口强度,并在floats::vector中获得其斑块强度比(每个斑块的总强度/斑块的大小* 255)。
考虑使用补丁率>阈值数作为检测形式。但是,这将遇到无法完全延伸到整个图像长度的实线。
有人建议使用自相关来检测满足阈值的多个峰的存在(希望我做对了)。现在我有几个问题
顺便说一句,这是我的形象
虚线
实线
最佳答案
一种简单的方法是使用这样的观察:虚线的像素少于实线。使用此信息,我们可以使用 cv2.countNonZero()
来确定非零元素的数量。由于您的图像已经达到阈值,因此像素较多的图像应为实线,而像素较少的图像应为虚线。
结果:
我的实现是在Python中实现的,但您可以使用相同的思想轻松地将其隐含到C++中
import cv2
dashed = cv2.imread('dashed.png')
dashed = cv2.cvtColor(dashed, cv2.COLOR_BGR2GRAY)
solid = cv2.imread('solid.png')
solid = cv2.cvtColor(solid, cv2.COLOR_BGR2GRAY)
cv2.imshow('dashed', dashed)
cv2.imshow('solid', solid)
dashed_pixels = cv2.countNonZero(dashed)
solid_pixels = cv2.countNonZero(solid)
print('dashed', dashed_pixels)
print('solid', solid_pixels)
cv2.waitKey(0)
关于c++ - 区分实线和虚线的相关性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56272478/