【Matlab】批量自定义图像处理

摘要:本文介绍了三种MATLAB图像批量处理方法。

  1. GUI交互式处理:通过图形界面选取多张图片,实现横向缩放2倍和纵向复制处理,并自动重命名保存;

  2. 程序化处理:分为单张图像处理和带序号规律的批量处理,支持8位/12位色深转换和自定义处理;

  3. 文件夹批量处理 :可对整个文件夹内的图像进行自动化处理。所有方法均包含图像尺寸修改、自定义处理、自动重命名和保存功能,适用于不同场景下的图像批量处理需求。

    目录

    • [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 选取整个文件夹图片、自定义处理、重命名、保存

%待更新

相关推荐
一起养小猫15 小时前
Flutter for OpenHarmony 实战:打造天气预报应用
开发语言·网络·jvm·数据库·flutter·harmonyos
xyq202416 小时前
Java 抽象类
开发语言
爱装代码的小瓶子16 小时前
【c++与Linux基础】文件篇(4)虚拟文件系统VFS
linux·开发语言·c++
疯狂的喵21 小时前
C++编译期多态实现
开发语言·c++·算法
2301_7657031421 小时前
C++中的协程编程
开发语言·c++·算法
m0_7487080521 小时前
实时数据压缩库
开发语言·c++·算法
lly2024061 天前
jQuery Mobile 表格
开发语言
小文数模1 天前
2026年美赛数学建模C题完整参考论文(含模型和代码)
python·数学建模·matlab
惊讶的猫1 天前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
m0_748233171 天前
30秒掌握C++核心精髓
开发语言·c++