资源简介
图像配准 opencv vc++ 程序 图像融合
代码片段和文件信息
#ifdef _CH_
#pragma package
#endif
#ifndef _EiC
#include
#include “stdlib.h“
#include “string.h“
#include “malloc.h“
#include “math.h“
#include
#include
#include
#include
#include
#include
#include
#endif
#ifdef _EiC
#define WIN32
#endif
#define NUMSIZE 2
#define GAUSSKERN 3.5
#define PI 3.14159265358979323846
/**
Sigma of base image -- See D.L.‘s paper.
*/
#define INITSIGMA 0.5
/**
Sigma of each octave -- See D.L.‘s paper.
*/
#define SIGMA sqrt(3)//1.6//
/**
Number of scales per octave. See D.L.‘s paper.
*/
#define SCALESPEROCTAVE 2
#define MAXOCTAVES 4
int numoctaves;
/**
Double image size before looking searching for keypoints
Doubling finds more keypoints but takes longer. See
D.L.‘s paper.
*/
#define CONTRAST_THRESHOLD 0.02
#define CURVATURE_THRESHOLD 10.0
#define DOUBLE_base_IMAGE_SIZE 1
#define peakRelThresh 0.8
#define LEN 128
CvMemStorage* storage = 0; // temporary storage
//Gaussian金字塔感觉用二维指针较简单
/* Data structure for a float image.
*/
typedef struct ImageSt { /*金字塔每一层*/
float levelsigma;
int levelsigmalength;
float absolute_sigma;
CvMat *Level;
} ImageLevels;
typedef struct ImageSt1 { /*金字塔每一阶梯*/
int row col; /* Dimensions of image. */
float subsample;
ImageLevels *Octave;
} ImageOctaves;
ImageOctaves *DOGoctaves; //DOG pyr
ImageOctaves *mag_thresh ;
ImageOctaves *mag_pyr ;
ImageOctaves *grad_pyr ;
/* Data structure for a keypoint. Lists of keypoints are linked
by the “next“ field.*/
typedef struct KeypointSt
{
float row col; /* 反馈回原图像大小,特征点的位置 */
float sxsy; /* 金字塔中特征点的位置*/
int octavelevel;/*金字塔中,特征点所在的阶梯、层次*/
float scale orimag; /*所在层的尺度sigma主方向orientation (range [-PIPI]),以及幅值*/
float *descrip; /*特征描述字指针:128维或32维等*/
struct KeypointSt *next;/* Pointer to next keypoint in list. */
} *Keypoint;
//定义特征点具体变量
Keypoint keypoints=NULL; //用于临时存储特征点的位置等
Keypoint keyDescriptors=NULL; //用于最后的确定特征点以及特征描述字
//图像处理基本函数,其实其实可以用OPENCV的函数代替
//void NormalizeImage(CvMat *src);
CvMat * halfSizeImage(CvMat * im); //缩小图像:下采样
CvMat * doubleSizeImage(CvMat * im); //扩大图像:最近临方法
CvMat * doubleSizeImage2(CvMat * im); //扩大图像:线性插值
float getPixelBI(CvMat * im float col float row);//双线性插值函数
void normalizeVec(float* vec int dim);//向量归一化
CvMat* GaussianKernel2D(float sigma); //得到2维高斯核
void normalizeMat(CvMat* mat) ; //矩阵归一化
float* GaussianKernel1D(float sigma int dim) ; //得到1维高斯核
float ConvolveLocWidth(float* kernel int dim CvMat * src int x int y) ; //在具体像素处宽度方向进行高斯卷积
void Convolve1DWidth(float* kern int dim CvMat * src CvMat * dst) ; //在整个图像宽度方向进行1D高斯卷积
float ConvolveLocHeight(float* kernel int dim CvMat * src int x int y) ; //在具体像素处高度方向进行高斯卷积
void Convolve1DHeight(float* kern int dim CvMat * src
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 72310 2005-07-07 12:54 SIFT\data\box.pgm
文件 233055 2006-08-24 13:02 SIFT\data\box.sift
文件 10060 2006-10-25 09:15 SIFT\data\circle.pgm
文件 1362 2006-10-25 09:42 SIFT\data\circle.sift
文件 464954 2006-04-04 21:45 SIFT\data\img3.jpg
文件 467808 2006-04-04 21:45 SIFT\data\img5.jpg
文件 275111 2006-05-01 12:51 SIFT\data\landscape-a.jpg
文件 304723 2006-05-01 12:52 SIFT\data\landscape-b.jpg
文件 11101 2006-11-02 13:33 SIFT\data\nest.png
文件 17462 2006-11-02 14:27 SIFT\data\nest2.bmp
文件 3377 2008-06-28 19:14 SIFT\SIFT.dsp
文件 205824 2008-06-28 22:26 SIFT\Debug\vc60.idb
文件 135168 2008-06-28 19:22 SIFT\Debug\vc60.pdb
文件 5095848 2008-06-28 19:14 SIFT\Debug\SIFT.pch
文件 500736 2008-06-28 19:22 SIFT\Debug\SIFT.pdb
文件 256280 2008-06-28 19:22 SIFT\Debug\SIFT.ilk
文件 225326 2008-06-28 19:22 SIFT\Debug\SIFT.exe
文件 80298 2008-06-28 19:22 SIFT\Debug\SIFT.obj
文件 3098 2008-06-28 19:22 SIFT\SIFT.plg
文件 464954 2006-04-04 21:45 SIFT\img3.jpg
文件 275111 2006-05-01 12:51 SIFT\landscape_a.jpg
文件 52579 2008-06-28 19:22 SIFT\SIFT.cpp
目录 0 2006-12-12 15:14 SIFT\data
目录 0 2008-06-28 19:14 SIFT\Debug
目录 0 2006-12-12 15:21 SIFT
----------- --------- ---------- ----- ----
9156545 25
- 上一篇:VC++直方图均衡化显示图像及直方图
- 下一篇:21点游戏C++模拟
评论
共有 条评论