资源简介

采用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  histSP\4.jpg

     文件     192571  2011-06-17 10:10  histSP\Debug\histSP.exe

     文件     208040  2011-06-17 10:10  histSP\Debug\histSP.ilk

     文件      20086  2011-06-17 10:10  histSP\Debug\histSP.obj

     文件    4117988  2011-06-17 00:43  histSP\Debug\histSP.pch

     文件     467968  2011-06-17 10:10  histSP\Debug\histSP.pdb

     文件     156672  2011-06-17 10:10  histSP\Debug\vc60.idb

     文件      94208  2011-06-17 10:08  histSP\Debug\vc60.pdb

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

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

     文件       3486  2011-06-17 10:10  histSP\histSP.dsp

     文件        535  2011-06-17 10:10  histSP\histSP.dsw

     文件      41984  2011-06-17 10:10  histSP\histSP.ncb

     文件      48640  2011-06-17 10:10  histSP\histSP.opt

     文件        801  2011-06-17 10:10  histSP\histSP.plg

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

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

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

              5405450                    17


评论

共有 条评论