我的图像上有一个滑动窗口。如果该窗口内的平均强度> 1。 210然后在该窗口上计算GLCM特征。如果GLCM功能符合if语句中的条件,则应在此滑动窗口周围绘制一个矩形。我尝试使用以下代码,但矩形不在图像上的正确位置。我不确定我是否将绘制矩形的代码放在错误的位置或者我是否通过了错误的坐标。有人可以帮我这个吗?
N2=8;
info2 = repmat(struct, ceil(size(Z, 1) / N2), ceil(size(Z, 2) / N2));
for row1 = 1:N2:size(Z, 1)%loop through each pixel in the 8x8 window
for col1 = 1:N2:size(Z, 2)
x = (row1 - 1) / N2 + 1;
y = (col1 - 1) / N2 + 1;
imgWindow2 = Z(row1:min(end,row1+N2-1), col1:min(end,col1+N2-1));
average2 = mean(imgWindow2(:));
window2(x,y).average=average2;
if average2>210
offsets0 = [0 1];
glcms = graycomatrix(imgWindow2,'Offset',offsets0);
stats = graycoprops(glcms,'all');
correlation=[stats.Correlation];
contrast=[stats.Contrast];
homogeneity=[stats.Homogeneity];
energy=[stats.Energy];
%if these conditions are met then this window contains an ROI
if (homogeneity > 0.9)
if (contrast<0.2)
if (energy>0.6)
%%show the ROI on the original image%%
Z1 = insertShape(Z, 'rectangle', [x y 32 32]);
figure(2);
imshow(Z1);
end
end
end
end % end if>210
end
end % window
答案 0 :(得分:0)
尝试使用[col1 row1 32 32]而不是[x y 32 32]。我不明白你为什么以你的方式计算x和y。您最终会切换x和y,并且它们位于&#34;单元格中,而不是以像素为单位。