使用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的新手,这是我自己能做的最好的事情。有人可以告诉我如何保留父图像的每个块的原始形式?任何帮助将受到高度赞赏。
答案 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);
原始图片:
分区图片: