检测图像中蜿蜒的河流


14

我有表面:ž X ÿ 与每个表面上的测量的属性(变量):一个X ÿ 。大多数表面将在整个表面上具有随机分布的属性,但是某些表面(有趣的表面)将显示出蜿蜒的河流模式:ñž一世Xÿ一种一世Xÿ

在此处输入图片说明

我需要您的帮助,以提出一个可以告诉我们表面中最有可能具有这种图案的测量方法。ñ

如下所示,有许多可能具有相同直方图的地图;因此该度量需要“奖励”空间连续性。为了说明这一点,我创建了一个随机图像,其直方图与河流图像几乎相同: 在此处输入图片说明

因此,图像统计信息熵可能只是解决方案的一部分。

这是一个没有蜿蜒河流图案的图像示例: 在此处输入图片说明

我的图像是合成的(在Matlab中制作)。在现实生活中,没有图案的图像可能会以相似值的小斑点形式具有更多的空间连续性。

以下是灰度图像:

在此处输入图片说明 在此处输入图片说明


1
您是否可以发布实际图像(没有轴,调色板,直方图,因此我们可以尝试其他算法)?另外:“蜿蜒的河流”实际上是正弦波,还是可以有任何形状?
Niki Estner 2012年

1
嗨,妮基。在我的示例(Matlab中的综合数据)中,河流是正弦波。在现实生活中,它是“正弦似的”。有时它会偏离中心线,有时不会。
安迪2012年

Answers:


13

一种非常简单的措施是将图像中的每一行与其上方的行进行比较,从而允许一些水平移动。

我在Mathematica中总结了这个简单的算法:

Mean[MapThread[
  Function[{line1, line2},
   Min[Table[Norm[line1 - RotateLeft[line2, shift]], {shift, -5, 5}]]
   ], {s[[2 ;;]], s[[;; -2]]}]]

它仅获取每对相邻的行,将行之一旋转-5..5像素,并采用最小的欧几里德距离。对于每一行对,这产生一个欧几里德距离。我只是采用均值(但是根据您的实际数据,均值或中位数的截断可能会更可靠)。

这些是我从人工生成的样本中获得的结果(公式:Normalize(随机噪声*(1因子)+信号*因子))

在此处输入图片说明

如果将结果与信号强度作图,该算法似乎可以很好地测量“河道信号强度”:

在此处输入图片说明

编辑:我忘了规范化输入样本。修复了上传的新结果图像


好答案。但是,我认为您的度量可以被其他连续曲线(例如直线)所欺骗。我将通过更改最后一步以将正弦值拟合到您发现的(x,y)点(具有一定幅度,相位和频率)来稍微改善一下。然后,该幅度可以用作“河流强度”的测量。
Andrey Rubshtein 2012年

4

使用该直方图,您似乎走在正确的轨道上。如果这是样品中的代表性图像,则该直方图表明仅通过检查图像中是否包含某个阈值以上的值就可以检测出存在曲折图案的图像。

除此之外,您可以尝试获取每个图像的。这样一来,每个图像便可以代表一个数字,以表征其随机性。之后,您可以获取图像熵的直方图。如果您确定将图像清楚地分为“完全随机”和“平均随机”(即随机性较低),则熵的直方图将是双峰的。左模式对应于具有较低熵的图像,因此对应于右模式的图像,其熵较低,因此随机性较小(更有可能包含曲折模式),反之亦然。

(BTW MATLAB包括相关功能

编辑:作为对OP注释的回应,并随后上传了有关该问题的更多信息,这是此答案的另外一点:

熵仍然可以工作,但不能使用香农公式描述的普通的简单无内存情况(假设时间序列的每个样本都独立于先前的样本)。

作为一种更简单的选择,您可以尝试检查图像自相关的特征


嗨,A_A。我认为图像统计是解决方案的一部分,但需要以某种方式加权相邻像素以奖励空间连续性(请参见上面的“随机属性图”)。
安迪

您好,我同意并扩大了答案。
A_A 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.