我需要在图像Z上创建一个32x32的滑动窗口。然后我需要检查图像上每个窗口的平均强度。
我可以使用: N = [32,32] h = fspecial('average',n); filter2(h,img)
N = 32;
info = repmat(struct, ceil(size(Z, 1) / N), ceil(size(Z, 2) / N));
for row = 1:N:size(Z, 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 = Z(row:min(end,row+N-1), col:min(end,col+N-1));
average = mean(imgWindow(:)) %calculate the mean intensity of pixels within each window
end
end
然而,这只会产生12x30。谁能找到我出错的地方?
答案 0 :(得分:2)
您的图片为364x350,窗口大小为32x32。会发生什么:
请注意,在最后一列中,窗口为32x30,最后一行窗口为12x32,最后一个窗口(右下角)为12x30。这是最后一次计算,以及为什么在代码停止运行时获得该值。
我在这里看到三个选项:
答案 1 :(得分:1)
在for循环之前初始化
e=1;
然后在for循环中启动计数器并输入此代码
imgWindow (:,:,e)= Z(row:min(end,row+N-1), col:min(end,col+N-1));
而不是
imgWindow = Z(row:min(end,row+N-1), col:min(end,col+N-1));
希望它会对你有所帮助。 此致