opencv是一个很强大的图形库,实现了一系列经典算法,用来做图像处理是得心应手。
最近由于项目需求,需要做一下数字稳像,去除视频抖动。
不过,虽然这不是一个新的技术,但实用的代码还真是不多,很多都只有一半能用,一半只能看。
进行数据稳像的一般方法:
-
计算图像的特征点
特征点有很多的计算方式,如sift/surf,corner(角点),block(块)等方式。
其中最准确的要属sift了,但速度也最慢。surf是sift的一个加速算法,通常能快3~5倍。而corner、block检测就很快了,但稳定性比sift/surf略差。
-
计算匹配点
这里采用Lucas Kanade optical flow算法来跟踪特征点,以计算出匹配的点。
-
计算变换矩阵
-
对图像进行变换
上面的方法,基本都在opencv中有实现,可以方便的使用。
代码如下(下载:http://download.csdn.net/detail/wenrenwang/4997013):
/*
we use optical flow algorithm to stabilize image
we stabilize all frames according to f