VC实现图像增强处理
基于灰度查找表的图像增强

基于灰度查找表的图像增强专业:班级:学号:姓名:日期:2006-6-25一.实习目的和意义1.学习基于灰度查找表的图像增强(灰度线性变换)算法的方法,掌握其减少计算量的原理;2.实用VC编程语言实现基于灰度查找表灰度线性变换算法;3.巩固和提高VC编程的能力。
二.实习原理和方法实习原理是对影像点灰度进行线性变换,从而达到图象增强的目的。
灰度点运算的基本算法为:pData[i]=pData[i]*a+b。
对于一幅1024*768的BMP 位图对于上式的运算次数为:1024*768若建立灰度查找表,GrayMin=<I<=GrayMaxLookTable[i],对于上式的运算次数为GrayMax- GrayMin+1次,大大减少加法运算的次数对于图像上每个像素变换后的灰度直接在LookTable中寻找。
所以应该先建立一个影像的灰度查找表,然后对每个像素点进行灰度处理时直接调用查找表之中对应值,以此大大减少加法计算量。
三.实习过程和步骤1.用MFC AppWizard创建以“学号姓名”命名的项目:选择Multiple Docunment;选择视图类基类CScrollView;2.根据给定DIBAPI.H,DIBAPI.CPP,MyFile.CPP文件,完成位图读写显示。
3.添加菜单和对话框,设置对话框的控件,界面如下图所示:4.建立菜单的消息的响应函数,注意Slider控件的范围,由于其数据类型是整型的,所以在设置其范围时应该扩大一定倍数,然后在实际计算时在除以这个倍数,这样可以提高滑块的精度,可以间接的得到小数点后几位数值。
代码如下:void Cxxls::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) {m_slidera.SetRange(0,500);UpdateData(TRUE);m_a = (double)m_slidera.GetPos()/100;UpdateData(FALSE);*pResult = 0;}5.编写功能函数1)基于灰度查找表的图像线形变换①首先创建一个灰度查找表,代码如下:int max=p[0];int min=p[0];for(int a=0;a<heightDIB;a++){for(int b=0;b<widthDIB;b++){if (p[LineBytes*a+b] >= max){max = p[LineBytes*a+b];}if (p[LineBytes*a+b] <= min){min = p[LineBytes*a+b];}}}int LookTable[256];int i,j;for(i=min-1;i<max;i++){j=int(i*la);LookTable[i] = j+lb;if(LookTable[i]>255)LookTable[i]=255;if(LookTable[i]<0)LookTable[i]=0;}②通过调用灰度查找表,对图像进行线形变换,代码如下:int t;for(int x=0;x<heightDIB;x++){for(int y=0;y<widthDIB;y++){t = p[LineBytes*x+y];p[LineBytes*x+y]=LookTable[t-1];}}2)显示灰度直方图①统计各灰度级像素出现的频率,具体代码如下:void CMy200332590087View::OnHistgram(){// TODO: Add your command handler code hereCMy200332590087Doc *pDoc = GetDocument();HDIB hdib;hdib=pDoc->GetHDIB();if (hdib==NULL){MessageBox("请先打开一幅BMP图象!","系统消息",MB_ICONINFORMATION|MB_OK);return;}LPSTR pDIB=(LPSTR)LocalLock(hdib);LPBYTE pData=(LPBYTE)::FindDIBBits(pDIB);BITMAPINFOHEADER *lpDIBHdr;//位图信息头结构指针;BYTE *lpDIBBits;//指向位图像素灰度值的指针;lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(hdib);//得到图像的位图头信息lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(R GBQUAD);CZhifangtu dialog;int i,j;int wImgWidth=::DIBWidth(pDIB);int wImgHeight=::DIBHeight(pDIB);//a[]数组用来存放各个灰度级出现的概率;float a[256];for(i=0;i<256;i++){a[i]=0;}//统计各个灰度级出现的次数;for(i=0;i<wImgHeight;i++){for(j=0;j<wImgWidth;j++){a[*(lpDIBBits+WIDTHBYTES(wImgWidth*8)*i+j)]++;}}//统计各个灰度级出现的概率;for(i=0;i<256;i++){a[i]=a[i]/(wImgHeight*wImgWidth);//得到每个灰度级的出现概率memcpy(dialog.num,a,256*sizeof(float));}dialog.DoModal();UpdateData(TRUE);}②利用VC的画线函数绘制一个直方图,具体代码如下:void CZhifangtu::OnPaint(){CRect rect(0,10,310,205);//矩形区域对象;CWnd *pWnd;//得到图片框的窗口指针;pWnd=GetDlgItem(IDC_ZFT);//得到对话框内的"Frame"控件的指针 pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"视"区域; int i;CPaintDC dc(pWnd);//得到"Frame"控件的设备上下文;//画直方图的x、y轴;dc.MoveTo(0,rect.Height());dc.LineTo(rect.Width(),rect.Height());dc.MoveTo(0,rect.Height());dc.LineTo(0,0);// 绘制X轴箭头dc.MoveTo(rect.Width(),rect.Height());dc.LineTo(rect.Width()-10,rect.Height()-10);dc.MoveTo(rect.Width(),rect.Height());dc.LineTo(rect.Width()-10,rect.Height()+10);// 绘制Y轴箭头dc.MoveTo(0,0);dc.LineTo(10,10);dc.MoveTo(0,0);dc.LineTo(-10,10);//画直方图//num[]内部数组变量//存放的是图像各个灰度级出现的概率;//该数组的各个分量在显示具体图像的直方图时设置;for(i=0;i<256;i++)//根据图像上的各个灰度级出现的概率//在坐标上对应的画出一根直线//从而各个表示各灰度级出现概率的直线构成了图像的直方图;{CPen myPen(PS_SOLID,1,RGB(0,255,0));dc.SelectObject(&myPen);dc.MoveTo(i+1,rect.Height());dc.LineTo (i+1,(rect.Height()-rect.Height()*num[i]*10));//此处num分量乘以"10"是为了放大个灰度级上对应的出现概率直线,增强显示效果;}}四.实习分析与评价1、位图显示2、线形变换3、直方图显示实习要求基本达到了,图像处理效果良好,但是还有两点不足,一是直方图显示方面由于时间关系仅仅绘制了坐标轴没有绘制坐标值,应该通过TEXTOUT语句完成;二是未能实现图像的实时处理和直方图的实时更新,这一点需要了解SLIDER控件的数据通信操作,由于本人变成水平有限,未能完成。
基于VC数字图像处理的研究与实现

功能截图如下
B I T M A P I N F O l p B i t s l n f o , U I N T i U s a g e , D W O R D d w R o p ) ;
h d c : 指向目标设备环境的句柄。 X D e s t : 指定 目标矩 形左上角位 置的x 轴 坐标 , 按逻 辑单位
话框 。 4 . 3 . 2 主 界 面设 计
该函数将D I B 中矩形区域内像素使用的颜 色数据拷 贝到指
( 1 ) 文件操 作模块。 文件操作模块 是整个系统 中最基本 的组
定的目标矩 形中。 如果 目 标 矩形比源矩形大小要大, 那么函数对 成 成 分' 该模块 主要实现 图像的文件操 作, 包括 新建操 作, 打开
・
实验研究
轴创建位 图镜像。 移植。 在 这里我们命名这个 基类为I m g C e n t e r D i b , 各种算法 的 么函数将沿着Y 实现都是以I m g C e n t e r D i b 类为基类 派生出来 。 同时将各个模块 4 . 3模块设计 函数封装起 来成为~个类 , 这些类都 以I m g C e n t e r D i b 类共有继 具体的模块设计如下:
出明显的只有 黑和 白的视觉 效果。 2 ) 彩色变 灰色格式: 当R G B 中
l p B i t s : 指向D I B 位 的指针, 这 些位 的值按字节类 型数组存 像上 的像素点的灰 度值设置 为0 或2 5 5 , 也就是将整 个图像 呈现 l p B i t s l n f o : 指 向B I T M A P I N F O 结构 的指针, 该结构包含有 3 种颜色 的含 量相等时 即为灰色 。 因此 只要将R G N 3 色设置 成一 关D I B 方面的信息 。 b m i C o l o r s , 如果提 供了, 那 么该b m i C o l o r s 是否 包含了明确的
一种基于VC++的图像增强技术

