我有以下代码,在图像Final上创建一个滑动窗口。
我创建了原始图片的副本:
ZwindowedMarked=Final;
我将滑动图像应用于原始图像
N = 32;
info = repmat(struct, ceil(size(Final, 1) / N), ceil(size(Final, 2) / N));
for row = 1:N:size(Final, 1)%loop through each pixel in the image matrix
for col = 1:N:size(Z, 2)
r = (row - 1) / N + 1;
c = (col - 1) / N + 1;
imgWindow = Final(row:min(end,row+N-1), col:min(end,col+N-1));
average = mean(imgWindow(:));
window(r, c).average=average;
display(window(r, c).average);
% if mean pixel intensity is greater than 200 then highlight the window
if average>180
ZWindowedMarked = insertShape(Z, 'rectangle', [col row 32 32]);
end
end
end
figure(2);
imshow(ZWindowedMarked)
然而,虽然有很多平均大于180的窗口,但它只在图像上显示一个矩形。任何人都可以告诉我如何在同一图像上突出显示平均大于180的所有滑动窗口吗?
由于
答案 0 :(得分:1)
从上面的代码中,我们可以假设最终, Z 和 ZWindowedMarked 最初都是相同的图像(在迭代之前) ?您可能希望在代码中明确说明并决定使用 Z 或最终,但不能同时使用。
您需要做些什么来确保在窗口图像上绘制所有矩形( ZWindowedMarked )并将标记的图像传递给 insertShape 函数
% if mean pixel average is greater than 180 then highlight the window
if average>180
ZWindowedMarked = insertShape(ZWindowedMarked, 'rectangle', [col row 32 32]);
end
而不是将原始未触动的 Z 传递给上述函数。 (注意评论的变化。)
希望这有帮助!