核线影像生成(摄影测量)以及极线校正(计算机视觉)

本文介绍了航摄影像的密集匹配过程,特别是核线影像生成及其在减少搜索空间中的作用。首先,通过内定向参数和相对方位元素计算生成核线影像,简化二维搜索问题。然后,探讨了极线校正方法,如Fusiello校正法,用于进一步优化匹配效率。这些技术在摄影测量和计算机视觉中用于提高匹配速度和精度。

核线影像生成

  《航摄影像密集匹配的研究进展与展望》一文中介绍:航摄影像的密集匹配可以对单个立体影像对、也可以对多度重叠的多视影像序列进行。在获得影像的内外方位元素或者影像的相对方位元素的前提下,实施过程大体分为核线影像生成、匹配代价计算、匹配代价聚合、视差计算与精华、三维点云生成几个主要步骤。其一般流程可描述为下图:

  由上面的描述,我们可以知道,核线影像生成是航摄影像密集匹配的第一步,目的是利用核线相关的该概念将沿x、y方向搜索同名像点的二维相关问题转化为沿核线搜索同名像点。为了生成核线影像,需要影像的内外方位元素或者相对方位元素。这里我们可以分别用相对方位元素或外方位元素来生成核线影像。

>使用相对方位元素或外方位元素生成核线影像(以两幅影像为例)

需要的数据:相对方位元素(可以通过两幅影像特征匹配得到的匹配点对计算得到)、两幅影像的各四个框标点的扫描坐标和框标坐标(数字影像四角的像素坐标即为扫描坐标)。

过程:1.求解内定向参数;2.确定核线影像的范围;3.建立“水平”核线影像的像素坐标与像平面坐标系之间的变换关系;4.生成核线影像。

代码实现思路:
1.求解内定参数:这个过程主要是建立倾斜影像的像平面坐标系与其扫描坐标系之间的关系。原始倾斜影像的扫描坐标系与其像平面坐标系之间的变换关系可采用仿射变换。设影像的扫描坐标系为(c,r),影像像平面坐标系为 (x,y),则根据仿射变换公式 ,有如下关系 :

其中 a0, a1, a2, b0,b1 , b2 为影像内定向的6个内定向参数。一般利用影像四个框标点坐标(x,y)组成误差方程,根据最小二乘平差求解这6个内定向参数。

2.建立“水平”核线影像的像素坐标与像平面坐标系之间的变换关系:通过建立两者之间的变换关系可以确定核线影像的范围,以及可以生成核线影像。

像空间坐标转换到像空间辅助坐标系的关系为:

像空间辅助坐标系转换核线影像像空间的关系:

原始像空间坐标系到核线影像的像空间的转换关系则为:

反过来,核线影像像空间坐标系到原始影像的关系则为:

代码实现:

int main()
{
   
   
	//读取原始影像对
	Mat img2 = imread("2.tif");
	Mat img1 = imread("1.tif");
	

	if (img1.empty() || img2.empty())
	{
   
   
		cout << "image open error!!" << endl;
		return -1;
	}
	//获取原始影像对宽高
	// 获取影像大小
	int n_Width_Left = img1.cols;
	int n_Height_Left = img1.rows;
	int n_Width_Right = img2.cols;
	int n_Height_Right = img2.rows;
	/* 以下是内定向部分 */
	//即通过左右倾斜像片的各自四个框标点的扫描坐标和框标坐标完成内定向6个参数的确定。
	double delta = xxx;
	double f = xxx;
	double x0 = xxx;
	double y0 = xxx;
	//扫描坐标系下框表坐标的行列号
	double kuangbiao[8] = {
   
    0,0,n_Width_Left,0,n_Width_Left,n_Height_Left,0,n_Height_Left};
	//以框表点在像平面坐标系下的坐标
	double scanpos[8] = {
   
    xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx};
	//左右像片内定向参数
	double np[6] = {
   
    0.0 };
	Internal_ori(scanpos, kuangbiao, np, delta);

	
	//已有数据获取核线的像空间坐标转换到原始影像的像空间坐标
	//相对方位元素
	double BX = xxx;
	double BY = xxx;
	double BZ = xxx;
	double B = sqrt(BX * BX + BY * BY + BZ * BZ);
	double m_T = atan2(BY, BX);
	double m_V = asin(BZ / B);

	Mat Rtemp(3, 3, CV_64FC1);
	Rtemp.at<double>(0, 0) = cos(m_T) * cos
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值