基于相位相关算法的全景图像拼接,效率高,亲测成功,有样图
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 47955 2016-07-28 22:12 360cameracacheC_0.jpg
文件 55265 2016-07-28 22:12 360cameracacheC_1.jpg
文件 56103 2016-07-28 22:12 360cameracacheC_10.jpg
文件 56367 2016-07-28 22:12 360cameracacheC_11.jpg
文件 56218 2016-07-28 22:12 360cameracacheC_12.jpg
文件 55906 2016-07-28 22:12 360cameracacheC_13.jpg
文件 55919 2016-07-28 22:12 360cameracacheC_14.jpg
文件 55924 2016-07-28 22:12 360cameracacheC_15.jpg
文件 55761 2016-07-28 22:12 360cameracacheC_16.jpg
文件 55959 2016-07-28 22:12 360cameracacheC_17.jpg
文件 55777 2016-07-28 22:12 360cameracacheC_18.jpg
文件 55778 2016-07-28 22:12 360cameracacheC_19.jpg
文件 55349 2016-07-28 22:12 360cameracacheC_2.jpg
文件 55734 2016-07-28 22:12 360cameracacheC_20.jpg
文件 55448 2016-07-28 22:12 360cameracacheC_21.jpg
文件 55292 2016-07-28 22:12 360cameracacheC_22.jpg
文件 55055 2016-07-28 22:12 360cameracacheC_23.jpg
文件 55280 2016-07-28 22:12 360cameracacheC_24.jpg
文件 54923 2016-07-28 22:12 360cameracacheC_25.jpg
文件 54835 2016-07-28 22:12 360cameracacheC_26.jpg
文件 54498 2016-07-28 22:12 360cameracacheC_27.jpg
文件 53965 2016-07-28 22:12 360cameracacheC_28.jpg
文件 51873 2016-07-28 22:12 360cameracacheC_29.jpg
文件 54880 2016-07-28 22:12 360cameracacheC_3.jpg
文件 51690 2016-07-28 22:12 360cameracacheC_30.jpg
文件 51622 2016-07-28 22:12 360cameracacheC_31.jpg
文件 51448 2016-07-28 22:12 360cameracacheC_32.jpg
文件 51153 2016-07-28 22:12 360cameracacheC_33.jpg
文件 51658 2016-07-28 22:12 360cameracacheC_34.jpg
文件 51020 2016-07-28 22:12 360cameracacheC_35.jpg
............此处省略290个文件信息
// Camer360.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include “fftw3.h“
#include
#include
#include
#include
#include
#include “opencv2/highgui/highgui.hpp“
#define Min(xy) ((x)>(y)?(y):(x))
#define Max(xy) ((x)>(y)?(x):(y))
using namespace std;
using namespace cv;
int cttime basetime;
//----------------------------------------------
#define PI 3.14159265
#define NPOS 3
float rat0 = 0.035; // 匹配参数,H方向用于图像配准的面积比例取值范围[0 1.0]
float pos0[NPOS] = {0.20.50.8}; // 匹配参数,选取用于图像配准的roi图像中心位置,H方向,取值范围[0.5*rat 1.0-0.5*rat]
float rat1 = 0.05f;//(1080*0.05) //图像拼接参数, W方向在pos1位置截取rat1比例的图像,用于拼接全景图
float pos1 = 0.5; //图像拼接参数, W方向在pos1位置截取rat1比例的图像,用于拼接全景图
//-----------------------------------------------
void PhaseCorrelation2D(const BYTE *signal //原信号
const BYTE *pattern //带配准信号
int nRow //图像的高
int nCol //图像的宽
int &height_offset //高的偏移量
int &width_offset) //宽的偏移量
{
fftw_complex *signal_img = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nRow*nCol);
fftw_complex *pattern_img = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nRow*nCol);
for (int i = 0; i < nRow*nCol; i++)
{
signal_img[i][0] = signal[i];
signal_img[i][1] = 0;
}
for (int j = 0; j < nRow*nCol; j++)
{
pattern_img[j][0] = pattern[j];
pattern_img[j][1] = 0;
}
// 对两幅图像傅里叶变换
fftw_plan signal_forward_plan = fftw_plan_dft_2d(nRow nCol signal_img signal_img
FFTW_FORWARD FFTW_ESTIMATE);
fftw_plan pattern_forward_plan = fftw_plan_dft_2d(nRow nCol pattern_img pattern_img
FFTW_FORWARD FFTW_ESTIMATE);
fftw_execute(signal_forward_plan);
fftw_execute(pattern_forward_plan);
// 求互功率谱
fftw_complex *cross_img = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nRow*nCol);
double temp;
for (int i = 0; i < nRow*nCol; i++)
{
cross_img[i][0] = (signal_img[i][0] * pattern_img[i][0]) -
(signal_img[i][1] * (-1.0*pattern_img[i][1]));
cross_img[i][1] = (signal_img[i][0] * (-1.0*pattern_img[i][1])) +
(signal_img[i][1] * pattern_img[i][0]);
temp = sqrt(cross_img[i][0] * cross_img[i][0] + cross_img[i][1] * cross_img[i][1]) + 0.001;
cross_img[i][0] /= temp;
cross_img[i][1] /= temp;
}
//对互功率谱求反变换
fftw_plan cross_backward_plan = fftw_plan_dft_2d(nRow nCol cross_img cross_img
FFTW_BACKWARD FFTW_ESTIMATE);
fftw_execute(cross_backward_plan);
// 释放内存
fftw_destroy_plan(signal_forward_plan);
fftw_destroy_plan(pattern_forward_plan);
fftw_destroy_plan(cross_backward_plan);
fftw_free(signal_img);
fftw_free(pattern_img);
double *cross_real=new double[nRow*nCol];
for (int i = 0; i < nRow*nCol; i++)
cross_real[i] = cross_img[i][0];
fftw_free(cross_img);
int max_loc = 0;//准备存放最大值的位置坐标(注意,只有一个值)
double max_vlaue = 0.0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 47955 2016-07-28 22:12 360cameracacheC_0.jpg
文件 55265 2016-07-28 22:12 360cameracacheC_1.jpg
文件 56103 2016-07-28 22:12 360cameracacheC_10.jpg
文件 56367 2016-07-28 22:12 360cameracacheC_11.jpg
文件 56218 2016-07-28 22:12 360cameracacheC_12.jpg
文件 55906 2016-07-28 22:12 360cameracacheC_13.jpg
文件 55919 2016-07-28 22:12 360cameracacheC_14.jpg
文件 55924 2016-07-28 22:12 360cameracacheC_15.jpg
文件 55761 2016-07-28 22:12 360cameracacheC_16.jpg
文件 55959 2016-07-28 22:12 360cameracacheC_17.jpg
文件 55777 2016-07-28 22:12 360cameracacheC_18.jpg
文件 55778 2016-07-28 22:12 360cameracacheC_19.jpg
文件 55349 2016-07-28 22:12 360cameracacheC_2.jpg
文件 55734 2016-07-28 22:12 360cameracacheC_20.jpg
文件 55448 2016-07-28 22:12 360cameracacheC_21.jpg
文件 55292 2016-07-28 22:12 360cameracacheC_22.jpg
文件 55055 2016-07-28 22:12 360cameracacheC_23.jpg
文件 55280 2016-07-28 22:12 360cameracacheC_24.jpg
文件 54923 2016-07-28 22:12 360cameracacheC_25.jpg
文件 54835 2016-07-28 22:12 360cameracacheC_26.jpg
文件 54498 2016-07-28 22:12 360cameracacheC_27.jpg
文件 53965 2016-07-28 22:12 360cameracacheC_28.jpg
文件 51873 2016-07-28 22:12 360cameracacheC_29.jpg
文件 54880 2016-07-28 22:12 360cameracacheC_3.jpg
文件 51690 2016-07-28 22:12 360cameracacheC_30.jpg
文件 51622 2016-07-28 22:12 360cameracacheC_31.jpg
文件 51448 2016-07-28 22:12 360cameracacheC_32.jpg
文件 51153 2016-07-28 22:12 360cameracacheC_33.jpg
文件 51658 2016-07-28 22:12 360cameracacheC_34.jpg
文件 51020 2016-07-28 22:12 360cameracacheC_35.jpg
............此处省略290个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)