我正在做的是使用内置MATLAB funktion imregionalmax进行基于像素的树检测。经过几个步骤,我得到一个矩阵,其中包含从1到n的值,基于检测到的树数。每棵树都通过一个唯一的数字表示(见下图)。不属于树的像素通过NaN表示。
结果应如下所示:
我最接近上面的结果是使用轮廓功能,虽然它不能完成这项工作,因为它通过像素的中间而不是外部绘制轮廓。 / p>
编辑:我有一个高度值的矩阵(与上面相同的大小),轮廓应该只是一个叠加。此外,我希望这个大纲真的在像素上。边缘。
答案 0 :(得分:0)
因此,只要ROI矩阵发生变化,您就希望获得正值。
在我看来,您正在寻找gradient
也许试试这个:
[FX,FY]=gradient(ROI_Matrix);
res = FX~=0 | FY~=0; %so if there is a change in the x-direction or in the y-direction the result for that pixel is 1.
image(res)
[编辑]
您想绘制线条,而不是彩色像素。所以让我们画线
imagesc(ROI_Matrix);
[FX,FY]=gradient(ROI_Matrix);
FX = FX~=0;FY = FY~=0;
hold on;
%change in x, horizontal line
for i = 1:size(FX,2)
for j = 1:size(FX,1)
if FX(i,j)
plot([i,i],[j,j+1],'k-');
end
end
end
%change in y, verticle line
for i = 1:size(FY,2)
for j = 1:size(FY,1)
if FY(i,j)
plot([i,i+1],[j,j],'k-');
end
end
end
hold off;