我只对噪声测量有一个想法。
我假设有一个只有一个段的位图图像,图像有白色像素,第 -th 像素N的坐标(行,列)是,从到。i(r[i],c[i])i1N
计算段边界框的高度和宽度:边界框是一个边平行于 x,y 框架的矩形;边界框有
width = c_max - c_min
它有
height = r_max - r_min
在哪里:
c_minc[i]是i从1到的最小值N
c_maxc[i]是i从1到的最大值N
r_minr[i]是i从1到的最小值N
r_maxr[i]是i从1到的最大值N
我希望一条没有噪声的线由大致等于边界框对角线长度的像素数组成:
N_diagonal = sqrt( width*width + height*height )
现在你必须比较N:N_diagonal如果N/N_diagonal接近 1,则噪音低,离N/N_diagonal1 越远,噪音越高。如果N/N_diagonal非常高,则与表示线条所需的最小像素数相比,您有很多白色像素。另一方面,如果N/N_diagonal非常低,则图像上可能只有一些白色像素,根本没有片段。所以基本上你需要两个阈值,你可以用你的可用图像进行一些实验来调整它们;我将从以下内容开始:
N/N_diagonal < 0.95: 像素不够
0.95 <= N/N_diagonal <= 1.05: 低噪声
1.05 < N/N_diagonal: 高噪音
对于算法的时间性能:在我看来,该算法是 O( N·) 来找到边界框的宽度和高度,然后你有一些浮点运算来计算对角线和噪声测量。
如果对角线近似不够,那么您可以通过更多努力获得更好的估计,例如查看Bresenham's line algorithm。