我试着用Frangi滤波器从植物图像中提取所有的茎我想利用这一特性,即每一根茎比一片叶具有更多类似血管的特征Using this paper as reference。
我的输入图像是
这是我的matlab代码片段
options=struct('FrangiScaleRange', [1 3], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 0.5,...
'FrangiBetaTwo', 2, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(rgb2gray(img2)), options);
outIm = uint8(outIm/max(outIm(:))*256);
这是输出
我知道可能有其他方法来完成这项任务,但我只是好奇地想知道,为什么这种方法不起作用。
最佳答案
就Frangi filter而言,茎和叶都像前面讨论过的那样是血管样的,因此不能简单地使用filter输出来区分它们。
然而,你能做的是:(i)选择更好的尺度(大致与你试图检测的结构的尺度相吻合)和(ii)尝试不同的参数。
我试了一下,给了量表5 10 20 30
和Frangi参数beta=0.5
和c=100
【Frangi等人:多尺度血管增强滤波,MICCAI 1998】
这就是我得到的:
按逻辑单位缩放的原始图像http://i.stack.imgur.com/s6wuE.jpg,在Photoshop中将其转换为gray-8bpp。
你能观察到的是以下情况叶比茎在更高的鳞片上产生反应也许这是个线索。
编辑:
我看了一下http://i.stack.imgur.com/eZwxg.png“边缘检测器”对亮叶的影响是由于Frangi的理论不足以适用于两个维度:
三维血管:血管方向的小特征值,另外两个正交方向的两个高负特征值。
二维血管:血管方向的小特征值,垂直于它的一个高度负特征值。
相反地
三维平板:一个高负特征值,两个小特征值。