久久久久久久久精品一区二区三区-狠狠婷婷亚洲中文综合久久A-精品99日产一卡2卡三卡4-五月天中文字幕mv在线

頂部圖片
022-23715128

聯(lián)系方式

CONTACT
  • 公眾號(hào)
    新浪微博
  • 中國(guó) ● 天津

    聯(lián)系地址:天津市西青區(qū)華鼎高科技發(fā)展中心

  • 公司座機(jī):022-23715128

    24小時(shí)熱線(xiàn):15522534786

    聯(lián)系QQ:2085429559

    公司郵箱:gvt@techlego.com

當(dāng)前位置: 首頁(yè) > 新聞資訊 > 行業(yè)新聞 >
新聞資訊NEWS

日期:2025-03-21 13:44 瀏覽次數(shù): 作者:來(lái)高科技
拼接性能優(yōu)化:輕量化實(shí)現(xiàn)兩個(gè)角度點(diǎn)云數(shù)據(jù)的特征拼接技術(shù)解析 分享到:

 

引言

在三維數(shù)據(jù)處理領(lǐng)域,特征拼接技術(shù)扮演著至關(guān)重要的角色。通過(guò)將不同角度掃描的數(shù)據(jù)準(zhǔn)確快速拼接,不僅可以提高點(diǎn)云數(shù)據(jù)的完整性,還能簡(jiǎn)化數(shù)據(jù)處理流程。本文旨在介紹一種精準(zhǔn)的特征拼接方法,解析如何利用特定軟件工具完成這一過(guò)程,并確保最終點(diǎn)云數(shù)據(jù)的準(zhǔn)確性和坐標(biāo)一致性。

為了實(shí)現(xiàn)給定兩個(gè)角度點(diǎn)云數(shù)據(jù)的特征拼接并將拼接后的數(shù)據(jù)導(dǎo)入到第一個(gè)角度點(diǎn)云數(shù)據(jù)中,我們可以采取以下步驟

 
 

特征拼接函數(shù)原型

TECHLEGO-來(lái)高科技

void feature_align(vector_double res)
1、搭建程序框架,連接相應(yīng)的軟件并打開(kāi)所需工程
2、獲取該工程的所有點(diǎn)云信息,并重新打開(kāi)工程以便將其置于特征對(duì)齊窗口中。
3、打開(kāi)另一個(gè)工程作為移動(dòng)數(shù)據(jù)源,并同樣放置于特征對(duì)齊窗口中。
4、執(zhí)行特征拼接操作,并使用迭代最近點(diǎn)算法(ICP)對(duì)拼接結(jié)果進(jìn)行優(yōu)化。
5、將對(duì)齊的數(shù)據(jù)放入原項(xiàng)目中,并保存修改。

