資源簡(jiǎn)介
著名的SIFT算法,但是經(jīng)過(guò)改造,可以充分利用GPU進(jìn)行運(yùn)算加速。

代碼片段和文件信息
/*
*??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? 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?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?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?height?-?mr;?i++)?{
for(j=mr;?jwidth?-?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?height;?i++)?{
for(j?=?0;?j?width;?j++)?{
?? outImage->pic[i][j]?=?0.0f;
?? if(i?>=?mr?&&?i?height?-?mr?&&
j?>=?mr?&&?j?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?height;?++i)?{
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????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個(gè)文件信息
- 上一篇:微信小程序小游戲教程視頻代碼.zip
- 下一篇:patch.exe
評(píng)論
共有 條評(píng)論