我想将图像分割成块matlab。例如,我有一个1000x651的矩阵。我在这个矩阵中取了红色的平均值,如果颜色小于平均值,我想打印出来。但我想制作一个32x32矩阵,我想在矩阵上逐个采用红色平均值。所以,如果矩阵的平均值小于整体平均值,我想检查所有32x32矩阵,我将得到屏幕输出。我该怎么办?
img = imread('redcolor.jpg');
P = im2double(img);
G = P(:,:,2);
a = min(min(G));
b = max(max(G));
c = mean(mean(G));
count = 0;
for i = 1:1000
for j = 1:651
if G(j,i) <= 0.8541
fprintf( 'Red Color. \n')
count = count + 1;
end
end
end
fprintf('%d', count);
答案 0 :(得分:0)
for i=1:32:size(image,1) - 32
for j=1:32:size(image,2) - 32
imagePart = image(i:i+31,j:j+31)
%check whatever you want
end
end
答案 1 :(得分:0)
试一试。我用rand
矩阵测试,因为我没有真实的图像。您应该检查图像大小是32x32块的倍数,或者您可能需要用零填充。
img = imread('redcolor.jpg');
P = im2double(img);
G = P(:,:,2);
a = min(G(:));
b = max(G(:));
c = mean(G(:));
for i = 1:32:size(G,1) - 32
for j = 1:32:size(G,2) - 32
block = G(i:i+31, j:j+31);
count = sum(block <= 0.8541);
fprintf('%d\n', count);
end
end