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

%待更新

相关推荐
似水明俊德3 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
软件算法开发4 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
Thera7774 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
炘爚5 小时前
C语言(文件操作)
c语言·开发语言
阿蒙Amon5 小时前
C#常用类库-详解SerialPort
开发语言·c#
凸头5 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun3141595 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
Moksha2625 小时前
5G、VoNR基本概念
开发语言·5g·php
jzlhll1236 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
W.D.小糊涂6 小时前
gpu服务器安装windows+ubuntu24.04双系统
c语言·开发语言·数据库