摘要:本文介绍了三种MATLAB图像批量处理方法。
-
GUI交互式处理:通过图形界面选取多张图片,实现横向缩放2倍和纵向复制处理,并自动重命名保存;
-
程序化处理:分为单张图像处理和带序号规律的批量处理,支持8位/12位色深转换和自定义处理;
-
文件夹批量处理 :可对整个文件夹内的图像进行自动化处理。所有方法均包含图像尺寸修改、自定义处理、自动重命名和保存功能,适用于不同场景下的图像批量处理需求。
目录
- [1 GUI选取图片、修改尺寸、自定义处理、重命名、保存](#1 GUI选取图片、修改尺寸、自定义处理、重命名、保存)
- [2 程序选取图片、自定义处理、重命名、保存](#2 程序选取图片、自定义处理、重命名、保存)
-
- [2.1 单张图像处理](#2.1 单张图像处理)
- [2.2 图像名称固定+序号不同](#2.2 图像名称固定+序号不同)
- [3 选取整个文件夹图片、自定义处理、重命名、保存](#3 选取整个文件夹图片、自定义处理、重命名、保存)
1 GUI选取图片、修改尺寸、自定义处理、重命名、保存
GUI获取图片、批量重命名、修改尺寸、保存
matlab
clc;clear;
img_out=zeros(2160,3840,3,"uint8"); %输入1080×3840,行复制输出2160×3840
%% Read img
[filename, filepath] = uigetfile('*.*','Load INPUT IMG','MultiSelect', 'on');%只导入一个文件会报错
[~,file_length] = size(filename);
for i=1:1:file_length
%% Read img
image_raw = imread(strcat(filepath,filename{i}));
[in_res_V,in_res_H,channel] = size(image_raw); % 原始分辨率2560*1440
%% 横向缩放2倍
ResultImage_scalar= imresize(image_raw ,[1080,3840],'bilinear'); % 采用双线性插值
%% 纵向复制
for j=1:2:2159
img_out(j,:,:)= ResultImage_scalar(fix(j/2)+1,:,:);
img_out(j+1,:,:)= ResultImage_scalar(fix(j/2)+1,:,:);
end
% 图片输出
image_name_newsize = strcat(filename{i}(1:end-4),'_DLG_Scalar_GOA_out','.bmp');
%imwrite(uint8( img_out),strcat(filepath,image_name_newsize));
imwrite(uint8( img_out),strcat('D:\ZHH\Matlab\',image_name_newsize));
disp(strcat(num2str(i) ,' Finish Write!'));
end
disp('Done!');
2 程序选取图片、自定义处理、重命名、保存
2.1 单张图像处理
matlab
clear;clc
dbstop if error
% 指定单个图片名称获取
Img_path='D:\ZHH\Matlab\';
Img_name='Gray255.bmp';
filename=strcat(Img_path,Img_name);
img_input=imread(filename);
img_input_2D_12bits=img_3Dto2D_8Bto12B(img_input);
img_outout_3D_8bits=img_2Dto3D_12Bto8B(img_input_2D_12bits);
filename_out=strcat(filename(1:end-4),'_output','.bmp');
imwrite(img_outout_3D_8bits,filename_out);
Display('Finish write!');
2.2 图像名称固定+序号不同
matlab
clc;clear;
dbstop if error
img_num=7;
img_out=zeros(2160,3840,3,"uint8"); %输入1080×3840,行复制输出2160×3840
for i=1:img_num
img_name=strcat('DLG_',int2str (i),'.bmp'); %输入名称有序号规律
img=imread(img_name);
%自定义图像处理
for j=1:1080
img_out((j-1)*2+1,:,:)=img(j,:,:);
img_out((j-1)*2+2,:,:)=img(j,:,:);
end
file_name=strcat('DLG_',int2str (i),'_output','.bmp'); %输出名称在输入名称加入尾缀标识
imwrite(img_out,file_name);
disp('Finish');
end
3 选取整个文件夹图片、自定义处理、重命名、保存
%待更新