数字图像处理FinalProject.docx
《数字图像处理FinalProject.docx》由会员分享,可在线阅读,更多相关《数字图像处理FinalProject.docx(13页珍藏版)》请在冰点文库上搜索。
数字图像处理FinalProject
数字图像处理报告
基本原理和国内外发展现状
1.原理
随着电子计算机技术的进步,计算机图像处理近年来得到飞跃的发展,已经成功的应用于几乎所有与成像有关的领域,并正发挥着相当重要的作用。
在图像的形成、传输或变换过程中,由于受到多种因素的影响,如光学系统失真、系统噪声、曝光不足或过量、相对运动等,图像往往与原始景物之间或图像与原始图像之间产生某种差异、降质或退化。
因此,在对图像进行分析前,必须对图像质量进行改善。
图像增强的目的是改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,扩大图像中不同物体特征之间的差别,即增强图像中的有用信息,满足某些特殊分析的需要。
其方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制图像中某些不需要的特征,使图像与视觉响应特性相匹配。
在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。
图像增强技术根据增强处理过程所在的空间不同,分为基于空域的算法和基于频域的算法两大类。
基于空域的算法处理是直接对图像灰度级做运算,空间域增强方法大致分为三种:
它们分别是用扩展对比度的灰度变换、消除噪声的平滑方法和增强边缘的锐化技术。
频率域增强是首先将图像从空间与变换到频域,然后进行处理,再将所得到的结果进行反变换,从而达到图像处理的目的。
常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。
假定原图像为
,经傅立叶变换为
。
频率域增强就是选择合适的滤波器
对
的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像
。
2.国内外发展现状
计算机图像处理的发展历史不长,但已经引起了人们的重视。
图像处理技术始20世纪60年代,由于当时图像存储成本高,处理设备造价高,因而其应用面很窄。
20世纪60年代早期第一台可以执行数字图像处理任务的大型计算机制造出来标志着利用计算机技术处理数字图像时代的到来。
1964年,研究人员在美国喷气推进实验室里使用计算机以及其它硬件设备,采用几何校正、灰度变换、去噪声、傅里叶变换以及二维线性滤波等增强方法对航天探测器“徘徊者7号”发回的几千张月球照片进行处理,最终成功地绘制出了月球表面地图。
20世纪60年代末和20世纪70年代初有学者开始将图像增强技术用于医学图像、地球遥感监测和天文学等领域。
到了20世纪80年代以后,各种硬件的发展使得人们不仅能够处理二维图像,而且开始处理三维图像,图像处理技术得到了广泛的应用。
进入20世纪90年代,图像增强技术已经逐步涉及人类生活和社会发展的各个方面。
计算机程序用于增强对比度或将亮度编码为彩色,以便解释工业、医学及生物科学等领域的其他图像。
在考古学领域中使用图像处理方法已成功地复原模糊图片。
在物理学和相关领域中计算机技术能增强高能等离子和电子显微镜等领域的实验图片。
21世纪的图像处理技术要向高质量化方面发展,实现图像的实时处理,采用数字全息技术使图像包含最为完整和丰富的信息,实现图像的智能生成、处理、理解和识别。
1997年Kim提出如果要将图像增强技术运用到数码相机等电子产品中,那么算法一定要保持图像的亮度特性。
在文章中Kim提出了保持亮度特性的直方图均衡算法(BBHE)。
Kim的改进算法提出后,引起了许多学者的关注。
在1999年Wan等人提出二维子图直方图均衡算法(DSIHE)。
接着Chen和Ramli提出最小均方误差双直方图均衡算法(MMBEBHE)。
为了保持图像亮度特性,许多学者转而研究局部增强处理技术,提出了许多新的算法:
递归均值分层均衡处理(RMSHE)、递归子图均衡算法(RSIHE)、动态直方图均衡算法(DHE)、保持亮度特性动态直方图均衡算法(BPDHE)、多层直方图均衡算法(MHE)、亮度保持簇直方图均衡处理(BPWCHE)等等。
一.算法实现
本文提出的图像增强算法实现过程如下:
首先,通过公式2-1求出图像的概率密度函数
(2-1)
式中,
时灰度值为
的像素总数,MN是图像总的像素数。
然后,利用公式2-2求出权重分布函数
(2-2)
式中,
是概率密度中的最大值,
是概率密度函数中的最小值。
是调节参数,不同的图像选用不同的
值可以达到不同的效果。
然后,根据公式2-3求出累积分布函数
(2-3)
式中,
然后,通过公式2-4可以求得
值
(2-4)
最后利用基于变换的gamma校正得到变换函数
(2-5)
然后利用matlab中interp1函数实现映射。
因为算法是对彩色图像进行处理,所以要考虑到是在RGB彩色模型、HSI彩色模型或其他彩色模型上处理每一分量,该算法是在HSI彩色模型上进行图像增强。
HSI彩色模型中,色调H和饱和度S用来表达图像的颜色信息,所以可以采用只增强强度I分量而保持H和S分量不变的方法实现图像增强。
编程实现算法时,首先将读入的RGB图像转化为HSI图像,然后处理I分量,之后将H、S分量与处理后的I分量合成HSI图像,再转化为RGB图像显示,即为增强后的图像。
二.实验与测试结果
1.程序
程序及运行说明见附录。
2.测试结果
程序主要在3张图片上验证了算法的有效性,并将AGCWD算法与THE算法比较,发现通过调节
,AGCWD算法可实现达到较好的结果。
从直方图便可看出,THE算法直接将原图像的直方图进行归一化,丧失了很多灰度信息;但AGCWD算法大概保证了原图像灰度图的变化趋势但通过gamma参数调整有效的实现了图像增强。
(1)图像1
多次实验结果表明,
的值取0.8的时候效果最好。
(2)图像5
实验表明,
的值取2的时候效果较好。
(3)图像6
的值取1.1的时候效果较好。
三.总结
通过图像处理的编程作业,加深了对图像增强的理解,了解了其国内外发展现状并学习了一些比较先进的图像增强的方法。
但最重要的是将函数用编程语言自己实现,这样不仅可以加深对数字图像处理方法的理解,还可以锻炼自己的编程能力。
平时的课程学习中,老师就让我们尽量自己实现matlab中一些图像处理的函数,这样平时的积累也有助于文献中图像增强方法的实现。
附录:
(1)直接运行project.m即可,程序中调用了hsi2rgb子函数,程序编写软件为matlab2014b。
(2)程序
主程序:
clc;
A=imread('6.jpg','jpg');
%将图像转化伪为HSI图像,保持H分量和S分量不变,只处理I分量
rgb_image=im2double(A);
r=rgb_image(:
:
1);
g=rgb_image(:
:
2);
b=rgb_image(:
:
3);
B1=0.5*((r-g)+(r-b));
B2=sqrt((r-g).^2+(r-b).*(g-b));
theta=acos(B1./(B2+eps));
H=theta;
H(b>g)=2*pi-H(b>g);
H=H/(2*pi);
B1=min(min(r,g),b);
B2=r+g+b;
B2(B2==0)=eps;
S=1-3.*B1./B2;
H(S==0)=0;
I=(r+g+b)/3;
I1=255*I;
I2=uint8(I1);
[m,n]=size(I2);
pdf=zeros(1,256);
fork=0:
255
pdf(k+1)=length(find(I2==k))/(m*n);
end
cdf=zeros(1,256);
fori=1:
256
forj=1:
i
cdf(i)=cdf(i)+pdf(j);
end
end
pdf_max=max(pdf);
pdf_min=min(pdf);
pdf_w=zeros(1,256);
fork=1:
256
pdf_w(k)=pdf_max*((pdf(k)-pdf_min)/(pdf_max-pdf_min))^1.1;
end
pdf_w_sum=0;
fori=1:
256
pdf_w_sum=pdf_w_sum+pdf_w(i);
end
cdf_w=zeros(1,256);
fori=1:
256
cdf1=0;
forj=1:
i
cdf1=cdf1+(pdf_w(j));
end
cdf_w(i)=cdf1/pdf_w_sum;
end
r=zeros(1,256);
T_agcwd=zeros(1,256);
T_the=zeros(1,256);
fori=1:
256
r(i)=1-cdf_w(i);
T_agcwd(i)=255*((i/255)^r(i));
T_the(i)=cdf(i)*255;
end
T1_agcwd=double(T_agcwd);
z=linspace(0,255,numel(T1_agcwd));
g=interp1(z,T1_agcwd,I1);
I2_agcwd=g/255;
hsi=cat(3,H,S,I2_agcwd);
rgb=hsi2rgb(hsi);
figure;
subplot(2,2,1);
imshow(A);
title('原图像');
subplot(2,2,2);
imshow(rgb);
title('处理后图像');
subplot(2,2,3);
imhist(I2);
title('原图像直方图');
subplot(2,2,4);
imhist(I2_agcwd);
title('AGCWD方法处理后图像直方图');
T1_the=double(T_the);
z_the=linspace(0,255,numel(T1_the));
g_the=interp1(z_the,T1_the,I1);
I2_the=g_the/255;
hsi=cat(3,H,S,I2_the);
[rgb,R,G,B]=hsi2rgb(hsi);
figure;
subplot(2,2,1);
imshow(A);
title('原图像');
subplot(2,2,2);
imshow(rgb);
title('处理后图像');
subplot(2,2,3);
imhist(I2);
title('原图像直方图');
subplot(2,2,4);
imhist(I2_the);
title('THE方法处理后图像直方图');
hsi2rgb函数:
function[rgb,R,G,B]=hsi2rgb(hsi)
H=hsi(:
:
1)*2*pi;
S=hsi(:
:
2);
I=hsi(:
:
3);
R=zeros(size(hsi,1),size(hsi,2));
G=zeros(size(hsi,1),size(hsi,2));
B=zeros(size(hsi,1),size(hsi,2));
idx=find((0<=H)&(H<=2*pi/3));
B(idx)=I(idx).*(1-S(idx));
R(idx)=I(idx).*(1+S(idx).*cos(H(idx))./...
cos(pi/3-H(idx)));
G(idx)=3*I(idx)-(R(idx)+B(idx));
idx=find((2*pi/3<=H)&(H<4*pi/3));
R(idx)=I(idx).*(1-S(idx));
G(idx)=I(idx).*(1+S(idx).*cos(H(idx)-2*pi/3)./...
cos(pi-H(idx)));
B(idx)=3*I(idx)-(R(idx)+G(idx));
idx=find((4*pi/3<=H)&(H<2*pi));
G(idx)=I(idx).*(1-S(idx));
B(idx)=I(idx).*(1+S(idx).*cos(H(idx)-4*pi/3)./...
cos(5*pi/3-H(idx)));
R(idx)=3*I(idx)-(G(idx)+B(idx));
rgb=cat(3,R,G,B);
rgb=max(min(rgb,1),0);