图像增强之——同态滤波

说明:同态滤波是频域滤波的一种,但是相比之下同态滤波有自己的优势,

频域滤波可以灵活地解决加性噪声问题,但无法消减乘性或卷积性噪声。

同态滤波是一种在频域中同时将图像亮度范围进行压缩和将图像对比度进行增强的方法,是基于图像成像模型进行的。

一幅图f(x,y)可以表示成照度分量i(x,y)与反射分量r(x,y)的乘积,同态滤波基本思想:

为了分离加性组合的信号,常采用线性滤波的方法,而非加性信号组合常用同态滤波的技术将非线性问题转化成线性问题处理,即先对非线性(乘性或者卷积性)混杂信号作某种数学运算,变换成加性的。然后用线性滤波方法处理,最后作反变换运算,恢复处理后图像。

同态滤波流程图

(1)两边取对数

(2)两边取付氏变换

(3)用一频域函数 H(u, v)处理F(u, v),H(u,v)是同态滤波函数

(4)反变换到空域

(5)两边取指数

可见,增强后的图像是由分别对应照度分量与反射分量的两部分叠加而成。因为一般照度分量是在空间缓慢变化的,而反射分量在不同物体的交界处是急剧变化的。所以,图像对数傅里叶变换中的低频部分主要对应照度分量,而高频部分主要对应反射分量。

我们可以设计1个对傅里叶变换的高频分量和低频分量影响不同的滤波函数H(u,v)。

图  同态滤波器的剖面图

如果选取 HL<1,  HH>1,滤波器函数将减弱低频部分,扩大高频部分,最后的结果将同时压缩了图像的动态范围,又增加了图像各部分之间的对比度。

特点:能消除乘性噪声,能同时压缩图像的整体动态范围,并增加图像中相邻区域间的对比度。

注意到,同态滤波器的函数图象跟高通巴特沃斯或者高通高斯滤波器很像,所以为了实现同态滤波器,实际上只需要对上述滤波器稍加改动即可以用高通滤波器的转移函数来逼近同态滤波函数,设高通滤波器的转移函数为Hhigh(u,v),同态滤波函数用Hhomo(u,v)表示

,则由Hhigh(u,v)到Hhomo(u,v)的映射为:

Hhomo(u,v)=(HH-HL)*Hhigh(u,v)+HL

下面张贴一段用MATLAB实现同态滤波的代码:

clear;

close all;

[name,path] = uigetfile(‘lena.bmp‘);

file = strcat(path,name);

[X,map]=imread(file);

X=double(X);

I=rgb2hsv(X);

H=I(:,:,1);

S=I(:,:,2);

V=I(:,:,3);

%if size(X,3)==3

%   X= rgb2gray(X);

%end

% 装载图片

% 显示这个图片

figure,imshow(‘lena.bmp‘);

title(‘原始图像‘);

% 构造一个高斯滤波器

f_high = 1.0;

f_low = 0.8;

% 得到一个高斯低通滤波器

gauss_low_filter = fspecial(‘gaussian‘, [7 7], 1.414);

matsize = size(gauss_low_filter);

% 由于同态滤波是要滤出高频部分,

% 所以得把这个低通滤波器转换成一个高通滤波器.

% f_high 和 f_low 是控制这个高通滤波器形态的参数.

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;       %保留H不变,开始合成

HSV3(:,:,2)=S;

HSV3(:,:,3)=temp;

rgb2=hsv2rgb(HSV3);    %转换回RGB空间

figure;

imshow(rgb2);

title(‘同态滤波图像‘);

时间: 2024-10-09 23:47:04

图像增强之——同态滤波的相关文章

同态滤波

在生活中会得到这样的图像,它的动态范围很大,而我们感兴趣的部分的灰度又很暗,图像细节没有办法辨认,采用一般的灰度级线性变换法是不行的.图像的同态滤波属于图像频率域处理范畴,其作用是对图像灰度范围进行调整,通过消除图像上照明不均的问题,增强暗区的图像细节,同时又不损失亮区的图像细节. 我们人眼能分别得出图像的灰度不仅仅是由于光照函数(照射分量)决定,而且还与反射函数(反射分量)有关,反射函数反映出图像的具体内容.光照强度一般具有一致性,在空间上通常会有缓慢变化的性质,在傅立叶变换下变现为低频分量,

图像增强处理

