【发布时间】:2012-02-12 02:51:52
【问题描述】:
我想裁剪图像,但我想保留矩形的outside 部分。怎么可能做到这一点?
似乎使用 imcrop 只能保留矩形内的部分。
【问题讨论】:
-
叹息。当你裁剪图像时,你把那部分扔掉了!如果你不想要那个,那就不要裁剪它!!!!!!!!!!!!!或者,如果您坚持保留该信息,那么您将需要自己进行裁剪。
我想裁剪图像,但我想保留矩形的outside 部分。怎么可能做到这一点?
似乎使用 imcrop 只能保留矩形内的部分。
【问题讨论】:
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);
我的测试结果是:
原文:
裁剪:
生成的图像:
【讨论】:
也许您想要做的是首先使用与您要裁剪的区域相反的蒙版并保存此结果。
【讨论】: