计算图像亮度

1.得到图片RGB分量,用imread函数,确保图片是彩色的,灰度图像只有两维,例如
x=imread('路径\图片名.格式','格式') 
格式有bmp,jpg,gif,tif,png等
一组图片的话可以一个一个读,也可以循环的,但循环读的话,请把图片名设置成连续名称,放在统一路径下,如图片1,图片2。。。,格式也是一样的才行。循环具体做法:
path=‘路径\’;
for i=1:N %N为图片个数
filename=[‘图片名’,num2str(i),'.格式'];
x{i}=imread([path,filename],'格式'); 
end
2.求图片亮度均值,先用你下的函数把图像转到HSL空间,然后两次mean求均值。
[h,s,l]=rgb2hsl(x);
avg=mean(mean(l));
3.求一组图片亮度均值,循环转换,并求均值,然后对亮度均值矩阵再求均值,即可得到一组图片亮度均值
for i=1:N
[h{i},s{i},l{i}]=rgb2hsl(x{i});
avg(i)=mean(mean(l{i}));
end
avg_all=mean(avg);
4.用循环修正所有图片的亮度,然后把超过上限的亮度设置为上限即可,这个可以用find函数。最后把图片转换回RGB空间
for i=1:N
l{i}=l{i}*avg_all/avg(i);
l{i}(find(l{i}>255))=255;
y{i}=hsl2rgb(h{i},s{i},l{i});
end


y就是你要的亮度修改过的,并转回rgb空间的那组图片。
图片保存,用imwrite函数,例如
imwrite(y{i},'路径\图片名.格式','格式');

猜你喜欢

转载自blog.csdn.net/sinat_36420785/article/details/73744382