想要确定自动相关是否是区分实线和虚线的好主意。

我得到了由虚线(不同图像中的可变频率的间隙)和实线(实线的长度可能不会延伸到整个图像尺寸)组成的固定尺寸的图像

首先,我开始沿图像长度收集图像的斑块窗口强度,并在floats::vector中获得其斑块强度比(每个斑块的总强度/斑块的大小* 255)。

考虑使用补丁率>阈值数作为检测形式。但是,这将遇到无法完全延伸到整个图像长度的实线。

有人建议使用自相关来检测满足阈值的多个峰的存在(希望我做对了)。现在我有几个问题

  • 这种方法真的可行吗?或者可能存在其他度量或方法来区分虚线和实线
  • 有人有代码与std::vectors做自相关吗?或者可以将我指向一个实现。我正在使用OpenCV和C++

  • 顺便说一句,这是我的形象

    虚线
    c++ - 区分实线和虚线的相关性-LMLPHP

    实线
    c++ - 区分实线和虚线的相关性-LMLPHP

    最佳答案

    一种简单的方法是使用这样的观察:虚线的像素少于实线。使用此信息,我们可以使用 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/

    10-09 02:48