• 大小: 520KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: SIFT  GPU  

资源简介

著名的SIFT算法,但是经过改造,可以充分利用GPU进行运算加速。

资源截图

代码片段和文件信息

/*
*  Jan Prokaj
*  May 11 2005
*/
#include “canny.h“

//basic algorithm no performance improvements
Image *getCannyEdgesClassic(Image *original float sigma float percent) {

int i j;
int    p q;
double maskval sum1 sum2;
Image  *outImage *peaks *canny;
double **maskX;
double **maskY;
double **outpicX; //stores convolution x-result
double **outpicY; //stores convolution y-result
int    mr maskSize;
int    centY centX;
double normalizeFactor;
float  max;
float  xDiff yDiff;
double angle;
int   hist[256] = {0};
int   sum;
float picPercent HI LO;

mr = (int)(sigma * 3);
maskSize = 2*mr + 1;
centY = centX = mr;

/* initializations */
maskX = (double **) malloc(maskSize*sizeof(double *));
maskY = (double **) malloc(maskSize*sizeof(double *));
if(maskX == NULL || maskY == NULL)
return NULL;
for(i = 0; i < maskSize; ++i) {
maskX[i] = (double *) malloc(maskSize*sizeof(double));
maskY[i] = (double *) malloc(maskSize*sizeof(double));
}

outpicX = (double **) malloc(original->height*sizeof(double *));
outpicY = (double **) malloc(original->height*sizeof(double *));
if(outpicX == NULL || outpicY == NULL)
return NULL;
for(i = 0; i < original->height; ++i) {
outpicX[i] = (double *) malloc(original->width*sizeof(double));
outpicY[i] = (double *) malloc(original->width*sizeof(double));
}

outImage = (Image *) malloc(sizeof(Image));
outImage->width = original->width;
outImage->height = original->height;
outImage->pic = (float **) malloc(outImage->height*sizeof(float *));
if(outImage->pic == NULL)
return NULL;
for(i = 0; i < outImage->height; ++i) {
outImage->pic[i] = (float *) malloc(outImage->width*sizeof(float));
}

/*generate masks*/
normalizeFactor = 1.0/(2.0*M_PI*sigma*sigma);
for(p=-mr;p<=mr;p++) {
for(q=-mr;q<=mr;q++) {
maskval = -1*normalizeFactor*(q/(sigma*sigma))*exp(-1*((p*p + q*q)/(2*(sigma*sigma))));
maskX[p+centY][q+centX] = maskval;
maskval = -1*normalizeFactor*(p/(sigma*sigma))*exp(-1*((p*p + q*q)/(2*(sigma*sigma))));
maskY[p+centY][q+centX] = maskval;
}
}

/*convolve masks with picture*/
for(i=mr; i < original->height - mr; i++) {
for(j=mr; j< original->width - mr; j++) {
sum1 = 0.0;
sum2 = 0.0;
for (p=-mr;p<=mr;p++) {
for (q=-mr;q<=mr;q++) {
sum1 += original->pic[i+p][j+q] * maskX[p+centY][q+centX];
sum2 += original->pic[i+p][j+q] * maskY[p+centY][q+centX];
}
}
outpicX[i][j] = sum1;
outpicY[i][j] = sum2;
}
}

/*compute strength/magnitude*/
for(i = 0; i < original->height; i++) {
for(j = 0; j < original->width; j++) {
   outImage->pic[i][j] = 0.0f;
   if(i >= mr && i < original->height - mr &&
j >= mr && j < original->width - mr) {
outImage->pic[i][j]=(float) sqrt((outpicX[i][j]*outpicX[i][j]) +
(outpicY[i][j]*outpicY[i][j]));
}
}
}

if(percent < 0 || percent > 1)
percent = 0.20;

/* scale to (01) for canny -- necessary? */
max = 0.0;
for(i = 0; i < outImage->height; ++i) {

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

     文件      29501  2005-06-04 04:26  my_sift\canny.c

     文件       1305  2005-06-04 04:26  my_sift\canny.h

     文件       8714  2006-01-22 21:41  my_sift\Doxyfile

     文件       8363  2005-06-04 04:26  my_sift\gaussconv.c

     文件        339  2005-06-04 04:26  my_sift\gaussconv.h

     文件       1978  2006-01-22 21:41  my_sift\html\annotated.html

     文件     107282  2006-01-22 21:41  my_sift\html\canny_8c-source.html

     文件      27662  2006-01-22 21:41  my_sift\html\canny_8c.html

     文件        145  2006-01-22 21:36  my_sift\html\canny_8c_4c4e2579e69a9e7182257f7ea208c8fc_cgraph.map

     文件         32  2006-01-22 21:36  my_sift\html\canny_8c_4c4e2579e69a9e7182257f7ea208c8fc_cgraph.md5

     文件        939  2006-01-22 21:36  my_sift\html\canny_8c_4c4e2579e69a9e7182257f7ea208c8fc_cgraph.png

     文件         13  2006-01-22 21:36  my_sift\html\canny_8c_63c9aa8f230332b74c465f7b87ab9884_cgraph.map

     文件         32  2006-01-22 21:36  my_sift\html\canny_8c_63c9aa8f230332b74c465f7b87ab9884_cgraph.md5

     文件        490  2006-01-22 21:36  my_sift\html\canny_8c_63c9aa8f230332b74c465f7b87ab9884_cgraph.png

     文件         13  2006-01-22 21:36  my_sift\html\canny_8c_91781b4f3f1b370659b6745ced7e7e58_cgraph.map

     文件         32  2006-01-22 21:36  my_sift\html\canny_8c_91781b4f3f1b370659b6745ced7e7e58_cgraph.md5

     文件        446  2006-01-22 21:36  my_sift\html\canny_8c_91781b4f3f1b370659b6745ced7e7e58_cgraph.png

     文件        348  2006-01-22 21:36  my_sift\html\canny_8c_b010cc7c70e7128fc29660a6ca435572_cgraph.map

     文件         32  2006-01-22 21:36  my_sift\html\canny_8c_b010cc7c70e7128fc29660a6ca435572_cgraph.md5

     文件       2002  2006-01-22 21:36  my_sift\html\canny_8c_b010cc7c70e7128fc29660a6ca435572_cgraph.png

     文件         79  2006-01-22 21:36  my_sift\html\canny_8c_c91541ae4dc8defdbf52a80206dc3255_cgraph.map

     文件         32  2006-01-22 21:36  my_sift\html\canny_8c_c91541ae4dc8defdbf52a80206dc3255_cgraph.md5

     文件        560  2006-01-22 21:36  my_sift\html\canny_8c_c91541ae4dc8defdbf52a80206dc3255_cgraph.png

     文件        196  2006-01-22 21:34  my_sift\html\canny_8c__incl.map

     文件         32  2006-01-22 21:34  my_sift\html\canny_8c__incl.md5

     文件       3266  2006-01-22 21:34  my_sift\html\canny_8c__incl.png

     文件       8736  2006-01-22 21:41  my_sift\html\canny_8h-source.html

     文件      30367  2006-01-22 21:41  my_sift\html\canny_8h.html

     文件        145  2006-01-22 21:36  my_sift\html\canny_8h_4c4e2579e69a9e7182257f7ea208c8fc_cgraph.map

     文件         32  2006-01-22 21:36  my_sift\html\canny_8h_4c4e2579e69a9e7182257f7ea208c8fc_cgraph.md5

............此处省略334个文件信息

评论

共有 条评论