MATLAB - 拆分图像将块转换为灰度

时间:2015-03-22 11:54:12

标签: matlab image-processing

使用MATLAB,我试图将随机大小的图像转换为四个相等的块。我正在使用“for”循环来创建块。我面临的问题是这些块被转换成灰度,而我希望块保持其原始形式,即RGB通道。这是我正在使用的代码:

clear all;
img1 = imread('ABC.png');
[rs, cols, colorchan] = size(img1);
rnew = int32(rs/2);
cnew = int32(cols/2);

for i = 1:4
    for j = 1:4 
        imgij = img1((i-1)*rnew+1:i*rnew, (j-1)*cnew+1:j*cnew);
        figure();
        imshow(imgij);
        %do some other stuff here%
    end
end

我是MATLAB的新手,这是我自己能做的最好的事情。有人可以告诉我如何保留父图像的每个块的原始形式?任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

您只考虑了图像的宽度和高度。但实际上对于彩色图像,颜色是Matlab中的第三维。请尝试以下代码。

img = imread('onion.png');
figure; imshow(img);
w = size(img,2); % width of the original image
h = size(img,1); % height of the original image
wm = floor(w/2); % middle of the width
hm = floor(h/2); % middle of the height

figure;
imgtl = img(1:hm,1:wm,:); % top left image
subplot(2,2,1); imshow(imgtl);
imgtr = img(1:hm,wm+1:w,:); % top right image
subplot(2,2,2); imshow(imgtr);
imgbl = img(hm+1:h,1:wm,:); % bottom left image
subplot(2,2,3); imshow(imgbl);
imgbr = img(hm+1:h,wm+1:w,:); % bottom right image
subplot(2,2,4); imshow(imgbr);

原始图片:

Original Image

分区图片:

Partitioned Image