同态滤波(光照不均)

同态滤波:在图像的频域对图像进行操作,完成图像的亮度范围压缩、图像对比度增强,去除图像乘性噪声。(乘性噪声:y=uv,y是被噪声污染的图像,u是原始图像,v是乘性噪声)
同态滤波借助于Retinex原理,对图像的反射分量R和亮度分量L分别进行处理。

I=RL(I为原图像,R为反射分量,L为亮度分量);

为了能够分别对RL进行操作,这里引入求对数,求对数可以让相乘变为相加

i=r+l

两边求取傅里叶变换,转换到频域进行操作

FI=FR+FL

在频域内对图像的反射分量和亮度分量分别进行同态滤波H处理

H(FI)=H(FR)+H(FL)

通过傅里叶反变换,频域变回时域

hi=hr+hl

两边求指数,变回原图像

这里的同态滤波的函数解释为:图像的反射分量在边缘处变化剧烈,图像的亮度分量在一个光照均匀的状态下应该是相对均匀。因此两项表现在频域时,图像的反射分量集中在高频区域,图像的亮度分量集中在低频区域。换言之,图像的在频域中,低频部分为亮度分量,高频部分为图像的反射分量。
我们通过减小图像低频部分的方式,减小图像亮度分量的变化剧烈程度,进而达到调节亮度分布不均,压缩图像亮度范围的目的;增大图像高频部分的方式,增大图像反射分量的变化剧烈程度,到达增强边缘和对比度的目的。(这里需要注意,我们进行低频高频分步操作的前提是图像已经求对数,这样才可以将两部分作为相加的形式进行操作)
因此同态滤波的函数图像可以表示为
在这里插入图片描述
在这里插入图片描述
上面两个函数是同态滤波函数的两种形式。其中c、gH(Hh)、gL(Hl)是未知的,需要调节,通过调节这些参数使得得到最好结果。
下面是一篇百度的文章,该文章讲述了他自己做的参数调节,希望大家看了有所收获。
https://wenku.baidu.com/view/9c89776027d3240c8547ef07.html?from=search

这里需要注意一下,很多程序为了处理的最终结果不出现色偏问题,只只对灰度图像进行处理。
彩色图像也可以进行处理,对每个图像进行操作,或者利用HSV的V亮度通道进行处理,然后转换回原图像。这些方法都会造成颜色的失真,在使用中需要注意。

clear
close all
[name,path]=uigetfile('1.png');
file=strcat(path,name);
[X,map]=imread(file);
X=double(X);
I=rgb2hsv(X);
H=I(:,:,1);
S=I(:,:,2);
V=I(:,:,3);

figure,imshow('t016140d911de77a081.jpg');
title('原始图像');

%%构建高斯高通滤波核
f_high=1.0;
f_low=0.8;

gauss_low_filter=fspecial('gaussian',[7 7],1.414);
matsize=size(gauss_low_filter);

gauss_high_filter=zeros(matsize);
gauss_high_filter(ceil(matsize(1,1)/2),ceil(matsize(1,2)/2))=1.0;
gauss_high_filter=f_high*gauss_high_filter-(f_high-f_low)*gauss_low_filter;
%%实际计算部分
log_img=log(double(V)+eps);
high_log_part=imfilter(log_img,gauss_high_filter,'symmetric','conv');
high_part=exp(high_log_part);
%%规范化分布
minv=min(min(high_part));
maxv=max(max(high_part));
temp=(high_part-minv)/(maxv-minv);

S=adapthisteq(S)*2.1;
HSV3(:,:,1)=H;%
HSV3(:,:,2)=S;
HSV3(:,:,3)=temp;
rgb2=hsv2rgb(HSV3);
figure;
imshow(rgb2);
title('光照均衡后图像');
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值