欢迎来到天天文库
浏览记录
ID:59221090
大小:4.53 MB
页数:28页
时间:2020-09-09
《南理工数字图象处理报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字图像处理实验报告姓名:学号:班级:指导老师:王欢实验一1.实验目的对一幅图像的直方图进行均衡化,即产生一幅灰度级分布具有均匀概率密度的图像,扩展像素取值的动态范围,达到了图象增强的目的2.实验原理(1).直方图的理论基础:a.直方图概念:灰度直方图表示图像中每种灰度出现的频率。b.直方图的作用:反映一幅图像的灰度分布特性c.直方图的计算:(2).直方图的优点直方图具有很多的优点,直方图能反映图像的概貌,比如图像中有几类目标,目标和背景的分布如何;通过直方图可以直接计算图像中的最大亮度、最小亮度、平均亮度、对比度以及中间亮度等。使用直方图
2、可以完成图像分割、目标检索等。因为不同的目标具有不同的颜色分布。使用归一化直方图作目标匹配,还不易受到目标翻转和目标大小变化的影响。在图像查询的系统中,直方图有很大的应用,用它存储目标的特征占有空间小,且执行速度快。(3).均衡化原理根据熵理论可知当H[0],H[1]…,H[n-1]相等时,图像信息量最大à均衡化的目的是使每个Hi都相等,即把原始图的直方图变换为均匀分布的形式,这样就增加了象素值的范围,增强了图像的对比效果。令A0是图像面积,N是有效亮度级的个数,对于一个完全平坦的直方图来说,应该在每一个亮度级上A0/N个象素。设g是原来的
3、灰度级,G是变换后的灰度级,则可描述为:G=F(g)。实际应用中,有两种情况需要考虑:(1)多个至一个:若有连续n个灰级的频数之和级等于A/N,则必导致它们合并成一个灰度级。(2)一个到多个:若有某个灰级的频数是A0/N的R倍,则必须将其分为R个不同的灰阶级,每一个上都是A0/N。情况(1)导致的灰度级的合并是简单的(是多到一的映射关系),但情况(2)时的分解是不容易的(是一到多的关系),因为确实难以判定g在图像的不同位置,到底如何分解才是最好。假设灰度级g要映射到[GL,GR]中,有3种规则可以遵循:(1)规则1:总是将g映射为(GL+G
4、R)/2。(2)规则2:随机分配出[GL,GR]中的一个灰度级。(3)规则3:检查该象素的近邻象素的灰度平均值u,并分配给它一个[GL,GR]中最接u的灰度级Gk。在图像均衡化后,H2要求是每个灰度级上都有A0/N个象素,显然有:从而得到G=F(g)为:其中,A(g)是像素分布函数(累积函数)step.1计算累积函数A(g)如下:for(g=0;g<256;g++)A[g]=0;//初始化累积函数if(Hist[0])N=1;elseN=0;for(g=1,A[0]=Hist[0];g<256;g++){A[g]=A[g-1]+Hist[g
5、];//递推求累积函数if(Hist[g])N++;//统计有效的灰度级的个数}step.2计算映射关系G=F(g)for(g=0;g<256;g++)LUT[g]=N*A[g]/A[255];//A0=A[255]step.3均衡化操作for(i=0,pCur=pImg;i6、系G=F(g)for(g=0;g<256;g++)LUT[g]=(255.0/N)*N*A[g]/A[255];即:step.2计算映射关系G=F(g)for(g=0;g<256;g++)LUT[g]=255*A[g]/A[255];1.实验过程voidmain(){intwidth,height;BYTE*pGryImg=RmwRead8BitBmpFile2Img("1.bmp",&width,&height);//读入图片printf("%d,%d",width,height);RmwHistogramEqualize(pGryImg7、,width,height);RmwWrite8BitImg2BmpFile(pGryImg,width,height,"1.bmp");//重写图片deletepGryImg;//释放指针return;}其中直方图均衡化的函数实现如下voidRmwHistogramEqualize(BYTE*pImg,intwidth,intheight){BYTE*pCur,*pEnd=pImg+width*height;unsignedinthist[256];intLUT[256],i,sum;memset(hist,0,sizeof(int)*28、56);for(pCur=pImg;pCur
6、系G=F(g)for(g=0;g<256;g++)LUT[g]=(255.0/N)*N*A[g]/A[255];即:step.2计算映射关系G=F(g)for(g=0;g<256;g++)LUT[g]=255*A[g]/A[255];1.实验过程voidmain(){intwidth,height;BYTE*pGryImg=RmwRead8BitBmpFile2Img("1.bmp",&width,&height);//读入图片printf("%d,%d",width,height);RmwHistogramEqualize(pGryImg
7、,width,height);RmwWrite8BitImg2BmpFile(pGryImg,width,height,"1.bmp");//重写图片deletepGryImg;//释放指针return;}其中直方图均衡化的函数实现如下voidRmwHistogramEqualize(BYTE*pImg,intwidth,intheight){BYTE*pCur,*pEnd=pImg+width*height;unsignedinthist[256];intLUT[256],i,sum;memset(hist,0,sizeof(int)*2
8、56);for(pCur=pImg;pCur
此文档下载收益归作者所有