参 考文献 :
『1 永 红 . 算 机 图像 处 理 与 分 析 [ I 汉 : 汉 大 学 出版 社 , 1 贾 计 M. 武 武
2 0 .0 8 . 0 25 - 1
【 孙 劲 光 , 文 斌 , 世 安 . 像 灰 度 的 处 理 方 法 及 实 现 Ⅱ. 2 】 张 朱 图 】 辽
Ta e 1 bl PSNR fdfe e ti o i r n mag e
表 1 不 同 图 像 P NR 值 S
L e l e l M e n
Cl B oe  ̄ m tl p
Fg9I g f r i . ma e at me in f t r e d a le i F g 1 a em ak i .0 W t r r
图 3 线 性 变换 后 的 图 象( 度 的 最 大 值 设 为 2 5 最 小值 设 为 0 灰 5, )
宁工程技术大学学报 ( 自然 科 学 版 ) 0 22 () 4 - 4 . , 0 ,1 : 0 3 1 2 33 【】 超 华 , 高航 , 明 . 度 图象 的 直 接 H u h变 换 方 法 [. 3严 刘 黎 灰 og J ] 南 昌航 空 工 业 学 院 学 报 , 0 。43: — 9 2 01() 6 3 . 0 3
法 在 图 像 的 透 明 性方 面 的 效 果 是很 好 的 。
62 J E 压 缩 . P G
1 蝣 ' ∞
■*
图 9中值 滤 波后 的 图像
图1 0提 取 出 的 水 印
该 算 法 对 于 中 值 滤 波 有 很 好 的抵 御 能 力 , 中值 滤 波 以后 的 在 图像 中仍 可 以提 取 出水 印 图 像 。
2 a ∞ 帕 ∞ ∞ , O ∞ 蛆 ● ∞
MUSICA 多尺度图像对比度增强 算法的简要原理及

MUSICA 多尺度图像对比度增强算法的简要原理及MUSICA 多尺度图像对比度增强算法的简要原理及MUSICA(多尺度图像对比度增强)算法的简要原理及VC实现算法原理:图像增强的一般方法是对比度拉伸和直方图均衡,这两种方法对于灰度级过于集中,还有大量的灰度级没有充分利用的情况下比较适用,并且这两种方法都是基于直方图的变换,和像素的位置信息无关。
假设有原始信号如(a),可看出细节信号(高频,例如指纹、衣服褶绉这样的细节)集中在较窄的灰度范围内,人眼很难分辨。
并且细节信号集中的灰度范围在整个灰度级空间内,使用对比度增强和直方图均衡无法对不同的区域内像素进行不同程度的放大或者缩小。
因此就有了MUSICA(Multi-Scale Image ContrastAmplification),可以翻译成多尺度图像对比度增强。
基本的原理是先提取细节信息,然后对细节信号进行增强放大,然后再重构到原图中。
局部细节信息的提取现在研究的热点一直都是小波分解。
暂且不管理论,先从实际运用的角度来看。
如图(b),假设对信号进行平滑滤波,可以得到新的蓝色信号。
可以认为蓝色信号是对原信号的低分辨率近似,保留了整体的特征而丢弃了高频的细节信号,例如要分析图像的整体特征就要使用近似信号以排除高频(可能是噪声)的干扰。
那么如图(c),原信号减去近似信号,得到的就是高频信号,也就是细节信号(当然也可能是噪声)。
然后对(c)进行增强,最简单例如放大2倍,或者进行log变换得到(d)。
然后把(d)加回到近似信号上,重构出增强后的原信号,如(e)所示。
可以看到,图像的整体特性没有改变,两个细节集团的细节信号被放大了,适合人眼辨认。
图1 这个算是从最直观的角度来考虑算法原理,只是一种近似的抽象,实际过程需要更多更具体的考虑,同时这也是个人的理解,会有偏颇的地方,留待完善。
然后,总得给出点具体的原理和算法的实际步骤。
详细的说明可以从MUSICA的专利文档里获得,这里给出个人角度的理解和说明。
基于Retinex理论的低照度图像自适应增强算法

基于Retinex理论的低照度图像自适应增强算法目录1. 内容概览 (3)1.1 研究背景 (3)1.2 研究意义 (5)1.3 文献综述 (6)1.4 本文结构 (7)2. Retinex理论概述 (8)2.1 Retinex理论起源 (8)2.2 Retinex理论核心 (9)2.3 Retinex与其他图像增强算法的区别 (10)3. 低照度图像增强问题分析 (12)3.1 低照度图像的特点 (13)3.2 图像增强的目的与挑战 (13)3.3 现有方法存在的问题 (14)4. 基于Retinex的理论低照度图像自适应增强算法 (15)4.1 算法原理 (16)4.1.1 Retinex与自适应增强的理论联系 (18)4.1.2 算法自适应性的实现手段 (19)4.2 算法关键步骤 (20)4.2.1 光照映射的获取 (21)4.2.2 局部对比度的计算 (22)4.2.3 光照校正和对比度增强 (23)4.3 算法实现细节 (24)4.3.1 光照映射的精确计算 (25)4.3.2 对比度增强的策略 (27)4.3.3 自适应参数的确定 (28)4.4 算法有效性验证 (29)4.4.1 算法精度分析 (30)4.4.2 算法性能测试 (31)5. 实验验证与结果分析 (32)5.1 数据集与实验设置 (34)5.2 对比算法与方法 (35)5.3 实验结果与分析 (36)5.3.1 增强效果 (37)5.3.2 对比算法的比较 (39)5.4 算法存在的问题与改进建议 (40)6. 结论与展望 (42)6.1 研究总结 (43)6.2 未来工作方向 (44)1. 内容概览本文档详细介绍了一种基于Retinex理论的低照度图像自适应增强算法。
该算法旨在解决低照度条件下图像对比度低、细节不清晰等问题,通过自适应地增强图像的亮度和对比度,提高图像的视觉效果。
介绍了Retinex理论的基本原理,该理论认为图像是由光照和反射率两个部分组成的,通过分别处理这两个部分可以实现图像的增强。
基于VC++的直方图均衡化图像增强

【 i ] = ( l f o a t ) p A r r a y [ i ] / T o t a l ; l f o a t p t Ga i L v = n e w l f o a t [ 2 5 6 ] ; f o r ( i = 0 ; i < 2 5 6 ; i + + ) p t G a i L v [ i ]= O ;
f 0 r ( i = O ; i < 2 5 6 ; i + + )
f 0 r ( i = O ; J < = i + + )
[ 2 5 6 ] ;
p t G a i L v [ i 】+ = p G a i L v [ j ] ; i n t p Y i n g = n e w i n t
P r ( r k ) =n k O T " k 1 k =O 1 , 2 , … … L~1
,
S =丁 ( r ) =I P r ( r ) d r
0 r 1
( 4 )
对上式求导得 半 = 声 ( r ) , 再把结果代人式( 3 ) , 则
( ) r ) 一_ I { ) ( r ’ d 7 1 _ ] . I { ) r ( , ) ] = l ( 5 )
Vo i d J u n He n g H( B Y T E p D a t a , i n t p A r r a y , D WOR D B y t e s P e r L i n e , i n t
m
_
Wi d t h , i n t m He i g h t , i n t n , i n t T o t a 1 )
图像处理中的图像增强算法比较研究
图像处理中的图像增强算法比较研究引言:图像增强是图像处理领域的重要任务之一。
图像增强旨在提升图像的视觉质量和可读性。
随着科技的进步,图像增强算法得到了广泛的应用。
本文将比较几种常见的图像增强算法,分析其优缺点,并探讨其在不同应用场景中的适用性。
一、直方图均衡化算法直方图均衡化是一种常用的图像增强方法,通过对图像的像素强度进行转换,使得像素的直方图分布更均匀。
该算法可以扩展图像的动态范围,增强图像的对比度。
优点:1. 简单易实现:直方图均衡化算法的原理简单,易于实现。
2. 高效性:直方图均衡化可以快速地对图像进行处理,适用于实时应用。
3. 对细节增强效果好:直方图均衡化算法能够增强图像的对比度,使得图像细节更加清晰。
缺点:1. 无法保持局部对比度:直方图均衡化算法是全局算法,无法保持图像的局部对比度。
2. 易产生过增强现象:在某些情况下,直方图均衡化算法容易使得图像的背景过亮或过暗。
3. 非线性处理:直方图均衡化是一种非线性处理方法,可能对图像的灰度分布造成较大的变化。
适用场景:1. 增强图像对比度:直方图均衡化算法可以有效增强图像的对比度,使得图像更加清晰。
2. 实时图像处理:由于直方图均衡化算法的高效性,适用于实时图像处理应用。
3. 对细节要求不高的图像:直方图均衡化算法具有一定的局限性,适用于对细节要求不高的图像。
二、拉普拉斯金字塔增强算法拉普拉斯金字塔增强算法是一种基于金字塔理论的图像增强方法。
该算法通过构建图像的拉普拉斯金字塔,对不同层次的图像进行增强处理,最后再重建原始图像。
优点:1. 保留了图像的细节:拉普拉斯金字塔增强算法通过在不同层次上增强图像,可以有效地保留图像的细节。
2. 自适应性:该算法可以根据不同图像的特点自适应地进行增强处理。
3. 对边缘提取效果好:拉普拉斯金字塔增强算法对于边缘的提取有良好的效果。
缺点:1. 计算复杂度高:拉普拉斯金字塔增强算法需要构建金字塔结构,并进行多次图像卷积操作,计算复杂度较高。
基于GPU的图像增强实验设计与实现
基于GPU的图像增强实验设计与实现傅志中;赵宇飞;徐进【摘要】图像增强旨在改善和提高图像的显示质量,通过梯度进行增强是一种十分有效的方法.图形计算单元(GPU)因为其较高并行性和其特殊的结构特性,正被广泛地应用在算法加速和科学计算领域.为了提高学生对图像增强原理的理解,以及使学生掌握利用GPU进行算法实现的原理与过程,设计了基于GPU的图像增强实验.%The image enhancement aims to improve the display quality of images.It is a very effective method to enhance images by gradients.The GPU (graphic processing unit) is widely used in the fields of algorithm acceleration and scientific computation because of its high parallelism and its special structural characteristics.In order to improve the students' understanding of the principle of image enhancement, and help them to grasp the principle and process of using GPU to realize the algorithm, the image enhancement experiment based on GPU is designed.【期刊名称】《实验技术与管理》【年(卷),期】2017(034)005【总页数】5页(P37-40,94)【关键词】图像增强;梯度场;图形计算单元;CUDA编程;实验设计【作者】傅志中;赵宇飞;徐进【作者单位】电子科技大学通信与信息工程学院, 四川成都 611731;电子科技大学通信与信息工程学院, 四川成都 611731;电子科技大学通信与信息工程学院, 四川成都 611731【正文语种】中文【中图分类】TN911.73;G642.423实际应用场景中采集得到的图像往往存在一些缺陷,例如曝光不足引起的图像偏暗和噪声引起的图像弱化等[1]。
数字图像处理毕业设计
安徽建筑大学毕业设计(论文)毕业设计 (论文)专业电子信息工程班级学生姓名学号课题数字图像处理方法研究与实现——基于VC++的图像增强实现指导教师摘要图像在传送和转换时会造成图像的某些降质,所以有必要对降质的图像进行改善处理。
其中的一种方法是不考虑图像质量降低的原因,只将图像中感兴趣的特征有选择的突出,从而衰减次要信息。
这种方法能够提高图像的可读性,改善后的图像不一定逼近原始图像,但能够突出目标的轮廓、衰减各种噪声、将黑白图像转换成色彩图形等。
这类方法通常称为图像增强技术。
图像增强技术通常有两种方法:空间域法和频率域法。
空间域法主要是在空间域中对图像像素灰度值直接进行运算处理。
本文围绕空间域法,对数字图像的增强处理进行了研究,着重介绍其中的直方图、直方图均衡化及图像平滑处理中的邻域平均和中值滤波。
并利用VC++实现上述方法对图像的处理。
关键词:图像增强;直方图;图像平滑;邻域平均;中值滤波AbstractThe image in the transmission and conversion cases will cause some blurred image, so,it is necessary for the image to have an improved treatment. One way is to not consider the reasons for degradation of image quality, the characteristics of the image selected outstanding, thereby attenuating less important information. This method can improve the readability of the image, the image after improvement is not necessarily approximate to the original image, such as highlighting the outline of the target, the attenuation of noise, the black and white images into color graphics. This kind of method is usually called the image enhancement technology.Image enhancement technology usually has two kinds of methods: spatial domain and frequency domain method. The spatial domain method is direct computation of pixel gray values in the spatial domain. This paper focuses on the spatial domain method, enhancement of digital image processing are studied, emphatically introduces the histogram equalization and histogram of image smoothing, neighborhood averaging and median filtering. And VC++ is used to realize the method for image processing.Keywords:Image Enhancement; Histogram; Image smooth; Neighborhood averaging; Median filtering目录摘要 (II)Abstract (III)1 绪论 (1)1.1课题背景 (1)1.2 图像增强的研究及发展现状 (2)1.3 论文组织结构 (3)2 图像增强的基本理论 (4)2.1 数字图像的基本理论 (4)2.1.1数字图像的表示 (4)2.1.2图像的灰度 (4)2.1.3灰度直方图 (4)2.2 数字图像增强概述 (4)2.3 图像增强概述 (6)2.3.1图像增强的定义 (6)2.3.2常用的图像增强方法 (6)2.4 图像增强流程图 (8)2.5本章小结 (8)3 图像增强方法与原理 (9)3.1 直方图变换 (9)3.1.1直方图修正基础 (9)3.1.2直方图均衡化 (10)3.2 图像平滑 (11)3.2.1图像平滑 (11)3.2.2邻域平均 (11)3.2.3中值滤波 (12)3.4本章小结 (12)4 VC++6.0以及图像增强的实现 (13)4.1 VC++6.0简介 (13)4.1.1 VC++6.0 简介 (13)4.1.2开发环境 (13)4.1.3 图片应用程序的创建 (14)4.2图像增强实现方法 (14)4.2.1灰度修正的实现 (14)4.2.2邻域平均的实现 (18)4.2.3中值滤波的实现 (19)4.3本章小结 (21)5总结与展望 (22)5.1总结 (22)5.2展望 (22)参考文献 (23)致谢 (24)附录 (25)部分程序代码 (25)1.读入图片 (25)2.绘制直方图 (25)3.灰度直方图 (26)4.直方图均衡化 (27)安徽建筑大学毕业设计(论文)数字图像处理方法研究与实现——基于VC++的图像增强实现电子与信息工程学院电子信息工程 10电子1班胡水清 10205010107指导老师宋杨1 绪论数字图像处理是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。
VC图像处理——指纹的识别
择或输入来确定打开的文件路径。
9 指纹图像细化模块:把二值化的指纹图像细化, . 使脊
线的宽度达到单像素。
2 内存中保存 H B . I D 对象: 管理内存中的 H B I D 对象, 包
数据流图如图 1 所示。
括把从文件打开模块得到的图像数据存人 H B I D 对象, 处理图 像的长宽等其他模块需要的 H B I D 对象的属性,以及保证别的
M a B众 目 支 5色 图 运 s e e g O 犷 前只 持之 位 的 算 6
一} ‘ 系统提示’。M J O NO M IN MB K BC N F R A O I T
_/ 锁 除 定 /解
2 /返回
「U 二 t n e r
-
) :GO白 l k G O A D C G t 以B 几 n c日日 七 B L p O > eH (} I ! O bU )
实 j 用第一 智慧密集
二 留幽.困 围田目.国 圈,.团… … 团… 田目曰二 圈固.圈 胭.国.圈 别二 回困圈国.圈 .困田.衍 皿困 二 田.… 圈.田‘二 沪
必
曰B 心 ( I ” e tP) H hl B D 2 /设夏脏标记 _ -
_ _ _一 -
户口 、 to fd抽 ( 〔 口心 沼诊 d 治 奋9拍口 ) M i
单击事件, 处理函 数是oleqaz( nna e) n t u i ) Eh c(函数。 n E l e 和o n
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC实现图像增强处理
一、摘要
本文介绍了图像处理的目的和意义并论述了如何用直方图均衡化对一幅BMP灰度图像进行灰度映射,从而达到使图像增强的目的。
本设计是利用VC 6.0执行的,vc6.0具有效率高,可继承、封装、移植等成熟的软件技术,本问是利用对图像进行直方图均衡化算法来实现对图像的增强。
实验表明,该程序可以快速、准确地对灰度图像进行灰度变换,达到了使图像对比度增强,改善图像质量的预期目的。
二、设计目的和意义
由于噪声、光照等外界环境或设备本身的原因,通常我们所获取的原始数字图像质量不是很高,因此在对图像进行边缘检测、图像分割等操作之前,一般都需要对原始数字图像进行增强处理。
图像增强主要有两方面应用,一方面是改善图像的视觉效果,另一方面也能提高边缘检测或图像分割的质量,突出图像的特征,便于计算机更有效地对图像进行识别和分析。
图像增强是图像处理最关键的研究问题之一,图像增强是指为了将图像中感兴趣的特征有选择地突出,而衰减其不需要的特征,要对灰度图进行灰度修正,图像增强按作用域可分为两类,即空域处理和频域处理。
空域处理是直接对图像进行处理,而频域处理则是在图像的某个变化域内,对图像的变换系数进行运算,然后通过逆变换获得图像增强效果。
这里主要讲述了用直方图均衡化实现图像增强,能够使图像具有所需要的灰度分布,从而有选择地突出所需要的图像特征.并且利用VC6.0加以实现[1]。
当前图像处理在算法实现中主要应用Matlab 仿真工具,但Matlab运行效率较低,且可移植性和实用性均不太理想。
与Java和C#等其他高级语言相比,VC 在程序运行效率、内存使用的可控性和编程的灵活性上均具有较大的优势,因此本文采用VC 6.0 集成开发环境,以达到算法快速有效地执行,同时增强了算法的可移植性。
三、设计原理
如上所述,图像增强主要分为空域和频域两种分析方法。
在空域对图像进行增强处理的方式有许多种,如增强对比度和动态范围压缩等等,但这些处理方式都是针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。
通过改变选用增强函数的解析表达式就可以得到不同的处理效果,这类处理方法比较灵活方便,处理效果也比较不错,但对于某些灰度分布很密集或对比度很弱的图像虽然也能起到一定的增强效果但并不明显。
对于这种情况就需要用本文提出的灰度直方图变换方法将原始图像密集的灰度分布变的比较疏散,从而拉大了图像的对比度并在视觉上达到明显增强的效果,使一些原本不易观察到的细节能变的清晰可辩。
图像的灰度变换处理是通过改变原始图像各像素在各灰度级上的概率分布来实现的,通过对图像的灰度值进行统计可以得到一个一维离散的图像灰度统计直方图函数p(sk)=nk/n (k=0,1,2,……,L-1)。
该式表达了在第k个灰度级上的像素的个数nk占全部*像素总数n的
比例,p(sk)则给出了对sk出现概率的1个估计。
因此该直方图函数实际是图像的各灰度级的分布情况的反映,换句话说也就是给出了该幅图像所有灰度值的整体描述[2]。
通过该函数可以清楚地了解到图像对应的动态范围情况,可以了解到图像灰度的主要集中范围。
因此可以通过图像增强程序的干预来改变直方图的灰度分布状况,使灰度均匀的或是按预期目标分布与整个灰度范围空间,从而达到增强图像对比度的效果。
这种方法是基于数理统计和概率论的,比直接在空域对原始图像采取对比度增强效果要好的多。
在实际应用中直方图的变换主要有均衡变换和规定变换两种,而后者又根据灰度级映射规则的不同分单映射规则和组映射规则两种。
本问主要介绍的是频域法。
频域法是在图像的某个变换域内,对图像进行操作,修改变换后的系数,例如付立叶变换、DCT变换等的系数,然后再进行反变换得到处理后的图像。
而在频域分析法中又包括灰度变换,图像平滑和图像锐化等方法。
本次设计主要是利用灰度变换中的直方图均衡法实现图像增强。
直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
[3]对图像空域点的增强过程是通过增强函数t=EH(s)来完成的,t、s分别为目标图像和原始图像上的像素点(x,y),在进行均衡化处理时对增强函数EH 需要满足两个条件:增强函数EH(s)在0≤s≤L-1的范围内是一个单调递增函数,这个条件保证了在增强处理时没有打乱原始图像的灰度排列次序。
另一个需要满足的条件是对于0≤s≤L-1应当有0≤EH(s)≤L-1,它保证了变换过程灰度值的动态范围的一致。
同样的,对于反变换过程s=EH-1(t),在0≤t≤1时也必须满足上述两个条件。
累计分布函数(cumulative distribution function,CDF)就是满足上述条件的一种,通过该函数可以完成s到t 的均匀分布转换。
此时的增强转换方程如公式一所示:
tk = EH(sk) = ∑(ni/n) = ∑ps(si) ,(k=0,1,2,……,L-1)(1)
上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。
在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布tk按式tk=[(N-1)* tk+0.5]对其取整并得出源灰度sk到tk的灰度映射关系,其中N为灰度的级数。
在重复上述步骤得到所有的源图像各灰度级到目标图像各灰度级的映射关系后按照新的映射关系对源图像各点像素进行灰度转换即可完成对源图的直方图均衡化。
四、详细设计步骤
下面主要介绍一下运用VC++实现的灰度图像均衡化处理的具体设计步骤;利用VC++实现的灰度图像均衡化处理的流程如图一所示。
[4]
图二图三
图四图五
原始图像如图二所示,图四为原始图像的直方图分布,图二为经过图像增强后的图,图五为他的直方图分布。
以看出,直方图均衡化处理后,图像的直方图较为平直,各灰度级的值相对均匀。
由于灰度级具有均匀的概率分布,图像看起来更清晰了。
五、设计结果及分析
根据上述的算法描述,要实现灰度图像的直方图均衡化必须首先统计原图像的各级灰度值,在程序中定义了一个数组,来统计原图像的各级灰度值,然后对得到的灰度值做灰度映射,将映射后的结果存到一个新的灰度映射关系数组中,根据这个数组就可以确定出源图象的某个灰度级经过变换后对应于哪个新的灰度级,最后将变换后的结果保存到DIB中。
经过这样的处理后,就可把源图像中密集分布的灰度值映射到经过均衡化后的新灰度级上,增加了对比度,改善了视觉效果。
实验表明,本文介绍的方法对于暗、弱信号的原始图像的目标识别和图像增强等有着良好的处理效果,尤其是通过组映射规则的直方图规定化变换方法结合设计良好的规定直方图,可以得到更佳的图像处理效果。
本文给出的程序代码在Microsoft Visual C++ 6.0下编译通过。
从上述效果图可以看出,经过直方图均衡化处理后,图像变的清晰了,从直方图来看,处理后的图像直方图分布更均匀了,在每个灰度级上图像都有像素点。
具有很好的可移植性。
但用直方图均衡化处理也存在一定的缺陷,主要表现在:首先变换后图像的灰度级减少,某些细节消失;其次某些图像,如直方图有高峰,经处理后对比度不自然的过分增强[6]。
六、参考文献
[1].李弼程,彭天强,彭波.智能图像处理技术.北京:电子工业出版社,2004.2
[2].姚若河,黄继武,吴湘淇.改进的直方图均衡化图像增强算法.铁道学报,2006.12:56-58
[3].宋刚,刘瑶华.一种能强化细节的自适应直方图均衡法.山东工业大学学报,2007.12:105-108
[4].李耀辉,刘保军.基于直方图均衡的图像增强.华北科技学院学报,2003. 6:88-89
[5].皋军.图像的灰度直方图均衡化的实现.盐城工学院学报,2001.12:43-45
[6].王国权,仲伟波.灰度图像增强算法的改进与实现研究.计算机应用研究,2004.12。