matlab-批处理图像

在matlab上批处理上百张.png图像,目的是将所有图片进行增强(如histeq直方图均衡),然后写入指定文件夹,图像名称不变。

思路:

  1. 用dir函数读所有图片的信息并生产一个结构组,dir详见matlab的help在这里插入图片描述
  2. 利用name读取每个png文件的图像构成元胞pngcell
    在这里插入图片描述
    注意:对cell的操作花括号和圆括号的不同:
    通过小括号()里面加下标,访问cell数组中的数据,返回的是对应的cell。
    通过大括号{}里面加下标,访问cell数组中的数据,返回的是对应cell的内容。
    如对本程序中的pngcell操作:

在这里插入图片描述在这里插入图片描述

  1. 利用dir中的name信息和pngcell的图像信息再构造一个只含文件名图像数据的结构组pngfile
    在这里插入图片描述
  2. 接下来写个循环对图像进行操作就行,可以用imwrite将图像保存至指定位置

代码:

clear all
%读取文件夹中的.png文件
src='D:\Files\diploma_project\dark\darkface163\';
finf = dir([src,'*.png']); 
%根据文件夹中的文件格式,选择读取类型,如.jpg、.png等.其中finf是一个结构体数组,...
...包含的darkface下所有png文件的名称、修改时间大小、是否文件夹等属性。

n = length(finf);                   %数组大小,即图片的数量
pngcell = cell(n,1);            %生成n*1的元胞
for k=1:n
    filename = [src,finf(k).name]; %构造第k个文件的绝对路径(合并文件路径和文件名)
    pngcell{k} = importdata(filename);%将文件夹中的文件每个作为一个元胞按行存储在元胞中
    pngfile(k).name= finf(k).name; %创建新结构组,并设定名称
    pngfile(k).srcpng=cell2mat(pngcell(k));%将图像数据导入结构组
end
%该节生成了一个含有文件名和图像数据的结构组pngfile,...
...名称排序序是matlab自动读取的字符串排序型,如1,10,1112...

%% 直方图均衡批处理
dst='D:\Files\diploma_project\dark\darkface163_histeq\';
for k=1:n
    B=histeq(pngfile(k).srcpng);    %直方图均衡
    %imshow(B);
    imwrite(B,[dst,pngfile(k).name])  %将处理后的图片保存到目标文件夹,命名与源文件相同
end

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值