灰度变换增强

人盡茶涼 提交于 2019-12-28 19:00:55


灰度变换增强是将图像的对比度从弱变强的过程,所以也通常称为对比度增强。各种因素的限制,导致图像的对比度比较差,图像的直方图分布不够均衡,主要的元素集中在几个像素值附近。通过对比度增强,使得图像中各个像素值尽可能均匀分布或者服从一定形式的分布,从而提高图像的质量。
灰度变换可使图像动态范围增大,对比度得到拓展,使图像清晰、特征明显,是图像增强的重要手段之一。它主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。
灰度变换不改变图像内的空间关系,除了灰度级的改变是根据某种特定的灰度函数进行之外,可以看做是‘从像素到像素’的复制操作。

1.线性变换与非线性变换

设原图像为f(x,y),其灰度范围为[a,b],变换后的图像为g(x,y),其灰度范围线性扩展至[c,d],则对于图像中的任一点的灰度值f(x,y),灰度变换后为g(x,y),其数学表达式为
在这里插入图片描述
若图像中大部分像素的灰度级分布在区间[a,b]内,maxf为原图的最大灰度级,只有很小一部分的灰度级超过了此区间,则为了改善增强效果,可以令
在这里插入图片描述
采用线性变换对图像中每一个像素灰度作线性拉伸,将有效改善图像视觉效果。在曝光不足或曝光过度情况下,图像的灰度可能会局限在一个很小的范围内,这时得到的图像可能是一个模糊不清、似乎没有灰度层次的图像。
非线性变换就是利用非线性变换函数对图像进行灰度变换,主要有指数变换、对数变换等。指数变换是指输出图像的像素点灰度值与对应的输入图像的像素灰度值之间为指数关系,其一般公式为
在这里插入图片描述
其中,b为底数。为了增加变换的动态范围,在上述一般公式中可以加入一些调制参数,以改变变换曲线的初始位置和变化速率。这时的变换公式为
在这里插入图片描述
式中,a,b,c都是可以选择的参数,当f(x,y)=a时,g(x,y)=0,此时指数曲线教育X轴,由此可见参数a决定指数变换曲线的初始位置,参数c决定变换曲线的陡度,即决定曲线的变化速率。指数变换用于扩展高灰度区,一般适于过亮的图像。
对数变换是指输出图像的像素点灰度值与对应的输入图像的像素灰度值之间为对数关系,其一般公式为
在这里插入图片描述
其中,lg表示以10为底。也可以选用自然对数ln。为了增加变换的动态范围,在上述一般公式中可以加入一些调制参数,这时的变换公式为
在这里插入图片描述
式中a,b,c都是可以选择的参数,式中f(x,y)+1是为了避免对0求对数,确保ln[f(x,y)+1]≥0。当f(x,y)=0时,ln[f(x,y)+1]=0,则y=a,a为Y轴上的截距,确定变换曲线的初始位置,b、c两个参数确定变换曲线的变换率。对数变换用于拓展低灰度区,一般适用于过暗的图像。
对图像进行非线性灰度变换,并显示函数的曲线图。

clear all
clf
a=imread('tire.tif');
subplot(131)
imshow(a)
title('原始图像')
% 显示函数的曲线图
x=1:255;
y=x+x.*(255-x)/255;
subplot(132)
plot(x,y)
title('函数的曲线图')
b1=double(a)+0.006*double(a).*(255-double(a));
subplot(133)
imshow(uint8(b1))
title('非线性处理效果')

在这里插入图片描述
对图像进行对数非线性灰度变换

clear all
clf
I=imread('office_4.jpg');
I1=rgb2gray(I);
subplot(121)
imshow(I1)
title('灰度图像')
axis([50,250,50,200]);
grid on;
axis on;
J=double(I1);
J=40*(log(J+1));
H=uint8(J);
subplot(122)
imshow(H)
title('对数变换图像')
axis([50,250,50,200])
grid on
axis on

在这里插入图片描述

2.MATLAB的灰度变换函数

在MATLAB中,imadjust函数用于规定输出图像的像素范围,常用的调用方法如下

J=imadjust(I)
J=imadjust(I,[low_in;high_in],[low_out;high_out])
J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)

其中,I是输入的图像,J是返回的调整后的图像,该函数把在[low_in;high_in]的像素值调整到[low_out,high_out],而低于low_in的像素值映射为low_out,高于low_in的像素值映射为high_out,gamma描述了输入图像和输出图像之间映射曲线的形状。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!