检测叶子中的静脉图案?

时间:2012-03-08 12:59:32

标签: image image-processing filter threshold

我的目标是检测叶子中的静脉模式,这是各种植物的特征

我已经完成了以下工作:

原始图片:

enter image description here

自适应阈值处理后:

enter image description here

然而静脉不清晰并且变形,有没有办法让我获得更好的输出

编辑:

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

enter image description here

请帮忙

3 个答案:

答案 0 :(得分:5)

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

您想要提取的静脉具有与背景,叶子和阴影不同的颜色,因此某种基于颜色的阈值可能是个好主意。最近有S.O.一些代码可能有用here的问题。 之后,某种自适应标准化有助于在阈值之前增加对比度。

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

Example of processed leaf image

答案 1 :(得分:4)

过去,我使用边缘检测算法difference of Gaussian获得了很好的体验。这基本上是这样的: 您使用gaussian blurr algorithm将图像模糊两次,但模糊半径不同。 然后计算两个图像之间的差异。

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

所以基本上这是带通滤波器。如果选择的半径很小,则徒劳的vill会产生2条“平行”线。但由于叶片的静脉与图像的延伸相比较小,因此您最常找到半径,其中静脉导致1行。

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

  1. 去饱和(灰度)
  2. 高斯差异。在这里,我将半径为10像素的第一张图像和半径为2像素的第二张图像模糊。您可以在下面看到结果。
  3. 这只是一个快速创建的结果。我猜想通过优化参数,您甚至可以获得更好的参数。 enter image description here

答案 2 :(得分:1)

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

  1. 您有训练数据和输入数据
  2. 您的数据表示为2D傅立叶变换
  3. 如果您的数据库很大,您应该在转换结果上运行PCA以将2D频谱图转换为1D频谱图
  4. 通过测试1个图像的光谱(在PCA之后)与数据集中的所有图像来比较汉明距离。
  5. 只要图像具有大致相同的旋转,您应该期望用这种原始方法识别~70%。如果图像不是相同的旋转。您可能必须使用SIFT。为了获得更好的识别,您将需要更多智能训练集,例如隐马尔可夫模型或神经网络。事实是,为这类问题取得好成绩可能是相当多的工作。

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