matlab 批量调整图像亮度

close all;
filepath='D:\19_无人机照片\';
file =dir(strcat(filepath,'*.jpg'));
[k ~]=size(file);
for j=1:k
    imgname=file(j).name;
    RGB1 = imread(strcat(filepath,imgname));
    R=RGB1(:,:,1);
    G=RGB1(:,:,2);
    B=RGB1(:,:,3);
    maxR=im2double(max(max(R)));
    maxG=im2double(max(max(G)));
    maxB=im2double(max(max(B)));
    k=(maxR+maxG+maxB)/3;
    if k<0.9
        RGB2 = imadjust(RGB1,[0 0 0; k k k],[0 0 0;1 1 1],0.7);
    else 
        RGB2=RGB1;
    end
% %全屏显示图像
%     hfig1 = figure(1);
%     hfig2 = figure(2);

%     figure(1); imshow(RGB1);title('原图');
%     set(hfig1, 'unit', 'normalized', 'position', [0,0,1,1]);
      out_path1 = strcat('./result',num2str(0.7),'/');
  
        if ~isdir(out_path1)
             mkdir(out_path1);
        end
  
    imwrite(RGB2,strcat(out_path1,imgname));
end
beep;

主要涉及到imadjust函数,在此记录(参考博客):一般的语法调用格式为:f1=imadjust(f,[low_in  high_in],[low_out  high_out],gamma)

该函数的意义如图1所示,把图像灰度变换到新图像f1的过程中,中灰度值低于low_in的像素点在f1中灰度值被赋值为low_out,同理,f中灰度值高于high_in的像素点变换到f1时其灰度值也被赋值为high_out;而对于参数gamma,当gamma<1时,灰度图像靠近low_in的灰度值较低像素点灰度值变高,其灰度变化范围被拉伸,灰度值靠近high_in的一端灰度变化范围被压缩,图像整体变明亮。如图1(a)所示,同理,当gamma>1时,则灰度图像的靠近low_in的灰度值较低像素点灰度值变低,其灰度变化范围被压缩,灰度值靠近high_in的一端的灰度变化范围被拉伸,如图1(c)所示。

效果如下:分别为原图和效果图

 

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值