MATLAB。反向裁剪图像。

时间:2012-01-17 09:34:27

标签: matlab image-processing

我想裁剪图片,但我想保留矩形outside的图像部分。怎么能这样呢? 似乎只有imcrop可以保留矩形内的部分。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

也许你想要做的就是首先使用你想要裁剪的反面积的面具并保存这个结果。