需求
在做实验的时候有这样的一个需求:将一幅图像分成m×n的子块,然后对每一个子块进行操作,最后将经过操作的子块合成原来一整幅图像。
这里我给出的m、n是正好被原图长宽整除的数。
clc;clear;close all;
img = im2double( imread('orginal_09.tif'));
[height,width,ch]=size(img);
m=200; % 设定子块长宽
n=200;
count =1;
rebuild = zeros(height,width,ch);
figure(1);
for i=1:height/m
for j=1:width/n
% 1) 分块
block = img((i-1)*m+1:m*i,(j-1)*n+1:j*n,:); % 图像分成块
% 2)对子块进行操作
% ……
subplot(3,3,count);imshow(block);title(['第',num2str(count),'幅子图像']);
count = count+1;
% 3)重建
rebuild( (i-1)*m+1:m*i,(j-1)*n+1:j*n,: ) = block;% 合成一幅图像
end
end
figure(2);imshow(rebuild);title('重建之后的图像');
实验结果
得到的实验结果图如下,因为我在子块操作这一步并未实现任何操作所以图像操作前后是不变的。
将各子块显示出来的结果如下:
重建之后的图像