6

我的目标是检测代表各种植物的叶子的静脉图案

我已经做了以下事情:

原图:

在此处输入图像描述

自适应阈值处理后:

在此处输入图像描述

但是静脉不是那么清晰并且会变形,有什么办法可以得到更好的输出

编辑:

我尝试了颜色阈值我的结果仍然不令人满意我得到以下图像

在此处输入图像描述

请帮忙

4

3 回答 3

5

事实上,它的 JPEG 图像会产生“块”伪影,在您发布的示例中,这会导致静脉周围的大多数方形区域产生大量噪声,因此理想情况下处理未经过有损压缩的图像。如果这不可能,请尝试过滤图像以消除一些噪音。

您要提取的静脉与背景、叶子和阴影的颜色不同,因此某种基于颜色的阈值可能是个好主意。最近有一个 SO 问题,其中包含一些可能对这里有所帮助的代码。之后,某种自适应归一化将有助于在阈值之前增加对比度。

[编辑]
也许阈值不是您想要做的中间步骤。我通过过滤去除 jpeg 伪影,做一些 CMYK 通道数学(更多的青色和黑色)然后应用自适应均衡来完成以下操作。我很确定你可以继续使用图像梯度和非最大值抑制来产生(可能是亚像素)边缘点,并且可能使用每个点的亮度和静脉结构的属性(主要是在切线处连接)到将点连接成线。

处理后的叶子图像示例

于 2012-03-09T11:56:40.750 回答
4

过去我对 Gaussian 的边缘检测算法差异有很好的经验。基本上是这样工作的:您使用高斯模糊算法对图像进行两次模糊,但具有不同的模糊半径。然后计算两个图像之间的差异。

彼此下方具有相同颜色的像素将创建相同的模糊颜色。彼此下方具有不同颜色的像素将产生取决于模糊半径的渐变。对于更大的半径,渐变将延伸得更远。对于较小的它不会。

所以基本上这是带通滤波器。如果选定的半径太小,则创建 2 条“平行”线。但是由于与图像的延伸相比,叶子的静脉很小,因此您通常会发现半径,其中静脉产生 1 条线。

在这里,我添加了处理后的图片。我在这张照片上做的步骤:

  1. 去饱和(灰度)
  2. 高斯差。这里我模糊了半径为 10px 的第一个图像和半径为 2px 的第二个图像。您可以在下面看到结果。

这只是一个快速创建的结果。我猜想通过优化参数,你甚至可以得到更好的参数。 在此处输入图像描述

于 2012-03-17T06:45:59.147 回答
1

这听起来像是我在大学时用神经网络做过的事情。神经网络的东西有点难,所以我不会去那里。无论如何,模式是 2D Fourier 变换的完美候选者!这是一个可能的方案:

  1. 你有训练数据和输入数据
  2. 您的数据表示为 2D 傅里叶变换
  3. 如果您的数据库很大,您应该在转换结果上运行 PCA 以将 2D 频谱图转换为 1D 频谱图
  4. 通过测试一张图像的光谱(在 PCA 之后)与数据集中的所有图像来比较汉明距离。

只要图像具有大致相同的旋转,您应该期望使用此类原始方法进行约 70% 的识别。如果图像不是相同的旋转。您可能必须使用 SIFT。为了获得更好的识别,您将需要更智能的训练集,例如隐马尔可夫模型或神经网络。事实上,要为这类问题获得好的结果可能需要相当多的工作。

查看:https ://theiszm.wordpress.com/2010/07/20/7-properties-of-the-2d-fourier-transform/

于 2012-03-17T06:43:10.180 回答