欢迎来到天天文库
浏览记录
ID:57974323
大小:6.85 MB
页数:28页
时间:2020-09-04
《《sift程序详解》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SIFT特征提取过程中的核心函数PARTONE.物理架构opencv_contrib-3.1.0(版本号)/modules/xfeature2d/opencv_xfeature2dproject/src/sift.cppcvnamespacexfeature2dnamespaceFeature2D父类/基类SIFT类feature2d的子类父类/基类SIFT_Impl类SIFT的子类PARTTWO.运行架构主函数intmain(){//创建SIFT_Impl类指针Ptrf2d=xfeatu
2、res2d::SIFT::create();Matimg_1=imread("1.jpg");//读入图片vectorkeypoints_1;//用于存放检测到的关键点的容器f2d->detect(img_1,keypoints_1);//检测出关键点Matdescriptors_1;f2d->compute(img_1,keypoints_1,descriptors_1);//计算描述子waitKey(0);//等待任意按键按下}Feature2D::detect(InputArrayim
3、age,CV_OUTstd::vector&keypoints,InputArraymask=noArray())SIFT_Impl::detectAndCompute(image,mask,keypoints,noArray(),false);SIFT_Impl::detectAndCompute(image,noArray(),keypoints,descriptors,true);Feature2D::compute(InputArrayimage,std::vector4、nt>&keypoints,OutputArraydescriptors)调用了检测关键点函数调用了计算描述子函数createInitialImage()图像初始化函数buildGaussianPyramid()构建高斯金字塔函数buildDoGPyramid()构建DOG金字塔函数SIFT_Impl::detectAndCompute(image,mask,keypoints,noArray(),false);findScaleSpaceExtrema()检测尺度空间极值函数adjustLocalExtrem5、a()调整极值函数calcOrientationHist()计算关键点主方向函数函数功能:检测图片中的关键点①参数image:输入图片②参数mask:无掩模③参数keypoints:关键点容器④参数noArray():无描述子⑤参数false:不使用给定的关键点PARTTREE.检测关键点部分图像尺度空间的构建1.1图像初始化函数函数功能:将输入图像转化为灰度图,并设置图像初始尺度c++:staticMatcreateInitialImage(constMat&img,booldoubleImageSize,f6、loatsigma)入口参数:①参数constMat&img:输入图像②参数booldoubleImageSize:是否将初始图像扩大两倍,若值为1,则图像扩大为原来两倍③参数floatsigma:设定图像的初始尺度返回值:无说明:一个图像的尺度空间L(x,y,σ),定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ)卷积产生:其中:lowe把初始图像的尺度I(x,y)设置为0.5即:I(x,y)=I(x,y,0.5),那么由L(x,y,σ1)得到L(x,y,σ2),即由尺度为σ1的图像生成尺7、度为σ2的图像的公式为:图像尺度空间的构建1.2构建图像金字塔函数:函数功能:将输入图像作为金字塔初始图像,通过不断进行高斯模糊和降采样后的图片存放在Mat类容器中c++:voidSIFT_Impl::buildGaussianPyramid(constMat&base,std::vector&pyr,intnOctaves)const入口参数:①参数constMat&base:输入图像②参数std::vector&pyr:用于存储金字塔图像的容器③参数intnOctaves:金字塔的组数返8、回值:无图像尺度空间的构建1.3构建图像DOG金字塔函数:函数功能:将构建好的高斯金字塔相邻层相减后构成DOG金字塔存放在Mat类容器中voidSIFT_Impl::buildDoGPyramid(conststd::vector&gpyr,std::vector&dogpyr)const入口参数:①参数:vector&gpyr:存放高斯金字塔图片的容器②
4、nt>&keypoints,OutputArraydescriptors)调用了检测关键点函数调用了计算描述子函数createInitialImage()图像初始化函数buildGaussianPyramid()构建高斯金字塔函数buildDoGPyramid()构建DOG金字塔函数SIFT_Impl::detectAndCompute(image,mask,keypoints,noArray(),false);findScaleSpaceExtrema()检测尺度空间极值函数adjustLocalExtrem
5、a()调整极值函数calcOrientationHist()计算关键点主方向函数函数功能:检测图片中的关键点①参数image:输入图片②参数mask:无掩模③参数keypoints:关键点容器④参数noArray():无描述子⑤参数false:不使用给定的关键点PARTTREE.检测关键点部分图像尺度空间的构建1.1图像初始化函数函数功能:将输入图像转化为灰度图,并设置图像初始尺度c++:staticMatcreateInitialImage(constMat&img,booldoubleImageSize,f
6、loatsigma)入口参数:①参数constMat&img:输入图像②参数booldoubleImageSize:是否将初始图像扩大两倍,若值为1,则图像扩大为原来两倍③参数floatsigma:设定图像的初始尺度返回值:无说明:一个图像的尺度空间L(x,y,σ),定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ)卷积产生:其中:lowe把初始图像的尺度I(x,y)设置为0.5即:I(x,y)=I(x,y,0.5),那么由L(x,y,σ1)得到L(x,y,σ2),即由尺度为σ1的图像生成尺
7、度为σ2的图像的公式为:图像尺度空间的构建1.2构建图像金字塔函数:函数功能:将输入图像作为金字塔初始图像,通过不断进行高斯模糊和降采样后的图片存放在Mat类容器中c++:voidSIFT_Impl::buildGaussianPyramid(constMat&base,std::vector&pyr,intnOctaves)const入口参数:①参数constMat&base:输入图像②参数std::vector&pyr:用于存储金字塔图像的容器③参数intnOctaves:金字塔的组数返
8、回值:无图像尺度空间的构建1.3构建图像DOG金字塔函数:函数功能:将构建好的高斯金字塔相邻层相减后构成DOG金字塔存放在Mat类容器中voidSIFT_Impl::buildDoGPyramid(conststd::vector&gpyr,std::vector&dogpyr)const入口参数:①参数:vector&gpyr:存放高斯金字塔图片的容器②
此文档下载收益归作者所有