自动裁剪图片

时间:2011-03-28 21:10:10

标签: scripting image-processing automation tiff image

我有许多由黑色背景物体组成的照片。我用Matlab创建了它们,它们周围都有一个白色的“额外”。我希望能够自动裁剪它们,以便图片不会有额外的白色。

文件为.tif格式

以下是一张图片:enter image description here

一开始可能不会引人注意,但如果选择图片,它会比黑色区域大得多。

1 个答案:

答案 0 :(得分:2)

您可以简单地丢弃只有一行的行和列。

%# read the image
[img,map] = imread('http://i.stack.imgur.com/Yyz8Z.png');

%# keep only rows/cols that have values other than 1
img = img(any(img<1,2),any(img<1,1));

对于RGB tiff,您可以使用(假设tiff图像中的最大值为86,如png中所示)

img = img(~all(all(img==max(img(:)),3),2),~all(all(img==max(img(:)),3),1),:);

编辑

有几种方法可以确保您不会首先获得边框。例如,如果要保存M×by-by-3 RGB图像阵列,可以使用IMWRITE来编写

imwrite(imageArray,'myFile.tif')

如果你想要保存没有边框的图形,你可以在轴手柄上调用GETFRAME来获取图像:

axesHandle = gca; %# to get the axes handle of the current figure
f = getframe(axesHandle);
imwrite(f.cdata,'myFile.tif'); 

如果您想通过消除锯齿保存图形,可以使用文件交换中的优秀export_fig