• 大小: 351KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: 图像检索  

资源简介

图像检索源代码 花了极大的利器收集到的!希望对大家有用!!

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “math.h“
#include “canny.h“

#pragma warning (disable:4244)

//  一维高斯分布函数,用于平滑函数中生成的高斯滤波系数
void CreatGauss(double sigma double **pdKernel int *pnWidowSize)
{

LONG i;

//数组中心点
int nCenter;

//数组中一点到中心点距离
double dDis;

//中间变量
double dValue;
double dSum;
dSum = 0;

// [-3*sigma3*sigma] 以内数据,会覆盖绝大部分滤波系数
*pnWidowSize = 1+ 2*ceil(3*sigma);

nCenter = (*pnWidowSize)/2;

*pdKernel = new double[*pnWidowSize];

//生成高斯数据
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;

//高斯滤波器长度
int nWindowSize;

//窗口长度
int nLen;

//一维高斯滤波器
double *pdKernel;

//高斯系数与图像数据的点乘
double dDotMul;

//滤波系数总和 
double dWeightSum;

double *pdTemp;
pdTemp = new double[sz.cx*sz.cy];

//产生一维高斯数据
CreatGauss(sigma &pdKernel &nWindowSize);

nLen = nWindowSize/2;

//x方向滤波
for(y=0;y {
for(x=0;x {
dDotMul = 0;
dWeightSum = 0;
for(i=(-nLen);i<=nLen;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方向滤波
for(x=0; x {
for(y=0; y {
dDotMul = 0;
dWeightSum = 0;
for(i=(-nLen);i<=nLen;i++)
{
if((i+y)>=0 && (i+y)< sz.cy)
{
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;

}

// 方向导数求梯度
void Grad(SIZE sz LPBYTE pGrayint *pGradX int *pGradY int *pMag)
{
LONG yx;

//x方向的方向导数
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方向方向导数
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 {
//二阶范数求梯度
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;

//设置图像边缘为不可能的分界点
for(x=0;x

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

     文件        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个文件信息

评论

共有 条评论