1.一种基于单应性矩阵的实时视频稳像方法,其特征在于,步骤如下:
(1)使用距离约束的Harris角点检测算法获得分布均匀的帧图像特征点集
计算抖动视频序列图像的Harris特征点,先将当前彩色图像变换成灰度图像,使用Harris角点检测算法获得角点,并用距离r进行约束,获得均匀分布的帧图像特征点集;
(2)利用分层仿射约束的光流跟踪算法跟踪下一帧角点的坐标
1)对长宽分别为w,h的图像建立5层尺度金字塔,第L层图像对应的长宽为
第0层为原始图像尺度,同时,第L层对应的角点坐标为:
2)在最底层跟踪同一尺度下的帧间角点,将跟踪问题转化为帧间图像窗口SSD函数,求最小值:
其中,I(x,y),J(x+υx,y+υy)分别表示t1,t1+Δt时刻的图像;(2·ωx+1)×(2·ωy+1)表示以(px,py)为中心的邻域窗口尺寸;像素点(px,py)经过时间Δt的运动矢量为(υx,υy);
将跟踪问题进一步转化为最终求解得到第L层对应的角点坐标(xL,yL);
3)对第L层跟踪得到的角点集合进行仿射约束,利用误差公式:
其中,FL是下一帧第L层全局单应性模型,其形式为公式(5);是FL对应
的尺度变化系数;
表示当前帧第L层角点坐标;
表示通过跟踪得到的下一帧第L层对应的坐标;
第L层对应的误差阈值:
当εL大于对应阈值thL,使用校正公式:
设置初始的误差th0=3,校正后第L层角点坐标
4)第L-1层的搜索起点为对第L-1层的角点重复上述2)-3)的跟踪过程,通过反复迭代得到第0层即原始图像尺度下一帧对应的角点坐标;
(3)使用RANSAC迭代算法计算原始尺度下前后帧全局单应性矩阵H0,矩阵H0的形式为
(4)分离前后帧的全局单应性矩阵中的各个运动量,使用卡尔曼滤波器获得相应平滑的主动运动量
1)令H′=(H0)-1,对H′分离运动量;待分离的运动量包含相对前一帧的平移T(x,y)、2D旋转角度θ、2D缩放Z和单应性矩阵的畸变D;
2)使用四点变换的方法进行实际运动量的分离,定义原始的矩形ABCD的长宽对应的是视频帧的长宽,面积为S,使用H′对矩形变换得到A′B′C′D′,面积为S′,此时缩放量:
计算A′B′和C′D′在水平方向的夹角θ1和θ3,A′D′和B′C′在垂直方向的夹角θ4和θ2,用均值法减小由畸变带来的2D角度误差:
使用已经得到的Z和θ对四边形A′B′C′D′进行补偿变换,去掉旋转和缩放;然后计算变换前后的中心分别为C(x,y),C′(x,y),得到平移量为:
T(x,y)=C(x,y)-C′(x,y) (10)
3)对已经得到的平移T、旋转θ和缩放Z使用卡尔曼滤波器进行滤波得到对应的主动运动量IT、Iθ和IZ,其中对于二维矢量T对应卡尔曼滤波器的状态方程为:
对应的观测矩阵为:
标量θ,Z对应的卡尔曼滤波器的状态方程:
观测矩阵:
(1 0 0) (14)
其中dt是采样间隔;
4)上述运动量均为2D,单应性变换会带来实际视角变化而产生的图像畸变,对畸变进行校正;使用已有的2D的平移T、旋转θ和缩放Z对A′B′C′D′进行变换去掉2D平面运动,得到A″B″C″D″,A″B″C″D″只存在由3D视角变化带来的畸变;使用平移T建立的卡尔曼滤波器对变换后的四个顶点坐标A″B″C″D″分别进行滤波得到AiBiCiDi;AiBiCiDi到ABCD表示相机3D视角变化对应的主动变化量,即所需的畸变校正量ID;
(5)利用已经得到的全局单应性及各个平滑的主动运动量计算当前帧的稳像变换模型CN,对图像进行稳像变换
1)当前帧以当前帧的前一帧做基准的单应性变换HN,2D平面运动补偿矩阵motionHN,3D视角变化对应的畸变补偿变换distortHN,利用上述变换得到当前帧参考当前帧的前一帧的补偿变换:
TN=motionHN·distortHN·HN (15)
为了获得连续稳定的视频帧输出,以第一帧作为全局参考帧,因此最终当前帧的稳像变换模型为:
CN=T1·...·TN-1·TN (16)
使用CN对当前帧进行变换获得稳定的帧图像。