OpenCv学习0825,基于匹配算法的图像平滑拼接

本文介绍了如何使用OpenCV进行图像的平滑拼接,主要依赖于特征匹配技术。首先提取图像重叠区域的特征点,筛选强匹配点,然后通过这些匹配点获取映射矩阵,进行图像形变。最后,利用映射矩阵对图像进行平滑处理,实现自然的拼接效果。目前实现了横向拼接,纵向拼接还在完善中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像的平滑拼接,基于的技术理论是特征匹配,将两张图重叠的地方特征匹配,选取强匹配特征点,根据选取到的匹配点,将图片进行形变,,然后复制到同一张图片上,实现拼接,最后对拼接处进行优化处理,使拼接处更加自然。听上去不难,实现还是不容易的。

第一部分,特征点匹配,这部分直接采用特征匹配的相同方法即可

//灰度图转换  
	Mat image1, image2;
	cvtColor(image01, image1, COLOR_RGB2GRAY);
	cvtColor(image02, image2, COLOR_RGB2GRAY);


	//提取特征点    
	Ptr<xfeatures2d::SURF> surf = xfeatures2d::SURF::create(1000);
	vector<KeyPoint> keyPoint1, keyPoint2;
	Mat imageDesc1, imageDesc2;
	surf->detect(image01, keyPoint1);
	surf->detect(image02, keyPoint2);
	surf->compute(image1, keyPoint1, imageDesc1);
	surf->compute(image2, keyPoint2, imageDesc2);


	FlannBasedMatcher matcher;
	vector<vector<DMatch> > matchePoints;
	vector<DMatch> GoodMatchePoints;

	vector<Mat> train_desc(1, imageDesc1);
	matcher.add(train_desc);
	matcher.train();

	matcher.knnMatch(imageDesc2, matchePoints, 2);
	//cout << "total match points: " << matchePoints.size() << endl;

	// Lowe's algorithm,获取优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值