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
利用VB与VC混合编程实现数字印花的图像处理
现代制造工程2007年第1期CAD/CAE/CAPP/CAM利用VB与VC混合编程实现数字印花的图像处理詹白勺,梅顺齐,陈小兰(武汉科技学院,武汉430073)摘要:织物吸收墨水能力的差异、经向和纬向的属性不同,造成数字印花过程中出现偏色和不期望条纹的现象,达不到理想的印花效果。
针对这种问题提出在印花之前对图像进行合理的处理方案,即调整图像各种颜色的灰度值,将调整后的误差按不同的比例分配到经向和纬向的点上,使得在经向和纬向的点得到不同程度的补偿。
介绍用VC编写动态连接库(DLL)、在VB中调用的方法来开发对数字印花的图像处理软件,以适应不同的织物,从而提高印花质量。
关键词:图像处理;数字印花;动态连接库中图分类号:TP391 文献标识码:A 文章编号:1671—3133(2007)01—0050—03Usi n g VB and VC m i x2programm i n g to rea li ze i m ageprocessi n g for d i g ita l fabr i c pr i n ti n gZhan Bai2shao,Mei Shun2qi,Chen Xiao2lan(W uhan University of Science and Engineering,W uhan430073,CHN) Abstract:Because the differences of fabric abs orbing ink and attribute of war p and woof result in the leaning col or and unexpected stri pe,which appear in the digital dye p rinting p r ocess,the dye p rinting effect is not ideal.Pr oposes the reas onable s oluti on t o i m2 age p r ocessing ai m ing at this kind of questi on before the dye p rinting,na mely it is that adjusting each kind of col or gradati on value of i m age and distributing the err or t o the war p and woof s pots according t o the different p r oporti onal.Then the war p and woof s pots will be co mpensated differently.And intr oduces the way that p r ogra mm ing Dyna m ic L inking L ibrary(DLL)in VC,called in VB co m2 p iles t o the digital dye p rinting i m agery p r ocessing s oft w are t o adap t the different fabric,thus i m p r oves the dye p rinting quality.Key words:I m age p r ocessing;D igital dye p rinting;DLL 数字印花是一种集机械、计算机、电子信息技术、纺织、化工等为一体的高新技术,其先进的生产原理及手段,给纺织印染带来了前所未有的发展机遇。
基于VC++的邻域均值滤波法图像增强
o = ; < WitFh r + 1 f 10 ln dh ie; +) r(
^ m一
~
l
州 }
}” I j
摹 摹
{
I ' 《 n n ”, n Ⅲ, “
摹
/ 指 向 D B 第 i / I — n eY ie k , C n Fhr+ 行
1 .图像 增 强
图像在实际应用 中每个过程都有 可能导
致图像品质变差 , 使图像的信息无法被正常读
取和识别 。影响图像质量清晰程度有很多因 素, 例如 , 在采集 图像过程 中由于光照环境或 物体表面反光等原 因造成 图像整体光照不均 ,
在这里我们 主要讨论和分析空 间域的图 像增强 空间域图像增强方法是直接对图像像 素进行操作的过程 , 可以用公式表示为【 :
据统计 , 在人类接受 的各种信息中视觉信息 占 增强就是直接基于像素进行增强处理。 而频率 8%, 以图像信息是十分重要 的信息传递媒 0 所
体 和方式 。
叶变换 ) 转换到其它空间 , 然后在转换空间进 行一些增强处理 , 最后再转换到图像空间。
21 空 间域 图像增 强方 法 .
墨 蔗
} 1 “” m1 l n 1 l { j
| |镰 — n e p eX Tm C n
攮Mx 褥划 鳓 都 城雄 蹿
+ 1 象 素 的 指 针 l r = ( B T) 个 pc S L Y E P
(I a e > e i 0+ ( n e Y ie pm g- G t t Bs i— C n Fl r+ k t )
的指 针 lD t= (P Y E pm gNe ps L B T )(I ae w
数字图像处理实验4-图像增强(1)
实验时间:200 年月日实验小组:第组组长:组员:组员:指导教师签名:实验情况评定:实验四图像增强(1)实验目的:通过实验掌握下列知识:1、学习常见的图像增强的方法并实际体会图像增强前后画质的变化;2、了解几种不同增强方式用于不同图像处理所取得的效果(全域线性变换和分段线性变换);3、初步掌握简单算法的代码实现的方法;4、初步了解MFC的一些初步编程技巧;内容及步骤一、通过VC实现一个全域线性变换:1、按照前面实验介绍的方法,建立一个ImageProcessing Wizard工程;2、选择菜单里的工程->设置,选择C/C++选项卡,Y分类下拉条里选择CodeGeneration,然后在Struct member alignment中选择1 Byte;3、利用试验三介绍的方法,通过CBmp类读入“pictures”文件夹中的“图片1.bmp”:a.给CxxxxDlg类添加一个成员变量CBmp* bmp1;b.在CxxxxDlg类的消息处理函数OnInitDialog里添加CBmp的初始化代码,以及图形文件的装载代码;c.在CxxxxDlg类的消息处理函数DestroyWindow()里添加如下代码,防止内存泄漏:delete bmp1;3、在CxxxxDlg类的消息处理函数OnOK里,增加如下代码:struct rgb tx;for(int i=0; i<bmp1->nWidth; i++)for(int j=0; j<bmp1->nHeight; j++) {tx = bmp1->pImageData[j*bmp1->nWidth+i];//此处添加图形增强的代码}for(i=0; i<bmp1->nWidth; i++) //此处显示处理后的图形for(int j=0; j<bmp1->nHeight; j++) {tx = bmp1->pImageData[j*bmp1->nWidth+i];pDC->SetPixel(i, j, RGB(tx.red, tx.grn, tx.blu));}4、在上述代码中间添加图形增强的代码,应该注意:读取的是彩色图形,所以在进行全域线性变换时,应针对每一个基色分别进行全域线性变换;5、全域线性变换的参数:a=0,b=255,c=50,d=150;二、通过VC实现一个分段线性变换:1、1-3步骤与上一个实验相同,这里是针对“pictures”文件夹中的“图片2.bmp”,这个实验是针对图形进行分段线性变换;4、分段线性变换的参数为:a=145、b=220、c=175、d=210;5、同样应该注意:读取的是彩色图形,所以在进行分段线性变换时,应针对每一个基色分别进行分段线性变换;6、运行并观察运行结果;实验报告要求:1、记录你编写的全域线性实验代码;2、记录你编写的分段线性实验代码;。
VC++在数字图像处理中的应用
VC++在数字图像处理中的应用赵兆(湖南信息职业技术学院,长沙,410001)摘要:随着信息时代的到来,图像信息已经成为信息社会的基本信息之一。
数字图像处理是对图像信息的基本处理方法,它通过一些繁杂的算法对大量的图像的数据进行运算以达到人们满意的图像效果。
Visual C++在图像处理的效率显著,因此本文主要介绍使用V isual C++实现数字图像处理的常用算法,介绍了Visual C++在图像处理中的基本方法和应用上的技巧。
关键词:V isual C++;数字;图像处理;方法一、开发语言的选择图形图像的处理的时间消耗较一般算法多,提高处理效率很有必要,因此选择合适的语言进行算法的描述显得尤为重要。
本文选择Visual C++,其主要优势在于以下三个方面:(1)执行效率高。
C++的执行代码经过编译后生成的是汇编语言,它可以直接在处理器上运行,因此它的执行效率较高。
(2)较高的灵活度。
指针是C++的一种特殊的数据类型,能够获取和直接操纵地址,实现动态存储分配内存。
掌握指针就能更有效地使用内存空间,C++中指针的使用,很大幅度上提高了编程的灵活度。
(3)提高了内容使用效率。
对于图形图像数据的处理而言,大量信息的图像数据处理需要占用较大的内存,而计算机内存是有限的。
在相对有限的内存空间,必须更有效率的使用才能比较好的完成数据处理运算。
由于C++语言支持对内存的直接分配和释放,提高了内容的使用效率,也大大提高了图像处理效率。
二、数字图像的概念就计算机系统而言,图像是以栅格结构的画面存储形式。
而栅格结构将图像划分为分布均匀的栅格,每个栅格为一个像素。
显式的记录每个像素的光度值(亮度/彩色);而像素的坐标值确是规则地隐含的,其位置按规则排列。
在Windows环境下,最重要的图像就是位图(Bitmap),即位映像(bit map)。
图像从色度学理论观念来讲,颜色可以由红(Red)、绿(Green)、蓝(Blue)3种基本颜色按不同的比例组合而成。
基于VC与Matlab混合编程实现图像增强处理
或 减 弱 ,具 体变换 公式 为 :
舡 y 】 0 r ( xy )<a
g ( y ) : { d - c f ) 一 a ] + c a f ( x y ) < b
_b … b 慨 y ]
良好 的运 算 效 率 ,在 数 字 图像 处 理 领 域 也 得 到 了广 泛 的 应 用 。Ma t l a b 是 一 种 以 矩 阵 为 基 本运 算 单 位 的 高 效率 的 数 值 计算 软件 ,带有 众 多 函数库 ,使 用方 便 ,可 应用 于 众 多领 域 。VC 在 开 发界 面W i n d o ws 应 用 程序 时具 有 明显优
刘大鹏
中 国人 民公 安 大 学 ,北京 1 0 0 0 3 8
刘 大鹏
( 1 9 7 9 -) , 男 . 硕 士研 究 生 ,主 要 研 究方 向为刑 事图 像技术 。
E ma i 『
摘要 通过 图像增 强处理 可改善 图像 判读和识别 效果。本文对 常用的分段 线性 图像
信 息 科 技
中 国 科 技 信 息 2 0 1 3 年 第2 0 期・ C H I N A S C I E N C E A N D T E C H N O L O G Y I N F O R M A T I O N O c t . 2 o 1 3 _
基于V C与Ma t l a b 混合编程实现 图像 增强处理
( 1 ) 利 用 Ma t [ a b 引 擎 :通 过 Ma t l a b 引 擎 可 以 在
6 8一
一
灰 度 增 强 处理 方 法进 行 了讨 论 ,对 V c 与M a t l a b 混合 编 程 方 法进 行 了介 绍 。通 过 混 合 编 程 方 法 实现 了 图像 增 强处 理 的应 用实 例 。 实 际 结 果证 明 ,本 文 所提 出的方法是 有效可行 的,具有现实应用意义。
VC++实现图像二值处理
Visual C++实现二值图像处理二值图像是一种简单的图像格式,它只有两个灰度级,即"0"表示黑色的像素点,"255"表示白色的像素点,至于如何从一幅普通的图像获得二值图像,请参考我近期在天极网上发表的《Visual C++编程实现图像的分割》一文。
二值图像处理在图像处理领域占据很重要的位置,在具体的图像处理应用系统中,往往需要对于获得的二值图像再进一步进行处理,以有利于后期的识别工作。
二值图像处理运算是从数学形态学下的集合论方法发展起来的,尽管它的基本运算很简单,但是却可以产生复杂的效果。
常用的二值图像处理操作有许多方法,如腐蚀、膨胀、细化、开运算和闭运算等等。
本文对这些内容作些研究探讨,希望对爱好图像处理的朋友有所帮助。
一、腐蚀和膨胀形态学是一门新兴科学,它的用途主要是获取物体拓扑和结果信息,它通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。
它在图像处理中的应用主要是:b5E2RGbCAP1.利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的;2.描述和定义图像的各种几何参数和特征,如面积,周长,连通度,颗粒度,骨架和方向性。
限于篇幅,我们只介绍简单二值图像的形态学运算,对于灰度图像的形态学运算,有兴趣的读者可以看有关的参考书。
二值图像基本的形态学运算是腐蚀和膨胀,简单的腐蚀是消除物体的所有边界点的一种过程,其结果是使剩下的物体沿其周边比原物体小一个像素的面积。
如果物体是圆的,它的直径在每次腐蚀后将减少两个像素,如果物体在某一点处任意方向上连通的像素小于三个,那么该物体经过一次腐蚀后将在该点处分裂为二个物体。
简单的膨胀运算是将与某物体接触的所有背景点合并到该物体中的过程。
过程的结果是使物体的面积增大了相应数量的点,如果物体是圆的,它的直径在每次膨胀后将增大两个像素。
如果两个物体在某一点的任意方向相隔少于三个像素,它们将在该点连通起来。
Visual+C++实现数字图像增强处理
前言对于一个图像处理系统来说,可以将流程分为三个阶段,在获取原始图像后,首先是图像预处理阶段、第二是特征抽取阶段、第三是识别分析阶段。
图像预处理阶段尤为重要,如果这阶段处理不好,后面的工作根本无法展开。
在实际应用中,我们的系统获取的原始图像不是完美的,例如对于系统获取的原始图像,由于噪声、光照等原因,图像的质量不高,所以需要进行预处理,以有利于提取我们感兴趣的信息。
图像的预处理包括图像增强、平滑滤波、锐化等内容。
图像的预处理既可以在空间域实现,也可以在频域内实现,我们主要介绍在空间域内对图像进行点运算,它是一种既简单又重要的图像处理技术,它能让用户改变图像上像素点的灰度值,这样通过点运算处理将产生一幅新图像。
下面我们开始介绍与图像点运算的相关知识。
一、图像的直方图图像直方图是图像处理中一种十分重要的图像分析工具,它描述了一幅图像的灰度级内容,任何一幅图像的直方图都包含了丰富的信息,它主要用在图象分割,图像灰度变换等处理过程中。
从数学上来说图像直方图是图像各灰度值统计特性与图像灰度值的函数,它统计一幅图像中各个灰度级出现的次数或概率;从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。
如果不特别说明,本讲座中的直方图的纵坐标都对应着该灰度级在图像中出现的概率。
我们的例子是在一个对话框中显示一个图像的直方图,为实现该目的,我们定义了一个名为"ZFT"的对话框类用来显示图像的直方图,具体实现代码和效果图如下(关于代码实现部分可以参考笔者2001年在天极网上发表的一篇VC实现数字图像处理的文章)://////////////////////////////////直方图对话框构造函数;ZFT::ZFT(CWnd* pParent /*=NULL*/): CDialog(ZFT::IDD, pParent)//ZFT为定义的用来显示直方图的对话框类;{Width=Height=0;//对话框初始化阶段设置图像的宽和高为"0";}////////////////////////对话框重画函数;void ZFT::OnPaint(){CRect rect;//矩形区域对象;CWnd *pWnd;//得到图片框的窗口指针;pWnd=GetDlgItem(IDC_Graphic);//得到ZFT对话框内的"Frame"控件的指针;file://(IDC_Graphic为放置在对话框上的一个"Picture"控件,并讲类型设置为"Frame")。
《数字图像处理》实验-山东大学
《数字图像处理》试验指导书任课教师陈振学山东大学控制科学与工程学院2008.3实验一、直方图均衡化图像增强的计算机实现一、实验目的:1)熟悉直方图均衡化处理的理论基础;2)掌握直方图均衡化处理的计算机实现方法;3)学习VC++ 6。
0 的编程方法;4)验证直方图均衡化处理理论;5)观察直方图均衡化处理的结果。
二、实验要求:1)学习VC++确6.0 编程的步骤及流程;2)录入已给出的程序;3)编译并改错;4)阅读给出的程序,并加注释及书写文档;5)提交注释后的程序及文档;6)写出本次实验的体会。
直方图均衡化处理编程指南本程序将在Microsoft Visual C++6.0 开发环境下构建,所以,在开始之前,请确定您所使用的计算机已经正确安装了Microsoft Visual C++6.0(具体的安装方法请详见Microsoft Visual C++6.0 用户手册,低于6.0 的版本是否可以运行在此不做讨论)。
下面,请用该指南构建一个直方图均衡化处理的程序。
一、创建对话框资源利用Microsoft Visual Studio 的对话框编辑器来设计对话框并创建对话框资源。
步骤如下:1、Visual C++6.0 启动步骤:①安装好Visual C++6.0;②按路径开始——程序——Microsoft Visual Studio 6.0——Microsoft Visual C++ 6.0启动VC;③出现VC 界面后,按路径“File---New”进入创建项目对话框;2、在弹出的对话框中单击 Projects 选项卡,并单击MFC AppWizard (exe),在右侧的Project name 一栏中输入工程文件名,在此我们输入HistDemoA(也可以输入自己的工程文件名,但为了统一起见,建议初学者输入和本文相同的名字,以便于后面的理解),如下图所示:图 1完成后,单击OK 按钮。
3、在弹出的MFC AppWizard 中,选择Dialog based,如下图所示,图 2其它各项均接受默认的设置。
VC++下的图像处理算法
数一般是负数或者 0 卷积系数 之和 大于 0边 缘化检测与增。 : ; 在高通滤波器 中, 卷积核中心的卷积 系数最 大, 处理中缘检测与增强 5 是图像的轮廓 更加突 出的图像处理方法叫做边缘检测或
度灰度级变 化到边 缘的低灰度级 。任选一个 灰度 级 D , 1 然后 定义一条轮廓 线, 该轮廓线 连接 了图像上所有具有灰度级 D 1 的点 , 即形成 了一个包 围灰度级 大于等于 D 1的区域 的闭合 曲 线 。则直方图又有定义:
H( = D)
。
其 中 f表示空间坐标为 (, , ) xy z位置 点的颜 色, 如果只考 虑 平面 的情况 , 平面 图像函数 的描述为 f X Y= {埘(, ) (, ) f X Y ,
作者简介 :曾莹, , 东顺德人 , 女 广 本科 , 助教 , 究方 向: 件编程 。 研 硬
维普资讯
面积 函数相 当于累积分布函数,而灰度直方 图就是其概论密 度函数。换句话说 , 于数字 图像 , 意灰度级 D的面积 函数 对 任 就是大于等于灰度值 D的像素的个数 。 ()高维直方图 比一维直方图在处理彩色 图像时候, 1 更
点处理相对比较简单, 不会改变 图像 内的空间关系 。 常见
的点处理有灰度直方 图均衡 。 而区域处理算法则是一般针对 灰度 图像而进行的,主要 的区域处理算法有卷积法 、中值滤波发和 S b l o e 边缘检测法 等 。下面就针对这几种算法进行详细的介绍。 灰度直方图是一副图像灰色级 内容 。灰 色直方 图也有 函 数 的定义 。 下面就讨论一下如何用函数描述灰度直方 图。 假设
位 的真彩色表示分辨率 为 6 0 4 0的数字图像的时 ,所需要 4 *8 的数据量为 9 0 B 0K 。可以看出数字图像 的数据容 量是非常大
大学毕业论文-—图像锐化处理说明书
图像锐化处理目录第一章前言 (3)第二章绪论 (4)2.1 研究的目的及意义 (6)2.2 国内外研究现状 (7)2.2.1 国外研究现状 (7)2.2.2 国内研究现状 (10)2.3 本文主要研究内容与结构安排 (11)第三章算法分析与描述 (13)3.1 数字图像处理简介 (14)3.1.1 数字图像处理的特点 (14)3.1.2 数字图像处理的目的和主要内容 (16)3.2 VC++简介 (18)3.2.1 Visual C++开发语言的特点 (20)3.2.2 Visual C++ 6.0 的特点 (21)3.2.3 Visual C++ 6.0 及其开发环境 (23)3.3 本章小结 (25)第四章算法分析与描述 (26)4.1 空域微分锐化方法 (26)4.1.1拉普拉斯微分算子函数 (28)4.1.2 Roberts交叉微分算子函数 (30)4.1.3 Prewitt微分算子函数(平均差分法) (31)4.1.4 Sobel微分算子函数(加权平均差分法) (31)4.2 频域高通滤波锐化方法 (34)4.2.1理想高通滤波器 (34)4.2.2巴特沃思高通滤波器 (35)4.2.3指数高通滤波器 (35)第五章详细设计过程 (36)5.1微分算子图像锐化编程实现说明 (36)5.2理想高通滤波图像锐化编程实现说明 (42)5.3 Butterworth 高通滤波图像锐化编程实现说明 (49)5.4 程序运行中的图像 (56)设计总结 (59)参考文献 (60)致谢 (62)第一章前言图像是人类获取和交换信息的主要来源, 因此, 图像处理的应用领域必然涉及到人类生活和工作的方方面面。
随着人类活动范围的不断扩大, 图像处理的应用领域也将随之不断扩大。
数字图像处理(Digital Image Processing)又称为计算机图像处理, 它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
- 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。