OpenCV中cvEqualizeHist实现灰度图象直方图均衡化
2011-08-31 21:06
387 查看
灰度图象直方图均衡化
void cvEqualizeHist( const CvArr* src, CvArr* dst );
src 输入的 8-比特 单信道图像 dst 输出的图像与输入图像大小与数据类型相同 函数 cvEqualizeHist 采用如下法则对输入图像进行直方图均衡化:
计算输入图像的直方图 H
直方图归一化,因此直方块和为255
计算直方图积分:
采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换。
该方法归一化图像亮度和增强对比度。
例:彩色图像的直方图均衡化
int i; IplImage *pImageChannel[4] = { 0, 0, 0, 0 }; pSrcImage = cvLoadImage( "test.jpg", 1 ) ; IplImage *pImage = cvCreateImage(cvGetSize(pSrcImage), pSrcImage->depth, pSrcImage->nChannels); if( pSrcImage ) { for( i = 0; i < pSrcImage->nChannels; i++ ) { pImageChannel[i] = cvCreateImage( cvGetSize(pSrcImage), pSrcImage->depth, 1 ); } // 信道分离 cvSplit( pSrcImage, pImageChannel[0], pImageChannel[1], pImageChannel[2], pImageChannel[3] ); for( i = 0; i < pImage->nChannels; i++ ) { // 直方图均衡化 cvEqualizeHist( pImageChannel[i], pImageChannel[i] ); } // 信道组合 cvMerge( pImageChannel[0], pImageChannel[1], pImageChannel[2], pImageChannel[3], pImage ); // ……图像显示代码(略) // 释放资源 for( i = 0; i < pSrcImage->nChannels; i++ ) { if ( pImageChannel[i] ) { cvReleaseImage( pImageChannel[i] ); pImageChannel[i] = 0; } } cvReleaseImage( pImage ); pImage = 0; }
相关文章推荐
- OpenCV图象大小调整cvEqualizeHist灰度调整
- OpenCV直方图均衡化(cvEqualizeHist)
- OpenCV学习笔记_直方图均衡化cvEqualizeHist
- OpenCV直方图均衡化(cvEqualizeHist)
- OpenCV直方图均衡化(cvEqualizeHist)
- 直方图均衡化(cvEqualizeHist)
- 彩色图像直方图均衡化 --- 基于OpenCV中EqualizeHist_Demo实现
- 第六章 - 图像变换 - 直方图均衡化(cvEqualizeHist)
- 直方图均衡化(cvEqualizeHist)
- cvEqualizeHist() 直方图均衡化(单通道)
- 彩色图像的直方图均衡化--基于OpenCV中EqualizeHist_Demo实现
- cvEqualizeHist() 直方图均衡化(多通道彩图)
- opencv学习(一)实现将彩色图像转换成灰度图像和二值图像
- opencv实现对数log灰度变换
- Opencv中的Bug(实现读入一个彩色视频文件并以灰度格式输出这个视频文件,学习opencv例2-10)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- opencv实现图像的灰度转换,均值滤波,实现图像的显示和存储
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- delphi实现图象灰度处理的3种方法