图像配准拼接算法

目录

一,问题背景

二,简单场景——绝对配准

1,基本代码

2,减少配准

3,实时配准

三,实际场景——非绝对配准

1,最小生成树

2,最优化


一,问题背景

在扫描一个区域图像时,由于各种原因,需要把一个区域划分成若干个小区域,各自单独扫描成图像。

由于扫描设备对小区域的定位存在误差,不能直接把小图拼成大图,需要配准拼接算法进行处理。

上游的把区域划分成小区域的算法,叫扫描规划算法。

配准拼接算法和扫描规划算法是息息相关,互相配合。

扫描规划算法会给出所有小图的理论位置(即所有小区域的位置),配准拼接算法会基于图像算出所有图片的实际位置,理论位置和实际位置的差值就是扫描设备的定位误差。

配准拼接算法的原理就是计算所有相邻两张小图的相对位置关系(即配准算法),再基于这个数据计算所有小图的位置。

因为配准算法的需要,扫描规划算法会让所有相邻两张小图之间都有重合区域。

二,简单场景——绝对配准

如果配准算法是绝对准确可靠的,那么根据配准算法的结果,用搜索算法即可得到完整大图。

1,基本代码

输入所有图片信息,计算所有配准结果,再拼接大图。


struct ImageInfo
{
	//图片内容和坐标等数据
};
struct Shift
{
	int x, y;//两张图片的配准结果
};
struct Pos
{
	int x, y;//小图坐标
};

class RegistrationStitch
{
public:
	RegistrationStitch(int row, int col, vector<ImageInfo>images) :row{ row }, col{ col }, images{ images }{}
	ImageInfo GetStitchImage()
	{
		Registration();
		vector<Pos> allPos = GetPos(shiftLR, shiftUD);
		return GetStitchImage(images, allPos);
	}
private:
	int GetId(int r, int c) //所有小图编号0到row*col-1
	{
		return r * col + c;
	}
	void Registration()//配准算法
	{
		for (int r = 0; r < row; r++) {
			for (int 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值