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

%待更新

相关推荐
郑州光合科技余经理2 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1232 天前
matlab画图工具
开发语言·matlab
dustcell.2 天前
haproxy七层代理
java·开发语言·前端
norlan_jame2 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone2 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ4022054962 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
遥遥江上月2 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_531237172 天前
C语言-数组练习进阶
c语言·开发语言·算法
Railshiqian2 天前
给android源码下的模拟器添加两个后排屏的修改
android·开发语言·javascript
雪人不是菜鸡2 天前
简单工厂模式
开发语言·算法·c#