首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测量二进制位图线中的噪声

测量二进制位图线中的噪声
EN

Stack Overflow用户
提问于 2013-11-14 17:51:23
回答 1查看 294关注 0票数 1

我有一个具有一组边缘(行)的二进制位图,类似于下面的图像

  1. 光滑而笔直的一段。
  2. 具有高频噪声的直线段,不相连的元素(浮动像素),有时被打破.
  3. 一条平滑的线,有两个重要的方向变化。
  4. 具有两个重要的方向变化和高频噪声的片段。

这些边缘是图像上某些区域的边界,我需要测量这些边缘的质量(为了分割目的)。这一计量应返回两个因素:

  • 高频噪声
  • 某一段方向上的重大变化。

因此,对于上面的例子,度量应该返回:

  1. 低频噪声-0次变化。
  2. 高频噪声-0次变化。
  3. 低频噪声-2次变化.
  4. 高频噪声-2次变化.

对于每个给定的图像,已经知道哪些像素属于每个片段。我没有连通元素(像素)的图表,只有位图。如果可能的话尽量避免创建一个。

算法应该是快速的,所以速度比精度更重要(合理的近似是可以的)

我可以用什么样的方法来进行这种测量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 20:23:30

我只知道测量噪音的方法。

我假设只有一个片段的位图图像,图像有N白色像素,i-th像素的坐标(行,列)是(r[i],c[i])i1N

计算线段的包围盒的高度和宽度:边框是与x,y帧平行的矩形;边框有

代码语言:javascript
复制
width = c_max - c_min

而且它有

代码语言:javascript
复制
height = r_max - r_min

其中:

c_mini1N的最小值

c_maxic[i]最大值,从1N

r_mini1N的最小值

r_maxir[i]最大值,从1N

我期望一条没有噪音的线由大致等于边框对角线长度的若干像素组成:

代码语言:javascript
复制
N_diagonal = sqrt( width*width + height*height )

现在,您必须将NN_diagonal进行比较:如果N/N_diagonal接近于1时,噪声就越低,N/N_diagonal越远,噪音就越高。如果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线算法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19984784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档