直方图均衡化原理及编码实现_第1页
直方图均衡化原理及编码实现_第2页
直方图均衡化原理及编码实现_第3页
直方图均衡化原理及编码实现_第4页
全文预览已结束

下载本文档

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

文档简介

1、直方图均衡化Author:MarkDate:6.4.2011原理:直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。对图像A(x,y),灰度范围为0,L,其图像的直方图为HA(r),图像A的总像素点数为:A0=HA(r)dr0L归一化:概率密度函数为:p(r)=概率分布函数为: HA(r) 0设变换: 1rP(r)=H(r)dr 00As=T(r)为斜率有限的非减连续可微函数,它将输入图像A(x,y)转换为输出图像B(x,y)。输入图像的直方图为HA(r)与输出图像的直方图为HB(s)之间的关系可由如下过程导出根据直方图的含义,经过灰度

2、变换后对应的小面积元相等HB(s)ds=HA(r)dr解得:HA(r)HA(r)HB=其中:T(r)=ds/dr所以,当HB的分子分母只差一个比例常数时,HB就恒定。即,C()Tr=HA(r) 0所以:Crs=T(r)=H(r)dr=CP(r) 00A其中1rP(r)=HA(r)dr 00为了使s的取值范围为0,L:C=L由此得,使直方图均衡化的灰度变换函数是概率分布函数。 在离散情况下s=T(r)=CP(rk)其中kP(rk)=i=0nin为图像中总像素个数。编码实现(OpenCV):1. 计算图像直方图,并归一化2. 计算变换函数 s=T(r)3. 根据 s=T(r) 计算新的灰度值sOp

3、enCV源码:/*/ / 说明:直方图参考例程/ 作者:Mark/ 时间:6.4.2011/*/ #include <cv.h>#include <highgui.h>#include "histogram.h"#define DEPTH 256int main(void) / 3.灰度变换 uchar* pPixelLine = NULL; for(int x = 0; x < dst->height; x+) pPixelLine = (uchar *)(dst->imageData + x*dst->widthStep)

4、; for(int y = 0; y < dst->width; y+) pPixelLiney = TpPixelLiney; /行 /列 / 2.计算变换函数 s=T(r) double val = 0.0; uchar TDEPTH = 0; for(int index = 0; index < DEPTH; index+) val += cvQueryHistValue_1D(hist, index); Tindex = (uchar)(val*255); / 1.计算直方图 int bins = DEPTH; int sizes = bins; CvHistogra

5、m* hist = cvCreateHist(1, sizes, CV_HIST_ARRAY); cvCalcHist(&dst, hist); cvNormalizeHist(hist, 1); /归一化 IplImage *src = cvLoadImage("D:picture素材9.jpg", IplImage *dst = cvCloneImage(src); / 显示原始图片 cvNamedWindow("src"); cvShowImage("src", src); / 原始图像直方图 IplImage *src

6、HistImg = cvCreateImage(cvSize(256, 200), 8, 3); cvSet(srcHistImg, CV_RGB(255, 255, 255); plotHist1D(src, srcHistImg, CV_RGB(100, 100, 100); cvNamedWindow("srcHist"); cvShowImage("srcHist", srcHistImg); / 画直方图 CV_LOAD_IMAGE_GRAYSCALE); / 显示直方图均衡化后图像 cvNamedWindow("dst")

7、; cvShowImage("dst", dst); / 直方图均衡化后图像的直方图 IplImage *dstHistImg = cvCreateImage(cvSize(256, 200), 8, 3); cvSet(dstHistImg, CV_RGB(255, 255, 255); plotHist1D(dst, dstHistImg, CV_RGB(100, 100, 100); / 画直方图 cvNamedWindow("dstHist");cvShowImage("dstHist", dstHistImg);cvWaitKey(0);cvReleaseImage(&src);cvReleaseImage(&dst);cvReleaseImage(&srcHistIm

温馨提示

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

评论

0/150

提交评论