资源简介
基于SURF算法的图像拼接处理,运用RANSAC算法,单向性等原理进行图像拼接。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
//读入图像并进行灰度处理
Mat srcImage1 = imread(“1.jpg“0);
Mat srcImage2 = imread(“2.jpg“0);
//cout<<“img1矩阵大小:“< //cout<<“img2矩阵大小:“< Mat tmpImage1img1;
Mat tmpImage2img2;
//对原图像进行两次缩放处理
pyrDown(srcImage1tmpImage1Size(srcImage1.cols/2srcImage1.rows/2));
pyrDown(tmpImage1img1Size(tmpImage1.cols/2tmpImage1.rows/2));
pyrDown(srcImage2tmpImage2Size(srcImage2.cols/2srcImage2.rows/2));
pyrDown(tmpImage2img2Size(tmpImage2.cols/2tmpImage2.rows/2));
imshow(“Src1“img1);
imshow(“Src2“img2);
//imwrite(“12.jpg“img1);
//imwrite(“13.jpg“img2);
//第一步,用SURF算子检测关键点;
int minHessian=400;
SurfFeatureDetector detector(minHessian);
std::vector m_LeftKeym_RightKey;//构造2个专门由点组成的点向量用来存储特征点
detector.detect(img1m_LeftKey);//将img1图像中检测到的特征点存储起来放在m_LeftKey中
detector.detect(img2m_RightKey);//同理
cout<<“图像1特征点的个数:“< cout<<“图像2特征点的个数:“< //计算特征向量
SurfDescriptorExtractor extractor;//定义描述子对象
cv::Mat descriptors1 descriptors2;//存放特征向量的矩阵
extractor.compute(img1m_LeftKeydescriptors1);
extractor.compute(img2m_RightKeydescriptors2);
cout<<“图像1特征描述矩阵大小:“<riptors1.size()
<<“,特征向量个数:“<riptors1.rows<<“,维数:“<riptors1.cols< cout<<“图像2特征描述矩阵大小:“<riptors2.size()
<<“,特征向量个数:“<riptors2.rows<<“,维数:“<riptors2.cols< //画出特征点
Mat img_m_LeftKeyimg_m_RightKey;
drawKeypoints(img1m_LeftKeyimg_m_LeftKeyScalar::all(-1)0); //cvScalar(25500)画的圈圈是蓝色,对应于特征点的颜色DrawMatchesFlags::DRAW_RICH_KEYPOINTS表示关键点上圆圈的尺寸与特征的尺度成正比,对应于0,是“标志位”的意思
drawKeypoints(img2m_RightKeyimg_m_RightKeyScalar::all(-1)0);
imshow(“Keysrc1“img_m_LeftKey);
imshow(“Keysrc2“img_m_RightKey);
imwrite(“图像1的特征点.jpg“img_m_LeftKey);
imwrite(“图像2的特征点.jpg“img_m_RightKey);
//匹配两幅图像的描述子
//用burte force进行匹配特征向量
BruteForceMatcher>matcher;//定义一个burte force matcher对象
vector matches;//定义数据类型为matches的vector容器
matcher.match( descriptors1 descriptors2 matches );//匹配两个图像的特征矩阵
cout<<“Match个数:“< //计算匹配结果中距离的最大和最小值
//距离是指两个特征向量间的欧式距离,表明两个特征的差异,值越小表明两个特征点越接近
double max_dist = 0;
double min_dist = 100;
for(int i=0; i {
double dist = matches[i].distance;
if(dist < min_dist) min_dist = dist;
if(dist > max_dist) max_dist = dist;
}
cout<<“最大距离:“< cout<<“最小距离:“<
//筛选出较好的匹配点
vector goodMatches;
for(int i=0; i {
if(matche
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-03-19 21:44 Project17\
目录 0 2015-03-15 12:29 Project17\Debug\
文件 179712 2015-03-19 21:39 Project17\Debug\Project17.exe
文件 737700 2015-03-19 21:39 Project17\Debug\Project17.ilk
文件 2739200 2015-03-19 21:39 Project17\Debug\Project17.pdb
目录 0 2015-03-19 21:39 Project17\Project17\
文件 17498112 2015-03-19 21:44 Project17\Project17.sdf
文件 894 2015-01-23 11:00 Project17\Project17.sln
文件 22016 2015-03-19 21:44 Project17\Project17.v11.suo
文件 1261106 2015-03-08 12:36 Project17\Project17\1.jpg
文件 1272244 2015-03-08 12:36 Project17\Project17\2.jpg
文件 1300181 2015-03-08 12:36 Project17\Project17\3.jpg
文件 1284305 2015-03-08 12:36 Project17\Project17\4.jpg
文件 1313911 2015-03-08 12:36 Project17\Project17\5.jpg
文件 1305019 2015-03-08 12:36 Project17\Project17\6.jpg
目录 0 2015-03-19 21:39 Project17\Project17\Debug\
文件 560 2015-03-19 21:39 Project17\Project17\Debug\cl.command.1.tlog
文件 22222 2015-03-19 21:39 Project17\Project17\Debug\CL.read.1.tlog
文件 402 2015-03-19 21:39 Project17\Project17\Debug\CL.write.1.tlog
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
文件 2 2015-03-19 21:39 Project17\Project17\Debug\li
............此处省略109个文件信息
相关资源
- 全景图像拼接图像拼接作业
- 基于相位相关算法的全景图像拼接
- opencv 360度n张图像拼接,任意角度两
- 基于SIFT特征的全景图像拼接(Qt)
- 18年最新立体图像拼接
- 眼底图像拼接
- OPENCV实现ORB/SURF/SIFT + RANSAC 图像自动拼
- OpenCvSharp 读摄像头及图像拼接功能
- 车载全景环视系统相关文档
- ENVI遥感图像进行图像拼接的多光谱遥
- OpenCV图像拼接原理解析和分模块实现
- 基于机器视觉的全景图像拼接
- 图像拼接技术的由来、现状以及拼接
- 基于halcon实现图像拼接技术
- 全景图像拼接技术研究现状综述
- 基于fast的图像拼接
- GreenWarps
- 基于多单应性矩阵的图像拼接
- 航拍图片全景拼接代码
- delphi图像拼接
- 中国地图及各省轮廓(可分).pdf
- 图像拼接 综述与算法综述
- 基于SIFT的图像拼接算法
- IDL 开发图像拼接程序
- 全景图像拼接基于SIFT特征-Qt工程
- 基于opencv的图像拼接生成全景图C代码
评论
共有 条评论