用MATLAB进行图像处理

图像处理概念,算法和MATLAB

批处理

2015年6月23日更新:见新图像批处理App(添加到R2015a)和我的关于它的博客文章

几个月前,我正在处理一堆我在家里拍的照片。我有大约40个,我需要以同样的方式裁剪和调整它们的大小。当然,我写了一个MATLAB脚本来做这件事。

这段经历提醒我,客户有时会问“如何使用图像处理工具箱对图像进行批处理?”实际上,这不是一个工具箱问题;这是一个MATLAB问题。换句话说,批处理的基本MATLAB技术适用于任何领域,而不仅仅是图像处理。

内容

步骤1:获取一个文件名列表

如果你使用dir函数使用输出参数,则返回包含文件名的结构数组,以及关于每个文件的其他信息。

假设我想处理所有以.jpg结尾的文件:

文件= dir(‘* . jpg”
Files = 42x1带字段的结构数组:name date bytes isdir

文件Struct数组有42个元素,表示当前目录中有42个匹配“*.jpg”的文件。让我们来看看其中几个文件的详细信息。

文件(1)
ans = name: 'IMG_0175.jpg' date: '12-Feb-2006 10:49:30' bytes: 962477 isdir: 0
文件(结束)
ans = name: 'IMG_0216.jpg' date: '12-Feb-2006 11:09:10' bytes: 1004842 isdir: 0

步骤2:确定每个文件要遵循的处理步骤

每个文件都有四个基本步骤:

1.从文件中读入数据。

2.处理数据。

3.构造输出文件名。

4.写出处理过的数据。

下面是我的读取和处理步骤:

RGB = imread(“IMG_0175.jpg”);% or RGB = imread(files(1).name);RGB = RGB (1:19 00,520:2000,:);RGB = imresize(RGB, 0.2,“双三次的”);

在构造输出文件名时,有许多选项需要考虑。在我的例子中,我想使用相同的名称,但在子文件夹中:

output t_name = [“裁剪\”文件(1). name]%如果你愿意,可以使用fullfile代替%多平台可移植性
output_name =裁剪\IMG_0175.jpg

下面是输出名称构造的另一个示例。如果您想更改图像格式,您可以使用类似的方法。

Input_name = files(1).name
input_name = IMG_0175.jpg
[path, name, extension] = fileparts(input_name)
path = " name = IMG_0175 extension = .jpg
Output_name = fullfile(path, [name . name .“.tif”])
output_name = IMG_0175.tif

步骤3:将所有内容放在for循环中

以下是我完整的批处理循环:

文件= dir(‘* . jpg”);K = 1:数字(文件)RGB = imread(文件(K).name);RGB = RGB (1:19 00,520:2000,:);RGB = imresize(RGB, 0.2,“双三次的”);imwrite (rgb, [“裁剪\”文件(k) . name]);结束




使用MATLAB®7.2发布

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。