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

%待更新

相关推荐
军军君012 小时前
Three.js基础功能学习七:加载器与管理器
开发语言·前端·javascript·学习·3d·threejs·三维
liulilittle2 小时前
OPENPPP2 网络驱动模式
开发语言·网络·c++·网络协议·信息与通信·通信
mjhcsp2 小时前
C++ AC 自动机:原理、实现与应用全解析
java·开发语言·c++·ac 自动机
huihuihuanhuan.xin2 小时前
后端八股之java并发编程
java·开发语言
寻星探路2 小时前
【算法通关】双指针技巧深度解析:从基础到巅峰(Java 最优解)
java·开发语言·人工智能·python·算法·ai·指针
崇山峻岭之间2 小时前
Matlab学习记录32
开发语言·学习·matlab
向上的车轮2 小时前
如何选择Python IDE?
开发语言·ide·python
隐退山林2 小时前
JavaEE:多线程初阶(二)
java·开发语言·jvm
乌暮2 小时前
JavaEE初阶---《JUC 并发编程完全指南:组件用法、原理剖析与面试应答》
java·开发语言·后端·学习·面试·java-ee