Scripting 自动裁剪图片

Scripting 自动裁剪图片,scripting,image-processing,automation,tiff,image,Scripting,Image Processing,Automation,Tiff,Image,我有很多照片是由黑色背景的物体组成的。我用Matlab创建了它们,它们的图片周围都有一个白色的“额外的”。我想能够自动裁剪它们,使图片不会有额外的白色 这些文件是.tif格式 以下是一张图片作为示例: 一开始它可能不明显,但如果你选择了图片,它会比黑色区域大得多。你可以简单地扔掉只有一行和一列的行和列 %# read the image [img,map] = imread('http://i.stack.imgur.com/Yyz8Z.png'); %# keep only rows/col

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

这些文件是
.tif
格式

以下是一张图片作为示例:


一开始它可能不明显,但如果你选择了图片,它会比黑色区域大得多。

你可以简单地扔掉只有一行和一列的行和列

%# 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));

编辑

有几种方法可以确保你一开始就不会进入边境。例如,如果要保存M-x-N-x-3 RGB图像阵列,可以使用写入

或者,如果您想保存一个不带边框的图形,可以调用轴句柄以获取图像:

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

如果要使用抗锯齿功能保存图形,可以使用文件交换中的“优秀”

它产生了一个灰度图,我失去了颜色。B.当我保存它时,它仍然添加了白色的环境。@Ilya Melamed:对不起,我假设白色是255。看起来您的最大值只有86。还有,我忘了结尾的冒号。@乔纳斯,它仍然保留白色边框,当我保存它时,如果它不存在,它会添加一个。@Ilya Melamed:要知道tiff图像的确切外观有点棘手,我的代码在png上运行得很好。然而,我已经尝试了一个解决方案,它应该可以在一般情况下工作。我可以将文件上传到某个地方进行检查。但我认为答案不会来自Matlab,当我在Matlab中保存时,它会自动添加白边,我希望有一些脚本可以自动使用
gimp
或任何其他照片处理程序来实现。
imwrite(imageArray,'myFile.tif')
axesHandle = gca; %# to get the axes handle of the current figure
f = getframe(axesHandle);
imwrite(f.cdata,'myFile.tif');