91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11.74MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2023-07-28
  • 語言: 其他
  • 標(biāo)簽: ICP??

資源簡介

本代碼由opencv實現(xiàn),每一步驟都附有詳細(xì)的說明,文件包中除了實現(xiàn)代碼之外還包含一篇ICP的經(jīng)典文章,注釋中的公式指的就是文章中的公式

資源截圖

代碼片段和文件信息

#include?“ICP.h“

void?ReadPoint3D(const?char?*filename?vector?&P)
{
FILE?*fp?=?fopen(filename?“r“);
char?str[10];

while(fscanf(fp?“%s“?str)?!=?EOF)
{
if(strcmp(str?“v“)?==?0)
{
Point3D?p;
fscanf(fp?“%lf%lf%lf%d%d%d“?&p.x?&p.y?&p.z?&p.r?&p.g?&p.b);

P.push_back(p);
}
}

fclose(fp);
}

void?SelectPoint3D(const?char?*filename?vector?&P?int?ratio)
{
FILE?*fp?=?fopen(filename?“r“);
char?str[10];
int?i=0;

while(fscanf(fp?“%s“?str)?!=?EOF)
{
if(strcmp(str?“v“)?==?0)
{
Point3D?p;
fscanf(fp?“%lf%lf%lf%d%d%d“?&p.x?&p.y?&p.z?&p.r?&p.g?&p.b);

if(i%ratio?==?0)
P.push_back(p);

i++;
}
}

fclose(fp);
}

