图像增强的几个方法以及Matlab代码

1. 灰度线性变换

灰度线性变换, 是一种空域的方法, 直接对每一个像素的灰度值进行操作
假设图像为I
则其中每一个像素点的灰度值为I(x,y)
我们利用简单的线性变换可以得到:
I(x,y)^*=k*I(x,y)+b
k=1,b=16可以得到

Alt text

Alt text

Alt text

这里给出关键代码

original = imread(strcat(strcat('resource\',name),'.bmp'));
transformed = LinearFunction(original, 1, 16);
subplot(1,3,3);
imshow(transformed)
title('线性变换后的图像')
imwrite(transformed,strcat(strcat('result\',name),'(linear).jpg'))

2. 直方图均衡变换

这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度。

考虑一个离散的灰度图像\{x\}
n_i表示灰度i出现的次数, 这样图像中灰度为i的像素出现的概率为:
p_x(i)=p(x=i)=\frac{n_i}{n}, 0\leq i<L
L是图像中所有的灰度数(通常是255)
把对应于p_x的累积分布函数,定义为:
cdf_x(i)=\sum_{j=0}^i{p_x(j)}
是图像的累计归一化直方图

我们创建一个形式为y=T(x)的变换, 对于原始图像的每一个值它就产生一个y, 这样y的累计概率函数就可以在所有值范围内线性化, 转换公式定义为:
cdf_y(i)=iK

对于常数K, CDF的性质允许我们做这样的变换, 定义为:
cdf_y(y')=cdf_y(T(k))=cdf_x(k)

其中k\in [0,L), 注意T将不同的灰度级映射到(0,1), 为了将这些值映射到最初的域, 需要在结果上应用下面的简单变换:
y' = y*(max\{x\}-min\{x\})+min\{x\}

给出部分结果:


Alt text

Alt text

Alt text

给出关键代码:

m = 255;
subplot(1,3,3);
H = histeq(I,m);
imshow(H,[]);
title('直方图均衡后的图像');

类似地, 我们可以对rgb图像进行直方图均衡, 这里直接给出结果

[图片上传失败...(image-8c0e8-1537093885389)].png)
[图片上传失败...(image-a7d6cf-1537093885389)].png)
[图片上传失败...(image-4946e2-1537093885389)].png)

[M,N,G]=size(I1);
result=zeros(M,N,3);
%获得每一层每一个点的RGB值,并判断其值等于多少
for g=1:3
    A=zeros(1,256);
    %每处理完一层,参数要重新初始化为0
    average=0;
    for k=1:256
        count=0;
        for i=1:M
            for j=1:N
                value=I1(i,j,g);
                if value==k
                    count=count+1;
                end
            end
        end
        count=count/(M*N*1.0);
        average=average+count;
        A(k)=average;
    end
    A=uint8(255.*A+0.5);
    for i=1:M
        for j=1:N
            I1(i,j,g)=A(I1(i,j,g)+0.5);
        end
    end  
end
%展示处理效果
subplot(1,3,3);
imshow(I1);

3. 同态滤波

同态滤波利用去除乘性噪声(multiplicative noise),可以同时增加对比度以及标准化亮度,借此达到图像增强的目的。

一副图像可以表示为其照度(illumination)分量和反射(reflectance)分量的乘积,虽然在时域上这两者是不可分离的,但是经由傅立叶转换两者在频域中可以线性分离。由于照度可视为环境中的照明,相对变化很小,可以看作是图像的低频成分;而反射率相对变化较大,则可视为高频成分。通过分别处理照度和反射率对像元灰度值的影响,通常是借由高通滤波器(high-pass filter),让图像的照明更加均匀,达到增强阴影区细节特征的目的。

做法是:
对于一幅图像, 可以表示成照射分量和反射分量的乘积, 也就是:
m(x,y)=i(x,y)\cdot r(x,y)
其中, m是图像, i是为照度分量, r是反射分量
为了在频域中使用高通滤波器, 我们必须进行傅里叶变换, 但是由于上式是一个乘积式, 不能直接对照度分量和反射分量进行操作, 因此对上式取对数
ln(m(x,y))=ln(i(x,y))+ln(r(x,y))
然后对上式进行傅里叶转换
\mathcal{F}\{ln(m(x,y))\}=\mathcal{F} \{ ln(i(x,y))\}+ \mathcal{F}\{ln(r(x,y))\}
我们将\mathcal{F}\{ln(m(x,y))\}定义为M(u,v)
接下来对图像进行高通滤波, 如此可以使图像的照明更均匀, 高频分量增加且低频分量减少
N(u,v)=H(u,v)\cdot M(u,v)
其中H是高通滤波器
为了将图像从频域转回时域,我们对N做傅立叶逆转换
n(x,y)=\mathcal{F}^{-1}\{N(x,y)\}
最后使用指数函数来复原我们一开始取的对数
m'(x,y)=exp\{n(x,y)\}

给出处理结果


Alt text

Alt text

Alt text

给出部分关键代码

I=double(I);
[M,N]=size(I);
rL=0.5;
rH=4.7;%可根据需要效果调整参数
c=2;
d0=10;
I1=log(I+1);%取对数
FI=fft2(I1);%傅里叶变换
n1=floor(M/2);
n2=floor(N/2);
H = ones(M, N);
for i=1:M
    for j=1:N
        D(i,j)=((i-n1).^2+(j-n2).^2);
        H(i,j)=(rH-rL).*(exp(c*(-D(i,j)./(d0^2))))+rL;%高斯同态滤波
    end
end
I2=ifft2(H.*FI);%傅里叶逆变换
I3=real(exp(I2));
subplot(1,3,3),imshow(I3,[]);title('同态滤波增强后');
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容