Image 检测植物图片中的所有分支

Image 检测植物图片中的所有分支,image,matlab,image-processing,computer-vision,image-segmentation,Image,Matlab,Image Processing,Computer Vision,Image Segmentation,我想知道的东西,将检测所有的绿色分支从下面的图像 目前,我开始应用Frangi过滤器 options=struct('FrangiScaleRange', [5 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,... 'FrangiBetaTwo', 7, 'verbose',true,'BlackWhite',true); [outIm,whatScale,Direction] = FrangiFilter2D(double(img), o

我想知道的东西,将检测所有的绿色分支从下面的图像

目前,我开始应用Frangi过滤器

   options=struct('FrangiScaleRange', [5 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,...
 'FrangiBetaTwo', 7, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(img), options);
Frangi滤波器的输出如下

然后通过Hough变换检测所有线

[H,theta,rho] = hough(outIm,'Theta',-90:1:89);
P = houghpeaks(H,100,'threshold',ceil(0.3*max(H(:))),'NhoodSize',[21 21]);
lines = houghlines(outIm,theta,rho,P,'FillGap',10,'MinLength',100);
输出是这样的


除了这些技术,还有什么我可以尝试的吗?

您可以使用基于颜色的高斯混合模型(GMM)来分割绿色分支。安装2个GMM模型1用于绿色分支,第2个用于图像中的其余对象。但要初始化它,您首先必须标记一些手动涂鸦,以了解GMM分支和其他分支的外观。在基于涂鸦对两个GMM模型进行拟合后,您可以找到两个GMM模型的所有像素的可能性,并在此基础上将您的模型划分为两个区域分支和非分支。涂鸦的标记应该覆盖图像中大部分的颜色变化

如果需要绿色分支,则需要通过颜色阈值来检测绿色部分。然后,你可以应用滤波器和霍夫变换,这是我的第一步。我没有提到它,因为它显然不那么明显,因为弗兰基过滤器也给出了棕色树枝的轮廓。因此阈值设置失败。此处设置为“BlackWhite”,设置为false可能会有所帮助。您的意思是建议使用GMM聚类在绿叶和嫩枝之间进行分割吗?如果是,您是否有一些使用此技术的示例代码?