VC++直方图均衡化显示图像及直方图


采用VC++和opencv对图像进行直方图均衡化,并显示图像及直方图,带有图片,能成功运行
资源截图
代码片段和文件信息
#include 
#include 
#include 
#include 
#define HDIM  256

int main(int argcchar** argv)
{
IplImage *dst=0*src=0;
CvHistogram *histogram;
CvHistogram *HistEqualization;

IplImage *histOriginal;//原图像的直方图
IplImage *HistEquAfter;//均衡化后直方图


float HistogramRange1[2]={0255};
float *HistogramRange[1]={&HistogramRange1[0]};

int n=HDIM;
double nn0[HDIM];
int srcnn00[HDIM];
uchar T0[HDIM];
CvMat *T_mat0;

int i=0;
int sum = 0; //sum of pixels of the source image
double val0=0;
int val1=0;

if((src=cvLoadImage(“4.jpg“0)) == NULL)  // force to gray image
{
printf(“Read Image Error!“);
return -1;
}

//原图像的直方图
histOriginal = cvCreateImage(cvSize(300400)83);
histOriginal->origin=1;
histogram = cvCreateHist(1&nCV_HIST_ARRAYHistogramRange1); 
cvCalcHist(&srchistogram00); 

// Compute intensity transformation
sum = src->height * src->width;

for( i = 0; i < n; i++ )
{
val0 = val0 + cvGetReal1D (histogram->bins i);
nn0[i]=val0;
T0[i] = (uchar) (255*nn0[i]/sum); // range is [0255]
srcnn00[i]=(int)(nn0[i]*255/sum);

cvLine(histOriginalcvPoint(i0)cvPoint(i(int)(cvQueryHistValue_1D(histogrami)/3))CV_RGB(127127127));
}

// 直方图均衡化
dst = cvCloneImage(src);
T_mat0 = cvCreateMatHeader(1256CV_8UC1);
cvSetData(T_mat0T0src->width );
cvLUT( src dst T_mat0);

//均衡化后的直方图
HistEquAfter = cvCreateImage(cvSize(300400)83);
HistEquAfter->origin=1;
HistEqualization = cvCreateHist(1&nCV_HIST_ARRAYHistogramRange1); 
cvCalcHist(&dstHistEqualization00);
for (i=0;i {
cvLine(HistEquAftercvPoint(i0)cvPoint(i(int)(cvQueryHistValue_1D(HistEqualizationi)/3))CV_RGB(127127127));
}


cvNamedWindow( “source“ 1 );
cvNamedWindow( “HistEquImage“ 1 );
cvNamedWindow( “S_Histogram“ 1 );
cvNamedWindow( “HistEqualization“ 1 );

cvShowImage( “source“ src );//原图像
cvShowImage( “HistEquImage“ dst );//均衡化后图像

cvShowImage(“S_Histogram“histOriginal);//原图像直方图
cvShowImage(“HistEqualization“HistEquAfter);//均衡化后直方图

cvWaitKey(-1);


cvReleaseImage( &src );
cvReleaseImage( &dst );

cvReleaseImage(&histOriginal);
cvReleaseImage(&HistEquAfter);


cvReleaseHist ( &histogram);
cvReleaseHist(&HistEqualization);


cvDestroyWindow(“source“);
cvDestroyWindow(“HistEquImage“);


cvDestroyWindow(“S_Histogram“);
cvDestroyWindow(“HistEqualization“);


return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      49661  2011-06-03 10:17  histSP4.jpg

     文件     192571  2011-06-17 10:10  histSPDebughistSP.exe

     文件     208040  2011-06-17 10:10  histSPDebughistSP.ilk

     文件      20086  2011-06-17 10:10  histSPDebughistSP.obj

     文件    4117988  2011-06-17 00:43  histSPDebughistSP.pch

     文件     467968  2011-06-17 10:10  histSPDebughistSP.pdb

     文件     156672  2011-06-17 10:10  histSPDebugvc60.idb

     文件      94208  2011-06-17 10:08  histSPDebugvc60.pdb

     文件        249  2011-06-16 23:25  histSPhistSP.asp

     文件       2561  2011-06-17 10:08  histSPhistSP.cpp

     文件       3486  2011-06-17 10:10  histSPhistSP.dsp

     文件        535  2011-06-17 10:10  histSPhistSP.dsw

     文件      41984  2011-06-17 10:10  histSPhistSP.ncb

     文件      48640  2011-06-17 10:10  histSPhistSP.opt

     文件        801  2011-06-17 10:10  histSPhistSP.plg

     目录          0  2011-06-17 10:10  histSPDebug

     目录          0  2011-06-17 10:10  histSP

----------- ---------  ---------- -----  ----

              5405450                    17


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)