1、提供可一种图像逆光复原的方案,针对逆光图像提供一种亮度调节方案,使得处理后的图像适于人眼获取原始逆光区域信息,此方案流程图如下:
2、具体实施过程
本方案采用图像分块、设置亮度阈值区间的方法整体提高图像亮度值进行恢复逆光图像。具体实现流程如下:
(1)设置分块后每块图像块的宽度和高度,在原图像上利用rectangle函数绘制各图像块的边界用
(2)根据宽度和高度计算元胞数组的维度,元胞数组用于存放图像块,自主编写divide_image函数,此函数用于对图像进行分块;
(3)利用rgb2hsv函数将图像从RGB空间变换至HSV空间,取v分量,对v分量分块,计算v分量图像块的平均值,观察图像主体区域图像块的亮度均值,根据该均值设置亮度阈值区间,将在阈值区间内的亮度值增加
,提高在阈值区间内的亮度值;
(4)合并阈值处理后v分量的图像块,合并将v分量合并至原图像;
(5)利用hsv2rgb函数将图像变换至RGB空间;
(6)利用imadjust函数和stretchlim函数扩展图像对比度;
(7)改变图像块的高度与宽度重复过程(1)~(6)选择失真最小的图像块;
(8)对(7)得到的图像进行中值滤波后输出,与原图像对比。
3、代码如下:
(1)主函数
clear all
clc
I0=imread('hand.jpg');
%--------------------------------图像分块
[a,b,c]=size(I0);
height=1; %分块后每一块的高度
width=1; %分块后每一块的宽度
m=floor(a/height); %m行
n=floor(b/width); %n列
% figure,imshow(I0),title('分块')
% for i=1:m %画边界
% for j=1:n
% rectangle('Position',[width*(j-1),height*(i-1),width,height],...
% 'LineWidth',0.5,'LineStyle','-','EdgeColor','w');
% end
% end
I1=rgb2hsv(I0); %变换至HSV空间
v1=I1(:,:,3); %亮度分量
divide_v1=divide_image(height,width,v1);%分块
Value=zeros(m,n);
%---------------------------------------亮度均值
for i=1:m
for j=1:n
Value(i,j,:)=mean(mean(divide_v1{i,j})); %每一块图像的亮度均值
end
end
Vl=0.007; %亮度阈值下限
Vh=0.045; %亮度阈值上限
%---------------------------------------提高亮度值
Vvalue=divide_v1;
for i=1:m
for j=1:n
Value(i,j,:)=mean(mean(divide_v1{i,j}));%每一块图像的亮度均值
if Value(i,j)>Vl & Value(i,j)
(2)图像分块函数
function [divide_I0] = divide_image(height,width,I0)
%devide_photo 将图像分快
%height-分块后每一块的长度,width-分块后每一块的宽度
%I0-原图像
%devide_image-元胞数组,用于存储分块后的图像
[a,b,c]=size(I0);
m=floor(a/height); %m行
n=floor(b/width); %n列
divide_I0=cell(m,n);
for i=1:m %分块
for j=1:n
divide_I0(i,j)={I0((i-1)*height+1:i*height,(j-1)*width+1:j*width,:)};
end
end
end
4、结果
经对比发现:①在该图像中本方案较好的恢复了图像的主体区域,手掌的掌纹与关节处皮肤的纹路清晰可见,且亮度适中;②图像的背景部分,即图2中窗外的景物被过亮的光屏蔽掉了,在图3中无法显示出来。
本方案对于图像的主体部分,即拍摄着所需要的部分能够很清晰的还原,对于背景部分也能比较清晰的还原,但是对于图像的远景部分(距离镜头较远的区域)则无法还原,甚至会屏蔽掉。总而言之,本方案针对不同的图像需要设置不同的阈值区间,对于恢复图像主体区域效果较好。
下面在展示一下针对图2,实施本方案过程中的部分图片
从图3之后,图片依次为分块为进行调节亮度的结果,从这些图中可以看到:
(1)将图像分为64×64、32×32大小的图像块时,图像的失真非常严重视觉效果不如原图像;
(2)将图像分为16×16、8×8大小的图像块时,图像的亮度较原图像有较大改善,已经可以看清图像的中心区域手掌的掌纹等细节部分,但是图像非主体区域的背景区域以及手指区域的失真依然很严重;
(3)将图像分为4×4、3×3大小的图像块时,图像的主体区域的手掌与手指的掌纹、以及关节处的纹路清晰可见,与原逆光图像相比图像的亮度良好,但是图像主体部分的手掌、手指的边缘以及背景区域有较大失真。
(4)将图像分为2×2大小的图像块时,图像相比于前三种情况除边缘区域有较小程度的失真外,图像主体区域视觉效果良好,但是背景区域的高频部分仍有较大失真。
通过这个过程我们又得到了一个新的方案,用于给图像打马赛克的方案。只需要图像分块之后,把图像的亮度值调低一点,调至灰色,调整之后重组图像块就可以了。