如何使用matlab快捷方便的批量调整图片亮度 您所在的位置:网站首页 多张图批量调亮度 如何使用matlab快捷方便的批量调整图片亮度

如何使用matlab快捷方便的批量调整图片亮度

2024-07-17 13:26| 来源: 网络整理| 查看: 265

    不知道大家有没有这种体验。需要打印一些自己拍的文件的照片,而这些照片的有的亮度低,打印出来整个纸面都是灰暗、发黑的。自己也可以一张张自己PS,但这样效率极低,费力不讨好~    

    正如“人类的懒惰推动着科技的进步”所说一样,我也开始研究怎样能方便的调节图片的亮度~

    不多说了,上程序:

%% Instructions% 修改图片的亮度(v),通过文件对话框的方式获得需要修改的图片。% 然后将修改后的图片以“'yyyy-mm-dd HH:MM:SS'+图片名”名字存储到原位置。% 目前的程序能区分出(JPEG TIFF GIF BMP PNG HDF PCX XWD ICO CUR RAS PBM PGM PPM)文件格式% %% clc  clear all  close all  pathsep='\';  %设置分隔符%% 获取要修改的图片所在的文件夹和图片名称及类型(这个方法太笨了,淘汰)(这个程序不需要选择具体的某张图片,直接选择图片所在文件夹,不过这个文件夹中必须全都是imread可以识别的类型才可以!交互体验极差,故删去,留在这里是给大家借鉴一下,少走弯路滴!)% dirPath =uigetdir(cd,'选择图片所在文件夹');% dirList=dir(dirPath);% list=struct2cell(dirList);  %结构体转元胞,数据转置了% filename=list(1,:);  %提取文件名% a=cellfun('length',(strfind(filename,['.png'])));  %找到'.png'的位置,读取其后的字符串,和imread允许的图片类型进行比较% find(a~=0);% filename=list(1,a~=0);%% 另一种方法,获取要修改的图片(JPEG TIFF GIF BMP PNG HDF PCX XWD ICO CUR RAS PBM PGM PPM)

[filename, pathname, filterindex] = uigetfile( ...      {'*.jpg;*.tif;*.gif;*.bmp;*.png;*.hdf;*.pcx;*.xwd;*.ico;*.cur;*.ras;*.pbm;*.pgm;*.ppm',...      'All Kinds of Photos Supported by Imread Function(*.jpg;*.tif;*.gif;*.bmp;*.png;*.hdf;*.pcx;*.xwd;*.ico;*.cur;*.ras;*.pbm;*.pgm;*.ppm)';...      '*.jpg','JPEG (*.jpg)'; ...      '*.tif','TIFF (*.tif)'; ...      '*.gif','GIF (*.gif)'; ...      '*.bmp','BMP (*.bmp)'; ...      '*.png','PNG (*.png)'; ...      '*.hdf','HDF (*.hdf)'; ...      '*.pcx','PCX (*.pcx)'; ...      '*.xwd','XWD (*.xwd)'; ...      '*.ico','ICO (*.ico)'; ...      '*.cur','CUR (*.cur)'; ...      '*.ras','RAS (*.ras)'; ...      '*.pbm','PBM (*.pbm)'; ...      '*.pgm','PGM (*.pgm)'; ...      '*.ppm','PPM (*.ppm)'; ...      '*.*',  'All Files (*.*)'}, ...      'Pick a file', ...      'MultiSelect', 'on');  filename=cellstr(filename); %因为使用uigetfile函数如果只勾选一个文件时,得到的filename是字符串类型,而在后面的程序中filename是当作cell类型来处理的,所以需要cellstr转换数据格式为cell。 %% 是否逐张调节 options.Resize='on';    options.WindowStyle='normal';    options.Interpreter='tex'; xuanze1=inputdlg(sprintf('%s\r\n','是否逐张调节图片','请输入1(是)/2(否)'),...     '选择',[1,40],{'1'},options); %% 逐张读取图片,修改后保存(如果之前选择逐张修改,则每次需要输入修改的值,直到满意为止;如果没有要逐张修改,则会按照统一的修改方式进行修改并保存) if xuanze1{1}~='1'     xuanze2=inputdlg({'色调调节率','饱和度调节率','亮度调节率'},'全部图片',[1,40],{'1','1','1'},options);   %亲测色调和饱和度通过这种方式调节图片是不对的!   亮度调节率的范围在0.5~1.5之间比较合适     for p=1:length(filename)         rgb = imread(fullfile(pathname,filename{p}));         [m,n,k] = size(rgb); %读取图片大小         hsv = rgb2hsv(rgb); %颜色空间转换         H = hsv(:,:,1); % 色调         S = hsv(:,:,2); % 饱和度         V = hsv(:,:,3); % 亮度         hsv(:,:,1) =str2double(xuanze2{1}).*H;   %色调需要增强的倍数,可以根据图片情况动态调整         hsv(:,:,2) =str2double(xuanze2{2}).*S;   %饱和度需要增强的倍数,可以根据图片情况动态调整         hsv(:,:,3) =str2double(xuanze2{3}).*V;   %亮度需要增强的倍数,可以根据图片情况动态调整         rgb1 = hsv2rgb(hsv); %转为RGB,进行显示         imwrite(rgb1,strcat(pathname,pathsep,datestr(now,'yyyy-mm-dd HH:MM:SS'),filename{p}));     end else     for p=1:length(filename)         rgb = imread(fullfile(pathname,filename{p}));         xuanze3{1}=2;         while xuanze3{1}~='1'             figure;             imshow(rgb);             xuanze2=inputdlg({'色调调节率','饱和度调节率','亮度调节率'},['第',num2str(p),'张图片'],[1,40],{'1','1','1'},options);             [m,n,k] = size(rgb); %读取图片大小             hsv = rgb2hsv(rgb); %颜色空间转换              H = hsv(:,:,1);  % 色调             S = hsv(:,:,2);  % 饱和度             V = hsv(:,:,3);  % 亮度             hsv(:,:,1) =str2double(xuanze2{1}).*H;    %色调需要增强的倍数,可以根据图片情况动态调整             hsv(:,:,2) =str2double(xuanze2{2}).*S;    %饱和度需要增强的倍数,可以根据图片情况动态调整             hsv(:,:,3) =str2double(xuanze2{3}).*V;    %亮度需要增强的倍数,可以根据图片情况动态调整             rgb1 = hsv2rgb(hsv);  %转为RGB,进行显示             imshow(rgb1);             xuanze3=inputdlg(sprintf('%s\r\n','效果是否满意','请输入1(是)/2(否)'),'选择',1,{'1'},options);             close(figure(1))         end         imwrite(rgb1,strcat(pathname,pathsep,datestr(now,'yyyy-mm-dd HH:MM:SS'),filename{p}));     end end

为了大家直接复制程序就能运行,我就不在程序中插图了~

下面是图:

1、开始运行程序

2、选择需要修改的图片(允许随机选取多张)

3、之后会询问是否一张一张的修改图片亮度,如果选择是,那么每张图片可以设置不同的亮度;

4、如果选择是,会先显示图片,好让你决定亮度如何调整

5、之后会询问亮度要修改为多少,是一个倍数的关系,如果刚刚选择了否,那么这个界面只会出现一次;

6、修改后会显示效果图(刚刚我们设置亮度调解率为0.8,效果如下图)

7、如果对结果满意就修改下一张图片,如果不满意会给你重新修改图片的机会

版权声明:本文为 Suppart 的原创文章,转载请务必注明出处~ 

http://blog.csdn.net/qq_36938128/article/details/79751496



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有