2012-01-17 65 views
0

我想剪裁图像,但我想保留矩形的outside图像部分。这怎么能做到? 似乎只有矩形内的部分可以保留。MATLAB。逆裁剪图像。

+0

叹息。当你裁剪图像时,你会丢弃这部分图像!如果你不想这样做,那么不要裁剪它!!!!!!!!!!或者,如果你坚持保留这些信息,那么你将需要自己做出收获。 – 2012-01-17 11:58:21

回答

3

Matlab中的图像由矩阵表示,就像任何其他矩阵一样,您可以阅读关于表示形式here的更多信息。

看来你想要做的就是取出你不想要的区域,并将矩阵中相应单元格的值改为你想要改变的颜色(矩阵中的每个单元格都是图像中的像素)。那就是如果你知道你不需要的数据在哪里。

如果您不知道它在哪里,并且想要使用imcrop给出的工具来手动选择“裁剪”区域,则可以生成矩阵,并找到原始图像的一部分与裁切部分完全匹配,并根据需要为其着色。

这样做的代码:

I=imread('img_9.tif'); 
I2=imcrop(I,[60,50,85,85]); 
n_big=size(I); 
n_small=size(I2); 

for j1=1:(n_big(1)-n_small(1)) 
for j2=1:(n_big(2)-n_small(2)) 
    Itest=I(j1:j1+n_small(1)-1,j2:j2+n_small(2)-1,:); 
    if (Itest == I2) 
     I(j1:j1+n_small(1)-1,j2:j2+n_small(2)-1,:) = zeros(n_small(1),n_small(2),3); 
    end 
end 
end 

figure(1); 
imshow(I); 
figure(2); 
imshow(I2); 

我测试的结果是:

原:

original image

裁剪:

cropped image

得到的图像:

result

0

也许你想要做的是第一个面具与你想裁剪和保存这个结果的反面区域。