我有许多由黑色背景物体组成的照片。我用Matlab创建了它们,它们周围都有一个白色的“额外”。我希望能够自动裁剪它们,以便图片不会有额外的白色。
文件为.tif
格式
以下是一张图片:
一开始可能不会引人注意,但如果选择图片,它会比黑色区域大得多。
答案 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。