DSI光流属于密集光流方法,强调降低时间复杂性 主要提出三点: 1.Fast inverse search for correspondences 普通光流优化函数
由于这个函数根据梯度下降,taylor展开,梯度为0对应目标增量位移,方程2求导其中涉及每次海塞矩阵更新,计算量大,所以本文
注意:真实位移大小不能大于窗口大小 2.Fast optical flow with multi-scale reasoning 建立图像金字塔,随着尺度减小,位移相应缩小,但是窗口大小固定。 将图像分为多个网格,取样网格点,网格大小,网格重叠率 将图像做合适下采样,最粗层假设初值为0,根据公式3迭代更新位移值,以后每层初值则是低层位移值乘相应缩放比 上头网格得到的是每个取样点的位移值,属于稀疏光流,为了得到密集光流,文中采用 代求点位移值跟周围取样值的加权,加权权重跟代求点是跟块重叠率和方程1残差有关 3.Fast Variational refinement 快速变分增强,跟HS光流目标方程类似,全局光流速度慢但是效果好 数据项,数据梯度项,平滑项
#include<iostream> #include "opencv2/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include <opencv2/video/tracking.hpp> #include<ctime> using namespace std; using namespace cv; int main(int argc, char** argv) { Mat image1 = imread(argv[1]); Mat image2 = imread(argv[2]); //转为灰度图 Mat ref, cur; cvtColor(image1, ref, COLOR_BGR2GRAY); cvtColor(image2, cur, COLOR_BGR2GRAY); cout << image1.rows << endl; cout << image1.cols << endl; clock_t start, end; start = clock(); //光流 Ptr<DenseOpticalFlow> algorithm = DISOpticalFlow::create(DISOpticalFlow::PRESET_MEDIUM); Mat flow, flow_uv[2]; Mat mag, ang; Mat hsv_split[3], hsv; Mat rgb; algorithm->calc(ref, cur, flow); end = clock(); double endtime = (double)(end - start) / CLOCKS_PER_SEC; cout << "Total time:" << endtime << endl; //s为单位 split(flow, flow_uv); multiply(flow_uv[1], -1, flow_uv[1]); cartToPolar(flow_uv[0], flow_uv[1], mag, ang, true); string filename = "E:\\DSItest.txt"; ofstream fout(filename); for (int i = 0; i < mag.rows; i++) { for (int j = 0; j < mag.cols; j++) { fout << mag.at<float>(i, j) << "\t"; } fout << std::endl; } normalize(mag, mag, 0, 1, NORM_MINMAX); hsv_split[0] = ang; hsv_split[1] = mag; hsv_split[2] = Mat::ones(ang.size(), ang.type()); merge(hsv_split, 3, hsv); cvtColor(hsv, rgb, COLOR_HSV2BGR); cv::Mat rgbU; rgb.convertTo(rgbU, CV_8UC3, 255, 0); cv::imshow("DISOpticalFlow", rgbU); cv::imwrite("./DIStest.jpg", rgbU); cv::waitKey(1); waitKey(0); }参考文献: 1.Kroeger T , Timofte R , Dai D , et al. Fast Optical Flow using Dense Inverse Search[J]. 2016. 2.Baker S , Matthews I . Lucas-Kanade 20 Years On: A Unifying Framework[J]. International Journal of Computer Vision, 2004, 56(3):221-255.