在Matlab

时间:2018-01-21 18:01:25

标签: matlab image-processing

我想将图像分割成块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);

2 个答案:

答案 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