图像增强是图像处理中一个重要的内容,在图像生成,传输或变换的过程中,由于多种因素的影响,造成图像质量下降,图像模糊,特征淹没,给分析和识别带来困难.因此,按特定的需要将图像中感兴趣的特征友选择地突出,衰减不需要的特征,提高图像的可懂度是图像增强的主要内容.图像增强不考虑图像降质的原因,而且改善后的图像也不一定逼近原图像,这是它与图像复原本质的区别.图像增强的主要目的有两个:一是改善图像的视觉效果,提高图像的清晰度:二是将图像转换成一种更适合人类或机器进行分析处理的形式,一边从图像中获取更多有用的

图像增强相关基础知识

图像增强处理-1 图像增强是图像处理中一个重要的内容,在图像生成,传输或变换的过程中,由于多种因素的影响,造成图像质量下降,图像模糊,特征淹没,给分析和识别带来困难.因此,按特定的需要将图像中感兴趣的特征友选择地突出,衰减不需要的特征,提高图像的可懂度是图像增强的主要内容.图像增强不考虑图像降质的原因,而且改善后的图像也不一定逼近原图像,这是它与图像复原本质的区别.图像增强的主要目的有两个:一是改善图像的视觉效果,提高图像的清晰度:二是将图像转换成一种更适合人类或机器进行分析处理的形式,一边从图

同态滤波的补充说明

之前介绍过同态滤波的计算公式(http://blog.csdn.net/carson2005/article/details/6621402),本文为一些补充说明. 实际应用中,经常碰到这样一类图像,它们的灰度动态范围很大,即:黑的部分很黑,白的部分很白,用户感兴趣的中间一部分灰度级范围又很小,分不清物体的灰度层次和细节.遇到这种情况,一般的灰度线性变换没法解决问题,因为扩展灰度级虽然可以提高图像的反差,但会使得动态范围变的更大.而压缩灰度等级,虽然可以减少动态范围,但物体灰度层次和细节就更看不

灰度图像--频域滤波 同态滤波

学习DIP第27天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

【20160924】GOCVHelper 图像增强部分(4)

//使得rect区域半透明 Mat translucence(Mat src,Rect rect,int idepth){ Mat dst = src.clone(); Mat roi = dst(rect); roi += cv::Scalar(idepth,idepth,idepth); return dst; } 将选择的区域打上变成半透明.虽然这只是一个简单的函数,但是使用起来灵活多变. 比如说,可以将图像某个区域变成半透明,然后在上面写字,这样起到强化作用: 也可以将一个区域图片在半透

【20160924】GOCVHelper 图像增强部分(1)

图像增强是图像处理的第一步.这里集成了一些实际使用过程中有用的函数. //读取灰度或彩色图片到灰度 Mat imread2gray(string path){ Mat src = imread(path); Mat srcClone = src.clone(); if (CV_8UC3 == srcClone.type() ) cvtColor(srcClone,srcClone,CV_BGR2GRAY); return srcClone; } 算法核心在于判断读入图片的通道数,如果是灰度图片则

retinex图像增强算法的研究

图像增强方面我共研究了Retinex.暗通道去雾.ACE等算法.其实,它们都是共通的.甚至可以说,Retinex和暗通道去雾就是同一个算法的两个不同视角,而ACE算法又是将Retinex和灰度世界等白平衡理论相结合的产物.下面将依次讨论,每个算法写一个心得,欢迎拍砖. 今天先写Retinex.Retinex理论认为,人眼观测到的图像S是光照图像L和物体反射图像R的乘积.而R才是真实的恒常性的图像,但是怎么从观测图像S中计算R呢?这是个病态问题,根本不可解.研究者就通过加以一定的约束条件,比如光照

空间域图像增强

增强的目的是处理图像,使其比原始图像更适合于特定应用.图像增强方法分为空间域方法(直接对图像的像素处理)和频域(傅里叶变换为基础).以这两种结合来增强图像的非常少!最好的图像处理方法是得到最好的机器可识别的结果. 空间域图像增强公式g(x,y)=T(f(x,t)).g处理后的图像,f是原始图像,T是对f的一种操作. 图像增强的三个基本类型函数:线性(正比例,反比例),对数的(对数和反对数变换),幂次的(n次幂好n次方根变换). 以下,r为原始灰度,s为变换后的灰度.线性的图像反转:s=L-1-r