資源簡(jiǎn)介
圖像檢索源代碼 花了極大的利器收集到的!希望對(duì)大家有用!!

代碼片段和文件信息
#include?“stdafx.h“
#include?“math.h“
#include?“canny.h“
#pragma?warning?(disable:4244)
//??一維高斯分布函數(shù),用于平滑函數(shù)中生成的高斯濾波系數(shù)
void?CreatGauss(double?sigma?double?**pdKernel?int?*pnWidowSize)
{
LONG?i;
//數(shù)組中心點(diǎn)
int?nCenter;
//數(shù)組中一點(diǎn)到中心點(diǎn)距離
double?dDis;
//中間變量
double?dValue;
double?dSum;
dSum?=?0;
//?[-3*sigma3*sigma]?以內(nèi)數(shù)據(jù),會(huì)覆蓋絕大部分濾波系數(shù)
*pnWidowSize?=?1+?2*ceil(3*sigma);
nCenter?=?(*pnWidowSize)/2;
*pdKernel?=?new?double[*pnWidowSize];
//生成高斯數(shù)據(jù)
for(i=0;i<(*pnWidowSize);i++)
{
dDis?=?double(i?-?nCenter);
dValue?=?exp(-(1/2)*dDis*dDis/(sigma*sigma))/(sqrt(2*3.1415926)*sigma);
(*pdKernel)[i]?=?dValue;
dSum+=dValue;
}
//歸一化
for(i=0;i<(*pnWidowSize);i++)
{
(*pdKernel)[i]/=dSum;
}
}
//用高斯濾波器平滑原圖像
void?GaussianSmooth(SIZE?sz?LPBYTE?pGray?LPBYTE?pResult?double?sigma)
{
LONG?x?y;
LONG?i;
//高斯濾波器長(zhǎng)度
int?nWindowSize;
//窗口長(zhǎng)度
int?nLen;
//一維高斯濾波器
double?*pdKernel;
//高斯系數(shù)與圖像數(shù)據(jù)的點(diǎn)乘
double?dDotMul;
//濾波系數(shù)總和?
double?dWeightSum;
double?*pdTemp;
pdTemp?=?new?double[sz.cx*sz.cy];
//產(chǎn)生一維高斯數(shù)據(jù)
CreatGauss(sigma?&pdKernel?&nWindowSize);
nLen?=?nWindowSize/2;
//x方向?yàn)V波
for(y=0;y {
for(x=0;x {
dDotMul?=?0;
dWeightSum?=?0;
for(i=(-nLen);i<=nLen;i++)
{
//判斷是否在圖像內(nèi)部
if((i+x)>=0?&&?(i+x) {
dDotMul+=(double)pGray[y*sz.cx+(i+x)]?*?pdKernel[nLen+i];
dWeightSum?+=?pdKernel[nLen+i];
}
}
pdTemp[y*sz.cx+x]?=?dDotMul/dWeightSum;
}
}
//y方向?yàn)V波
for(x=0;?x {
for(y=0;?y {
dDotMul?=?0;
dWeightSum?=?0;
for(i=(-nLen);i<=nLen;i++)
{
if((i+y)>=0?&&?(i+y) {
dDotMul?+=?(double)pdTemp[(y+i)*sz.cx+x]*pdKernel[nLen+i];
dWeightSum?+=?pdKernel[nLen+i];
}
}
pResult[y*sz.cx+x]?=?(unsigned?char)dDotMul/dWeightSum;
}
}
delete?[]pdKernel;
pdKernel?=?NULL;
delete?[]pdTemp;
pdTemp?=?NULL;
}
//?方向?qū)?shù)求梯度
void?Grad(SIZE?sz?LPBYTE?pGrayint?*pGradX?int?*pGradY?int?*pMag)
{
LONG?yx;
//x方向的方向?qū)?shù)
for(y=1;y {
for(x=1;x {
pGradX[y*sz.cx?+x]?=?(int)(?pGray[y*sz.cx+x+1]-pGray[y*sz.cx+?x-1]??);
}
}
//y方向方向?qū)?shù)
for(x=1;x {
for(y=1;y {
pGradY[y*sz.cx?+x]?=?(int)(pGray[(y+1)*sz.cx?+x]?-?pGray[(y-1)*sz.cx?+x]);
}
}
//求梯度
//中間變量
double?dSqt1;
double?dSqt2;
for(y=0;?y {
for(x=0;?x {
//二階范數(shù)求梯度
dSqt1?=?pGradX[y*sz.cx?+?x]*pGradX[y*sz.cx?+?x];
dSqt2?=?pGradY[y*sz.cx?+?x]*pGradY[y*sz.cx?+?x];
pMag[y*sz.cx+x]?=?(int)(sqrt(dSqt1+dSqt2)+0.5);
}
}
}
//非最大抑制
void?NonmaxSuppress(int?*pMag?int?*pGradX?int?*pGradY?SIZE?sz?LPBYTE?pNSRst)
{
LONG?yx;
int?nPos;
//梯度分量
int?gx;
int?gy;
//中間變量
int?g1g2g3g4;
double?weight;
double?dTmpdTmp1dTmp2;
//設(shè)置圖像邊緣為不可能的分界點(diǎn)
for(x=0;x
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????374??2010-05-03?15:45??HUMomoents.h
?????文件??????49004??2010-05-18?22:29??ImageRetrieval.aps
?????文件???????5045??2010-05-18?22:57??ImageRetrieval.clw
?????文件???????5648??2010-05-18?16:03??ImageRetrieval.cpp
?????文件???????6867??2010-05-18?17:02??ImageRetrieval.dsp
?????文件????????553??2010-04-29?18:52??ImageRetrieval.dsw
?????文件???????1543??2010-05-01?21:50??ImageRetrieval.h
?????文件?????443392??2010-05-18?23:06??ImageRetrieval.ncb
?????文件??????69632??2010-05-18?23:06??ImageRetrieval.opt
?????文件???????1637??2010-05-18?22:51??ImageRetrieval.plg
?????文件??????15651??2010-05-18?22:29??ImageRetrieval.rc
?????文件????????893??2010-05-06?14:25??ImageRetrieval.sln
????..A..H.?????17408??2010-05-06?14:34??ImageRetrieval.suo
?????文件??????14866??2010-05-06?14:25??ImageRetrieval.vcproj
?????文件???????1411??2010-05-06?14:34??ImageRetrieval.vcproj.John-PC.Administrator.user
?????文件???????3898??2010-05-18?16:03??ImageRetrievalDoc.cpp
?????文件???????3384??2010-05-18?21:49??ImageRetrievalDoc.h
?????文件???????4051??2010-05-16?20:36??ImageRetrievalView.cpp
?????文件???????2151??2010-05-01?16:48??ImageRetrievalView.h
?????文件?????208896??2010-05-15?13:52??ImagesDBs.mdb-new
?????文件???????1787??1997-01-30?06:33??JCONFIG.H
?????文件??????12776??1999-05-04?09:18??Jmorecfg.h
?????文件??????14281??2010-05-19?10:06??Jpeg.cpp
?????文件???????2603??2010-05-10?21:39??Jpeg.h
?????文件??????45443??1996-01-13?19:13??JPEGLIB.H
?????文件?????238698??2000-01-31?17:28??Jpeglib2.lib
?????文件???????7341??2010-05-19?10:06??KD_Tree.h
?????文件???????5475??2010-05-17?15:14??KMeans.cpp
?????文件???????1710??2010-05-19?10:07??KMeans.h
?????文件??????44715??2010-05-18?21:59??MainFrm.cpp
............此處省略36個(gè)文件信息
評(píng)論
共有 條評(píng)論