Har*_*tin 10 matlab image 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), options);
Run Code Online (Sandbox Code Playgroud)
Frangi过滤器的输出如下
接下来是霍夫变换以检测所有线
[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);
Run Code Online (Sandbox Code Playgroud)
输出就是这个
我可以尝试除了这些技术之外的任何线索?
小智 2
您可以使用基于颜色的高斯混合模型(GMM)来分割绿色分支。拟合 2 个 GMM 模型,第 1 个用于绿色树枝,第 2 个用于图像中的其余对象。但是要初始化,您必须首先标记一些手动涂鸦,以了解 GMM 分支和其他内容的样子。在根据涂鸦拟合两个 GMM 模型后,您可以找到两个 GMM 模型的所有像素的可能性,并在此基础上将分支和非分支划分为两个区域。涂鸦标记应覆盖图像中的大部分颜色变化。