图像直方图均衡实验_第1页
图像直方图均衡实验_第2页
图像直方图均衡实验_第3页
图像直方图均衡实验_第4页
图像直方图均衡实验_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验名称实验 2:直方图均衡实验目的掌握对图像直方图进行操作,实现图像的直方图均衡算法。 1、 掌握求灰度图像归一化直方图方法 2、 掌握灰度图像的直方图均衡算法 3、 掌握对彩色图像进行直方图均衡的算法实验内容1、 计算灰度图像的归一化直方图。 具体内容:利用 OpenCV 对图像像素进行操作,计算归一化直方图。并在窗口中以图形的方式显示出来 2、 灰度图像直方图均衡处理 具体内容:通过计算归一化直方图,设计算法实现直方图均衡化处理。 3、 彩色图像直方图均衡处理 具体内容: 在灰度图像直方图均衡处理的基础上实现彩色直方图均衡处理。 实验完成情况(包括完成的实验内容及每个实验的完成程度。注意

2、要贴出每个实验的核心代码)1. 利用 OpenCV 对图像像素进行操作,计算归一化直方图。并在窗口中以图形的方式显示出来:IplImage* BuildHistogram(IplImage *src) CvSize size; size.width = 300;size.height = 300;IplImage* dst = cvCreateImage(size,IPL_DEPTH_8U,1);int count256;/*初始化每个灰度级对应像素个数为0*/for(int i=0;i<256;i+)counti=0;/*统计每个灰度级对应像素个数*/for(int i=0; i<

3、;src->height;i+)for(int j=0;j<src->width;j+)CvScalar s = cvGet2D(src, i, j);int color = s.val0;countcolor+;/*计算其中最大个数*/int max=0;for(int i=0;i<256;i+)if(counti>max)max = counti;/*初始化直方图背景为白色*/CvScalar white;white.val0=255;for(int i=0;i<dst->height;i+)for(int j=0;j<dst->wid

4、th;j+)cvSet2D(dst, i, j, white);/*绘制横竖坐标*/CvScalar black;black.val0 = 0;for(int i=0;i<280;i+)cvSet2D(dst, 280, i+10, black);for(int i=0;i<280;i+)cvSet2D(dst, i+10, 20, black);/*绘制直方图*/for(int i=0;i<256;i+)int high = counti*256/max;int x=20+i;for(int j=0;j<high;j+)int y=280-j;cvSet2D(dst,

5、 y, x, black);return dst;实验结果如下图所示:2. 通过计算归一化直方图,设计算法实现直方图均衡化处理。核心代码如下:IplImage* Equalization(IplImage *src)IplImage* dst = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, src->nChannels);int count256;float pr256;float dstColor256;/*初始化灰度级对应像素计数为0, 灰度级出现的概率为0,均衡后灰度为0*/for(int i=0;i<256;i+)counti=0

6、;pri=0.0f;dstColori=0;/*统计每个灰度级对应像素个数*/for(int i=0; i<src->height;i+)for(int j=0;j<src->width;j+)CvScalar s = cvGet2D(src, i, j);int color = s.val0;countcolor+;/*计算每个灰度级出现概率*/int max = src->height*src->width;for(int i=0;i<256;i+)pri=counti*1.0f/max;if(i>0)dstColori=dstColori-

7、1+255*pri; else dstColori=255*pri;/*生成均衡后图像*/for(int i=0; i<src->height;i+)for(int j=0;j<src->width;j+)CvScalar s = cvGet2D(src, i, j);int srcColor = s.val0;CvScalar d;d.val0=(int)(dstColorsrcColor);cvSet2D(dst, i, j, d);return dst;实验结果如下图所示:3. 在灰度图像直方图均衡处理的基础上实现彩色直方图均衡处理。核心代码如下:IplImage

8、* ColorEqualization(IplImage *src)IplImage *dst = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3); IplImage *pImageChannel3 = NULL; int i; for (i=0; i<3; i+) pImageChanneli = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1); cvSplit(src, pImageChannel0, pImageChannel1, pImageChannel2, NULL); for (i=0; i<src->nChannels; i+) pImageChanneli = Equalization(pImageChanneli); /*三通道合并*/ cvMerge(pImageChannel0, pImageChannel1, pImageChannel2, NULL, dst); return dst;实验结果如下图所示:实验中的问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论