Graphics 测量二进制位图行中的噪声
我有一个二值化位图,它有一组类似于下图所示的边(线)Graphics 测量二进制位图行中的噪声,graphics,graph,bitmap,computer-vision,Graphics,Graph,Bitmap,Computer Vision,我有一个二值化位图,它有一组类似于下图所示的边(线) 平滑而直的部分 具有高频噪声、非连接元素(浮动像素)和有时断裂的直线段 方向有两个重要变化的平滑线 方向和高频噪声有两个重要变化的段 这些边是图像上某些区域的边界,我需要测量这些边的质量(用于分割目的)。此测量应返回2个因素: 高频噪声 在某一段上的方向发生重大变化 因此,对于上述示例,测量值应返回: 低高频噪声-0次变化 高频噪声-0次变化 低高频噪声-2次变化 高频噪声-2次变化 对于每个给定的图像,已经知道哪些像素属于每个片段。
- 高频噪声
- 在某一段上的方向发生重大变化
我可以使用什么样的方法来进行这种测量?我只知道噪声测量 我假设有一个只有一段的位图图像,图像有
N
白色像素,I
-第个像素的坐标(行、列)是(r[I],c[I])
,I
从1
变为N
计算段的高度和宽度:边界框是一个矩形,边平行于x,y框架;边界框已被删除
width = c_max - c_min
而且它已经
height = r_max - r_min
其中:
c_min
是i
的c[i]
的最小值,从1
到N
c_max
是i
的c[i]
的最大值,从1
到N
r\u min
是i
的r[i]
的最小值,从1
到N
r\u max
是i
的r[i]
的最大值,从1
到N
我期望没有噪声的线由大致等于边界框对角线长度的若干像素组成:
N_diagonal = sqrt( width*width + height*height )
现在,您必须将N
与N\u diagonal
进行比较:如果N/N\u diagonal
接近1,则噪声越低,N/N\u diagonal
离1越远,噪声越高。如果N/N\u diagonal
非常高,则与表示线条所需的最小像素数相比,您有许多白色像素。另一方面,如果N/N_diagonal
非常低,则图像上可能只有一些白色像素,而没有任何片段。所以基本上你需要两个阈值,你可以通过一些实验来调整你的可用图像;我将从以下内容开始:
N/N\u对角线<0.95
:像素不够
0.95我只想到了噪声测量
我假设有一个只有一段的位图图像,图像有N
白色像素,I
-第个像素的坐标(行、列)是(r[I],c[I])
,I
从1
变为N
计算段的高度和宽度:边界框是一个矩形,边平行于x,y框架;边界框已被删除
width = c_max - c_min
而且它已经
height = r_max - r_min
其中:
c_min
是i
的c[i]
的最小值,从1
到N
c_max
是i
的c[i]
的最大值,从1
到N
r\u min
是i
的r[i]
的最小值,从1
到N
r\u max
是i
的r[i]
的最大值,从1
到N
我期望没有噪声的线由大致等于边界框对角线长度的若干像素组成:
N_diagonal = sqrt( width*width + height*height )
现在,您必须将N
与N\u diagonal
进行比较:如果N/N\u diagonal
接近1,则噪声越低,N/N\u diagonal
离1越远,噪声越高。如果N/N\u diagonal
非常高,则与表示线条所需的最小像素数相比,您有许多白色像素。另一方面,如果N/N_diagonal
非常低,则图像上可能只有一些白色像素,而没有任何片段。所以基本上你需要两个阈值,你可以通过一些实验来调整你的可用图像;我将从以下内容开始:
N/N\u对角线<0.95
:像素不够
0.95这个问题非常广泛。你能缩小范围吗?我不这么认为,我只需要在任意位图边缘上测量两个参数:)这个问题真的很广泛。你能缩小范围吗?我不这么认为,我只需要在任意位图边缘上测量两个参数:)我喜欢这种方法,它足够简单。请注意,如果假设直线为4-连接,则N_对角线应等于边界框上任何两个相对角之间的曼哈顿距离;如果直线为8-连接,则N_对角线应等于框的最长边。@xocatzin谢谢您提供的信息!也许你可以把N_对角线等于曼哈顿距离和切比雪夫距离的平均值。我喜欢这种方法,它很简单。请注意,如果假定直线为4-c,则N_对角线应等于边界框上任何两个相对角之间的曼哈顿距离