具體實(shí)現(xiàn)代碼示例展示了如何通過(guò)編程接口完成上述流程,包括創(chuàng)建協(xié)議、初始化客戶(hù)端、加載參考和移動(dòng)數(shù)據(jù)、執(zhí)行特征拼接以及ICP優(yōu)化等關(guān)鍵步驟。每個(gè)步驟都包含詳細(xì)的邏輯判斷,以確保操作的成功率。
源碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using techlego_cs;
namespace feature_align_demo_cs
{
internal class Program
{
static int Main(string[] args)
{
//通過(guò)IP端口創(chuàng)建協(xié)議
var protocol = techlego_cs.global.create_binary_protocol("localhost", 5252);
//通過(guò)協(xié)議創(chuàng)建客戶(hù)端
var client = techlego_cs.h_scan3d_client.make_shared(protocol);
bool operation_flag = false;
//獲取作為特征拼接的參考數(shù)據(jù)
string ref_project= "D:\\桌面\\capfeaturealign\\cap1\\cap1.vtop";
//獲取作為特征拼接的移動(dòng)數(shù)據(jù)
string move_project= "D:\\桌面\\capfeaturealign\\cap2\\cap2.vtop";
//打開(kāi)作為特征拼接參考數(shù)據(jù)的項(xiàng)目
operation_flag = client.get_h_scan3d_client().open_project(ref_project);
if (operation_flag)
{
Console.WriteLine("open project success");
}
else
{
Console.WriteLine("open project fail");
return -1;
}
//獲取參考數(shù)據(jù)點(diǎn)數(shù)量,獲取點(diǎn)數(shù)據(jù)后項(xiàng)目會(huì)自動(dòng)關(guān)閉需要重新打開(kāi)
vector_h_point_info ref_points = new vector_h_point_info();
client.get_h_scan3d_client().get_scan_data_all(ref_points);
operation_flag = client.get_h_scan3d_client().open_project(ref_project);
if (operation_flag)
{
Console.WriteLine("open project success");
}
else
{
Console.WriteLine("open project fail");
return -1;
}
//載入特征拼接的參考數(shù)據(jù),載入后項(xiàng)目會(huì)自動(dòng)關(guān)閉
client.get_h_scan3d_client().load_feature_align_data_from_project(false, true);
//打開(kāi)作為特征拼接移動(dòng)數(shù)據(jù)的項(xiàng)目
operation_flag = client.get_h_scan3d_client().open_project(move_project);
if (operation_flag)
{
Console.WriteLine("open project success");
}
else
{
Console.WriteLine("open project fail");
return -1;
}
//載入特征拼接的移動(dòng)數(shù)據(jù),載入后項(xiàng)目會(huì)自動(dòng)關(guān)閉
client.get_h_scan3d_client().load_feature_align_data_from_project(false, false);
vector_double res = new vector_double();
//進(jìn)行特征拼接,返回的vector長(zhǎng)度為12表示特征拼接成功,其他為失敗
client.get_h_scan3d_client().feature_align(res);
if (res.size() != 12)
{
Console.WriteLine("feature align fail");
return -1;
}
vector_double icp_res = new vector_double();
//icp 誤差
double error = 0;
//參考數(shù)據(jù)匹配序號(hào)
vector_int ref_match_index = new vector_int();
//icp 隨機(jī)采樣數(shù)量,一般為參考數(shù)據(jù)個(gè)數(shù)
var sample_count = ref_points.get_size();
//icp 迭代次數(shù)
int iteration = 1;
//匹配點(diǎn)時(shí)的最小距離
int min_dist = 1;
//匹配點(diǎn)時(shí)的最大距離
int max_dist = 5;
//進(jìn)行對(duì)特征拼接結(jié)果進(jìn)行icp優(yōu)化,返回的vector長(zhǎng)度為12表示成功,其他為失敗
client.get_h_scan3d_client().icp_align(icp_res, ref error, ref_match_index, res, false, min_dist, max_dist, iteration, (int)sample_count, false, true);
if (icp_res.size() != 12)
{
Console.WriteLine("icp align fail");
return -1;
}
//打開(kāi)參考項(xiàng)目為接收特征數(shù)據(jù)做準(zhǔn)備
operation_flag = client.get_h_scan3d_client().open_project(ref_project);
if (operation_flag)
{
Console.WriteLine("open project success");
}
else
{
Console.WriteLine("open project fail");
return -1;
}
//把對(duì)齊數(shù)據(jù)放入工程
client.get_h_scan3d_client().convert_align_data_to_scan_groups();
//保存工程
client.get_h_scan3d_client().save_project();
Console.ReadKey();
return 0;
}
}
}
 
 

總結(jié)

TECHLEGO-來(lái)高科技

通過(guò)執(zhí)行上述步驟,可以有效地實(shí)現(xiàn)兩個(gè)角度三維點(diǎn)云數(shù)據(jù)之間的特征拼接。此過(guò)程不僅增強(qiáng)了數(shù)據(jù)集間的關(guān)聯(lián)性,也為進(jìn)一步的數(shù)據(jù)分析和應(yīng)用奠定了良好基礎(chǔ)。此外,文中提供的代碼片段展示了如何利用編程手段自動(dòng)化這一流程,并提供相關(guān)SDK接口,提高了工作效率和準(zhǔn)確性。
 
 

官網(wǎng)視頻號(hào)·更多視頻案例·關(guān)注我們

 



往期回顧

 

多機(jī)聯(lián)動(dòng)掃描系統(tǒng)助力嫦娥五號(hào)構(gòu)建月表地形

 

噴漆自動(dòng)化三維視覺(jué)全流程

 

混凝土立方試塊尺寸三維檢測(cè)全流程?

↙點(diǎn)擊“閱讀原文”查看更多精彩內(nèi)容


  • 上一篇:深入探討:如何將機(jī)器人位姿高效綁定至掃描數(shù)據(jù)組
  • 下一篇:使用Techlego軟件實(shí)現(xiàn)迅捷多件雙面掃描與拼接
  • 相關(guān)推薦 NEWS More>