采用VC++和opencv对图像进行直方图均衡化,并显示图像及直方图,带有图片,能成功运行
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
#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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)