首页 > 学院 > 开发设计 > 正文

Intensity Transformations and Histogram Equalization

2019-11-06 08:36:10
字体:
来源:转载
供稿:网友

增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。本实验采用灰度级校正、灰度变换和直方图修正的方法使图像成像均匀,或扩大图像动态范围,扩展对比度,增强图像感觉质量。

该实验使用强度变换方法对图像进行增强。实验图像为课本图3.8(a)

(1.a) 用公式(3.2-2)所示的对数变换方法进行图像增强。 本实验中采用公式s=c*log(rt+1)来对原图像进行灰度级非线性变换。r表示原灰度级;t表示曲线凹凸度调整指数,当t大于零小于1时,t越小曲线上凸越明显,对低灰度级的扩展就越大,高灰度级的压缩就越明显。当t>1时,曲线开始下凹,对低灰度级压缩,高灰度级扩展。C表示幅值调整指数,本实验中灰度级都已经归一化,当r取最大值1时c最大取1.4424。s就表示变换后的新灰度级。 经过多次尝试对比,本次选取c=1.4424;t=1/3,转换公式变为s=1.4424*log(r1/3+1),其曲线图见实验结果图1.a.1,对数变换后的图像见图1.a.2,可以看出相对于原图灰度级较低的部分变亮了,区别度也更大了。而灰度级较高的部分明显感觉偏暗,且部分细节已经看不出。

(1.b) 用公式(3.2-3)形式的指数变换方法进行图像增强。 本实验中采用公式 s=c*(r+t)γ来对原图像进行灰度级非线性变换。r表示原灰度级;c、t表示曲线的调整参数,γ表示曲线凹凸程度,γ>0时,γ越小曲线越凸,γ越大曲线越凹,s就表示变换后的新灰度级。 实验中各参数选取c=1;t=0; γ=0.2可以达到可接受的处理效果,变换函数为s=r0.2,其曲线图见实验结果1.b.1,指数变换后的图像见图1.b.2,结果与对数变换类似,对原图低灰度级进行了扩展,高灰度级进行了压缩。

(2.a) 编写一个计算图像直方图的程序。 这里采用了find函数来统计图像中相同像素值的个数,并除以总像素数得出其概率,再与归一化的灰度级数生成直方图,结果见图2.a

(2.b) 实现在3.3.1 节中讨论的直方图均衡化技术。 实现思想分为:(1)归一化原灰度级并统计出各个灰度级在图像中的概率 (2)计算出各个灰度级的分布函数值,即将该灰度级及其之前的灰度级的概率相加,得到一个存储新灰度级s的数组,其下标代表减一代表原灰度级的值。 (3)按照误差最小原则,用归一化的原灰度级去替换新灰度级的值,得到s1,则s1的下标与该下标下的取值就表示原灰度级与新灰度级归一化后的对应关系。 (4)按照对应关系s1对原图进行灰度转换。 (2.c) 对图3.8(a)进行直方图均衡化增强。 直方图均衡化后的图像见图2.c.1,图像低灰度级被扩展,高灰度级被压缩,大部分像素点的灰度值被扩展到较大的灰度级区间,使得图像中主要信息区域对比度增强。直方图均衡化的灰度转换关系见图2.c.2。

实验结果: 这里写图片描述 图1.a.1 这里写图片描述 图 1.a..2

这里写图片描述 图 1.b.1 这里写图片描述 图1.b.2 这里写图片描述 图 2.a 这里写图片描述

图 2.b 这里写图片描述 图 2.c.1

这里写图片描述 图 2.c.2

附录:1.a 程序function mylog(im)c=1.4424;k=1/3;x2=0:0.01:1;y2=c*log(1+x2.^k);figureplot(x2,y2);% axis([0 1 0 1])im1=imread(im);figuresubplot(1,2,1);imshow(im1);x=double(im1)/255;y=c*log(1+x.^k);subplot(1,2,2);imshow(uint8(y*255));1.b 程序function myexp(im)c=1;t=0;n=0.2x2=0:0.01:1;y2=c*(x2+t).^n;figureplot(x2,y2);% axis([0 1 0 1])im1=imread(im);figuresubplot(1,2,1);imshow(im1);x=double(im1)/255;y=c*(x+t).^n;subplot(1,2,2);imshow(uint8(y*255));2.a 程序function mybar(im)im1=imread(im);n=size(im1,1)*size(im1,2);for i=0:255 a(i+1)=length(find(im1==i));endx=(0:255)/255;y=a/n;figure;bar(x,y);axis([0 1 0 0.6]); 2.b 程序function myhomogenization(im)im1=imread(im);figuresubplot(1,2,1);imshow(im1);n=size(im1,1)*size(im1,2);for i=0:255 a(i+1)=length(find(im1==i)); %分别计算出im1中各个元素值相同的个数endx=(0:255)/255; %将原256级灰度级归一化y=a/n; %计算出各个灰度级在im1中的概率for i=1:256 y1(i)=sum(y(1:i)); %由原灰度级的概率分布计算出新的灰度级 b=find(abs(x-y1(i))==min(abs(x-y1(i)))); %在原灰度级中找出一个与新灰度级最接近%的灰度值, y2(i)=x(b) ; %并用其替换该新灰度级% if any(y2~=min(abs(x-y1(i)))) end% y3=unique(y2); %得出新的灰度级for i=1:size(im1,1) %用获得的新旧灰度级映射关系更新原图像灰度级 for j=1:size(im1,2) im1(i,j)=y2( im1(i,j)+1)*255; endendsubplot(1,2,2);imshow(im1);imwrite(im1,'1.jpg')figurem1=(0:255)/255;m2=y2;plot(m1,m2)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表