void?ICP(vector?&model?vector?&data?double?*R?double?*T?double?e)
{
vector?Y?P;
vector::iterator?it1?it2;
double?pre_d?=?0.0?d?=?0.0;
int?round?=?0;
P?=?data;

do?
{
pre_d?=?d;

double?R1[9]?T1[3];

FindClosestPointSet(model?P?Y);//尋求model到data中的對應(yīng)點,并把它存在Y中

Point3D?_mean_P?_mean_Y;

CalculateMeanPoint3D(P?_mean_P);//求質(zhì)心坐標(biāo)
CalculateMeanPoint3D(Y?_mean_Y);

double?m[9]?A[9]?delta[3];

for(int?i=0;?i<9;?i++)
{
m[i]?=?0;
}

it1?=?P.begin();
it2?=?Y.begin();
for(;?it1!=P.end();?it1++?it2++)
{
double?p[3]?y[3]?mul[9];

p[0]?=?it1->x;
p[1]?=?it1->y;
p[2]?=?it1->z;

y[0]?=?it2->x;
y[1]?=?it2->y;
y[2]?=?it2->z;

MatrixMul(p?y?mul?3?1?13);//mul=?p*y
MatrixAdd(m?mul?3?3);//m=m+mul
}

for(int?i=0;?i<9;?i++)
{
m[i]?=?m[i]/(double)P.size();///求均值
}

double?mean_P[3]?mean_Y[3]?mul[9];

mean_P[0]?=?_mean_P.x;
mean_P[1]?=?_mean_P.y;
mean_P[2]?=?_mean_P.z;

mean_Y[0]?=?_mean_Y.x;
mean_Y[1]?=?_mean_Y.y;
mean_Y[2]?=?_mean_Y.z;

MatrixMul(mean_P?mean_Y?mul?3?1?1?3);//mul=mean_P*mean_Y
MatrixDiv(m?mul?3?3);//m=m-mul,
//從75行到107行相當(dāng)于單位四元素中公式(22),(23)的求解過程
//接下來求反對稱矩陣及其特征值特征向量

double?m_T[9];
MatrixTran(m?m_T?3?3);///求m的轉(zhuǎn)置

for(int?i=0;?i<9;?i++)
{
A[i]?=?m[i];
}//A=m
//公式(25)中delta的求解過程
MatrixDiv(A?m_T?3?3);//A=A-m_T

delta[0]?=?A[5];
delta[1]?=?A[6];
delta[2]?=?A[1];

//公式(25)中主對角線上元素的求解
double?tr?=?MatrixTR(m?3);//求m的跡
MatrixAdd(m?m_T?3?3);///m=m+m_T

double?I3[9]?=?{1?0?0?0?1?0?0?0?1};
I3[0]?=?tr;
I3[4]?=?tr;
I3[8]?=?tr;

MatrixDiv(m?I3?3?3);//m=m-I3

double?Q[16];
Q[0]?=?tr;

for(int?i=1;?i<=3;?i++)
Q[i]?=?delta[i-1];

for(int?i=1;?i<=3;?i++)
Q[i*4]?=?delta[i-1];

for(int?i=1;?i<=3;?i++)
{
Q[i*4?+?1]?=?m[4*(i-1)?+?0];
Q[i*4?+?2]?=?m[4*(i-1)?+?1];
Q[i*4?+?3]?=?m[4*(i-1)?+?2];
}
//求公式(25)中反對稱矩陣的最大特征值及其特征向量
double?eigen?qr[4];
MatrixEigen(Q?&eigen?qr?4);
//根據(jù)特征向量求旋轉(zhuǎn)矩陣,公式(21)
CalculateRotation(qr?R1);

//158到167行為求平移向量的過程,公式(26)
double?qt[3];
for(int?i=0;?i<

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-11-05?21:34??ICP1\
?????文件?????1716108??2013-04-15?16:23??ICP1\A?method?for?regitration?of?3D?modle.pdf
?????目錄???????????0??2013-11-01?14:53??ICP1\Debug\
?????文件??????557568??2013-11-01?15:19??ICP1\Debug\ICP1.exe
?????文件?????1265108??2013-11-01?15:19??ICP1\Debug\ICP1.ilk
?????文件?????2788352??2013-11-01?15:19??ICP1\Debug\ICP1.pdb
?????文件????????8636??2013-11-04?14:49??ICP1\ICP.cpp
?????文件????????1226??2012-04-29?20:41??ICP1\ICP.h
?????目錄???????????0??2013-10-30?21:06??ICP1\ICP1\
?????目錄???????????0??2013-11-01?15:19??ICP1\ICP1\Debug\
?????文件???????34908??2013-11-01?14:53??ICP1\ICP1\Debug\CL.read.1.tlog
?????文件????????1020??2013-11-01?14:53??ICP1\ICP1\Debug\CL.write.1.tlog
?????文件??????236258??2013-11-01?15:19??ICP1\ICP1\Debug\ICP.obj
?????文件????????2360??2013-11-01?14:53??ICP1\ICP1\Debug\ICP1.Build.CppClean.log
?????文件?????????406??2013-11-01?14:53??ICP1\ICP1\Debug\ICP1.exe.embed.manifest
?????文件?????????472??2013-11-01?14:53??ICP1\ICP1\Debug\ICP1.exe.embed.manifest.res
?????文件?????????381??2013-11-01?15:19??ICP1\ICP1\Debug\ICP1.exe.intermediate.manifest
?????文件??????????79??2013-11-01?15:19??ICP1\ICP1\Debug\ICP1.lastbuildstate
?????文件?????????812??2013-11-01?15:19??ICP1\ICP1\Debug\ICP1.log
?????文件?????????198??2013-11-01?14:53??ICP1\ICP1\Debug\ICP1_manifest.rc
?????文件????????1910??2013-11-01?14:53??ICP1\ICP1\Debug\cl.command.1.tlog
?????文件???????????2??2013-11-01?14:53??ICP1\ICP1\Debug\link-cvtres.read.1.tlog
?????文件???????????2??2013-11-01?14:53??ICP1\ICP1\Debug\link-cvtres.write.1.tlog
?????文件???????????2??2013-11-01?14:53??ICP1\ICP1\Debug\link.12136-cvtres.read.1.tlog
?????文件???????????2??2013-11-01?14:53??ICP1\ICP1\Debug\link.12136-cvtres.write.1.tlog
?????文件???????????2??2013-11-01?14:53??ICP1\ICP1\Debug\link.12136.read.1.tlog
?????文件???????????2??2013-11-01?14:53??ICP1\ICP1\Debug\link.12136.write.1.tlog
?????文件????????1820??2013-11-01?14:53??ICP1\ICP1\Debug\link.command.1.tlog
?????文件????????3588??2013-11-01?14:53??ICP1\ICP1\Debug\link.read.1.tlog
?????文件????????1016??2013-11-01?14:53??ICP1\ICP1\Debug\link.write.1.tlog
?????文件???????91065??2013-11-01?15:19??ICP1\ICP1\Debug\main.obj
............此處省略15個文件信息

評論

共有 條評論