资源简介

基于相位相关算法的全景图像拼接,效率高,亲测成功,有样图

资源截图

代码片段和文件信息

// 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  360camera\cache\C_0.jpg

     文件      55265  2016-07-28 22:12  360camera\cache\C_1.jpg

     文件      56103  2016-07-28 22:12  360camera\cache\C_10.jpg

     文件      56367  2016-07-28 22:12  360camera\cache\C_11.jpg

     文件      56218  2016-07-28 22:12  360camera\cache\C_12.jpg

     文件      55906  2016-07-28 22:12  360camera\cache\C_13.jpg

     文件      55919  2016-07-28 22:12  360camera\cache\C_14.jpg

     文件      55924  2016-07-28 22:12  360camera\cache\C_15.jpg

     文件      55761  2016-07-28 22:12  360camera\cache\C_16.jpg

     文件      55959  2016-07-28 22:12  360camera\cache\C_17.jpg

     文件      55777  2016-07-28 22:12  360camera\cache\C_18.jpg

     文件      55778  2016-07-28 22:12  360camera\cache\C_19.jpg

     文件      55349  2016-07-28 22:12  360camera\cache\C_2.jpg

     文件      55734  2016-07-28 22:12  360camera\cache\C_20.jpg

     文件      55448  2016-07-28 22:12  360camera\cache\C_21.jpg

     文件      55292  2016-07-28 22:12  360camera\cache\C_22.jpg

     文件      55055  2016-07-28 22:12  360camera\cache\C_23.jpg

     文件      55280  2016-07-28 22:12  360camera\cache\C_24.jpg

     文件      54923  2016-07-28 22:12  360camera\cache\C_25.jpg

     文件      54835  2016-07-28 22:12  360camera\cache\C_26.jpg

     文件      54498  2016-07-28 22:12  360camera\cache\C_27.jpg

     文件      53965  2016-07-28 22:12  360camera\cache\C_28.jpg

     文件      51873  2016-07-28 22:12  360camera\cache\C_29.jpg

     文件      54880  2016-07-28 22:12  360camera\cache\C_3.jpg

     文件      51690  2016-07-28 22:12  360camera\cache\C_30.jpg

     文件      51622  2016-07-28 22:12  360camera\cache\C_31.jpg

     文件      51448  2016-07-28 22:12  360camera\cache\C_32.jpg

     文件      51153  2016-07-28 22:12  360camera\cache\C_33.jpg

     文件      51658  2016-07-28 22:12  360camera\cache\C_34.jpg

     文件      51020  2016-07-28 22:12  360camera\cache\C_35.jpg

............此处省略290个文件信息

评论

共有 条评论