資源簡介
vc代碼實現圖像直方圖均衡化,并顯示原始圖像和處理后圖像的直方圖。

代碼片段和文件信息
#include?“cv.h“
#include?“highgui.h“
void?main()
{
char*?filename;
IplImage*?frame;
IplImage*?hframe;
IplImage*?histogram;
????IplImage*?chistogram;
int?fheightfwidthfstepfdepth;
uchar?*fdata*hdata*chdata;
int?a[256]={0};
int?b[256]={0};
int?c[256]={0};
int?ijm;
????//顯示原始灰度級圖像
filename=“coin.bmp“;
hframe=cvLoadImage(filename1);
fdepth=hframe->depth;
frame?=?cvCreateImage(cvGetSize(hframe)?fdepth?1?);
cvCvtColor(hframeframeCV_BGR2GRAY);
cvNamedWindow(“處理前圖像“1);
cvShowImage(“處理前圖像“frame);
????//處理過程
fheight=frame->height;
fwidth=frame->width;
fstep=frame->widthStep/sizeof(uchar);
fdata=(uchar?*)frame->imageData;
for?(i=0;i {??
for?(m=0;m<=255;m++)
{
if?(fdata[i*fstep+j]==m)
{
????????????????a[m]++;
????break;
}
}
}
int?maxnum=0;
for(i=0;i<256;i++)
{
if?(maxnum {
??????????maxnum=a[i];
}
}
//原始灰度級圖像的直方圖
histogram=cvCreateImage(cvSize(256maxnum/100+1)fdepth?1?);
hdata=(uchar?*)histogram->imageData;
int?s;
s=histogram->widthStep/sizeof(uchar);
for?(i=0;i<(maxnum/100);i++)for?(j=0;j<256;j++)
{
hdata[i*s+j]=255;
}
for(i=0;i<256;i++)
{
for(j=(maxnum-1)/100;j>=(maxnum-1-a[i])/100;j--)
hdata[j*s+i]=0;
}
cvNamedWindow(“處理前圖像直方圖“1);
cvShowImage(“處理前圖像直方圖“histogram);
for?(i=0;i<=255;i++)//像素個數疊加
{
for?(j=0;j<=i;j++)
b[i]+=a[j];
}
?????for?(i=0;i<=255;i++)//變換后灰度級
?????{
?b[i]=b[i]*255/(fheight*fwidth);
?????}
?for?(i=0;i ?{
fdata[i*fstep+j]=b[fdata[i*fstep+j]];
?}
?cvNamedWindow(“處理后圖像“1);
?cvShowImage(“處理后圖像“frame);
?????//處理后圖像的直方圖顯示
?for?(i=0;i ?{??
?for?(m=0;m<=255;m++)
?{
?if?(fdata[i*fstep+j]==m)
?{
?c[m]++;
?break;
?}
?
?}
?}
?chistogram=cvCreateImage(cvSize(256maxnum/100+1)fdepth?1?);
?chdata=(uchar?*)chistogram->imageData;
?for?(i=0;i ?{?????
?chdata[i*s+j]=255;
}
?for(i=0;i<256;i++)
?{
?for(j=(maxnum-1)/100;j>=(maxnum-1-c[i])/100;j--)
?{
?chdata[j*s+i]=0;
?}
}
?//直方圖均衡化后圖像顯示
cvNamedWindow(“處理后圖像直方圖“1);
cvShowImage(“處理后圖像直方圖“chistogram);
?
cvWaitKey(0);
?? cvDestroyWindow(“處理前圖像“);
cvDestroyWindow(“處理后圖像“);
????cvDestroyWindow(“處理前圖像直方圖“);
????cvDestroyWindow(“處理后圖像直方圖“);
????cvReleaseImage(&frame);
cvReleaseImage(&hframe);
cvReleaseImage(&histogram);
cvReleaseImage(&chistogram);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????82742??2010-03-23?19:39??直方圖均衡化和直方圖顯示vc\homework1\coin.bmp
?????文件??????17530??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\Debug\enhancement.obj
?????文件?????172084??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\Debug\homework1.exe
?????文件?????185980??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\Debug\homework1.ilk
?????文件????4127884??2010-04-10?16:37??直方圖均衡化和直方圖顯示vc\homework1\Debug\homework1.pch
?????文件?????517120??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\Debug\homework1.pdb
?????文件?????173056??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\Debug\vc60.idb
?????文件?????110592??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\Debug\vc60.pdb
?????文件????????249??2010-04-07?16:30??直方圖均衡化和直方圖顯示vc\homework1\enhancement.asp
?????文件???????2782??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\enhancement.cpp
?????文件???????4204??2010-04-07?16:30??直方圖均衡化和直方圖顯示vc\homework1\homework1.dsp
?????文件????????541??2010-04-07?15:58??直方圖均衡化和直方圖顯示vc\homework1\homework1.dsw
?????文件??????41984??2010-04-14?17:20??直方圖均衡化和直方圖顯示vc\homework1\homework1.ncb
?????文件??????48640??2010-04-14?17:20??直方圖均衡化和直方圖顯示vc\homework1\homework1.opt
?????文件???????1206??2010-04-13?21:44??直方圖均衡化和直方圖顯示vc\homework1\homework1.plg
?????文件????????258??2010-04-21?20:46??直方圖均衡化和直方圖顯示vc\homework1\說明.txt
?????目錄??????????0??2010-04-21?20:51??直方圖均衡化和直方圖顯示vc\homework1\Debug
?????目錄??????????0??2010-04-21?20:51??直方圖均衡化和直方圖顯示vc\homework1
?????目錄??????????0??2010-04-21?20:51??直方圖均衡化和直方圖顯示vc
-----------?---------??----------?-----??----
??????????????5486852????????????????????19
評論
共有 條評論