ICP算法理解

from:https://blog.csdn.net/linear_luo/article/details/52576082

1 經典ICP

  ICP的目的很簡單,就是求解兩堆點云之間的變換關系。怎么做呢?思路很自然,既然不知道R和t(針對剛體運動),那我們就假設為未知量唄,然后通過某些方法求解。下面我們來看看具體怎么求的~沒辦法,要把問題描述清楚,數學是少不了的了。假設有兩堆點云,分別記為兩個集合X=x1,x2,...,xmX=x1,x2,...,xm和Y=y1,y2,...,ymY=y1,y2,...,ym(m并不總是等于n)。然后呢,我們不失一般性的,假設兩個點云之間的變換為R(旋轉變換)和t(平移變換),這兩個就是我們要求的東西啦~那我們將求解這個問題描述成最小化均方誤差:?
  

e(X,Y)=∑i=1m(Rxi+t?yi)2e(X,Y)=∑i=1m(Rxi+t?yi)2


  經典的ICP方法對上面的優化問題的處理思路如下:?
  (1)初始化RR?和?tt?
  確定初始的RR?和?tt?的方法很多,如果什么方法都不知道,那隨便賦一個RR?和?tt?,然后就迭代的算呀。隨便給一個值從原理上來說也可以得到最終的一個結果呀,但是準不準就不知道了。相信有基本的優化概念的人都知道,初始值的選取很重要,如果初始值選的不好很容易收斂到一個局部最優解,然后局部最優解好不好那就另說了。ICP發展了這么多年了,當然有很多的方法來估計初始的R和t了,像PCL給的SampleConsensusInitalAlignment函數以及TransformationEstimationSVD函數都可以得到較好的初始估計。?
  (2)迭代?
  得到初始的估計后,接下來的步驟就順理成章了:對于XX中的每一個點用當前的RR?和?tt在YY中找最近的點(比如用歐式距離),然后這兩個點就成了一對了~就這樣,對所有的點都這么做一次,然后我們就得到了所有的匹配對了~然后呢,用每一對的坐標列一個方程,就得到一系列的方程。然后就求解最優的R和t最小化上面的誤差。如此循環往復。

?

2 ICP變種

  除了經典的ICP方法外,還有一些變種,如point-to-point的,point-to-plane的以及plane-to-plane的,那么這三種方法到底是啥呢??
  其實很簡單,就是上面的誤差函數的定義不一樣而已。在上面講經典ICP的時候,求和的每一項不就是XX中的每一個點到YY中的每一個點的距離嗎?那就是point-to-point了,那么將求和的每一項變成XX中的每一個點到YY中的平面的距離,那就是point-to-plane了呀~類似的,如果把求和的每一項變成X中的平面到YY中的平面的距離,那就是plane-to-plane了。我們說了這么久的平面,那么平面到時是怎么定義的呢??
  point-to-plane的誤差函數定義為:Mopt=argminR,t∑i((R?xi+t?yi)?ni)Mopt=argminR,t∑i((R?xi+t?yi)?ni)

參考:http://www.cnblogs.com/jian-li/articles/4945676.html

-------------------------------------------------------------------------------------------------------------------------------------------

 圖像配準是圖像處理研究領域中的一個典型問題和技術難點,其目的在于比較或融合針對同一對象在不同條件下獲取的圖像,例如圖像會來自不同的采集設備,取自不同的時間,不同的拍攝視角等等,有時也需要用到針對不同對象的圖像配準問題。具體地說,對于一組圖像數據集中的兩幅圖像,通過尋找一種空間變換把一幅圖像映射到另一幅圖像,使得兩圖中對應于空間同一位置的點一一對應起來,從而達到信息融合的目的。?一個經典的應用是場景的重建,比如說一張茶幾上擺了很多杯具,用深度攝像機進行場景的掃描,通常不可能通過一次采集就將場景中的物體全部掃描完成,只能是獲取場景不同角度的點云,然后將這些點云融合在一起,獲得一個完整的場景。

  ICP(Iterative Closest Point迭代最近點)算法是一種點集對點集配準方法。如下圖所示,PR(紅色點云)和RB(藍色點云)是兩個點集,該算法就是計算怎么把PB平移旋轉,使PB和PR盡量重疊。

  用數學語言描述如下,即ICP算法的實質是基于最小二乘法的最優匹配,它重復進行“確定對應關系的點集→計算最優剛體變換”的過程,直到某個表示正確匹配的收斂準則得到滿足。

ICP算法基本思想:

  如果知道正確的點對應,那么兩個點集之間的相對變換(旋轉、平移)就可以求得封閉解。

  首先計算兩個點集X和P的質心,分別為μx和μp

  然后在兩個點集中分別減去對應的質心(Subtract the corresponding center of mass?from every point in the two point sets?before calculating the transformation)

  目標函數E(R,t)的優化是ICP算法的最后一個階段。在求得目標函數后,采用什么樣的方法來使其收斂到最小,也是一個比較重要的問題。求解方法有基于奇異值分解的方法、四元數方法等。?

  如果初始點“足夠近”,可以保證收斂性

ICP算法優點:

  • 可以獲得非常精確的配準效果
  • 不必對處理的點集進行分割和特征提取
  • 在較好的初值情況下,可以得到很好的算法收斂性

ICP算法的不足之處:?

  • 在搜索對應點的過程中,計算量非常大,這是傳統ICP算法的瓶頸
  • 標準ICP算法中尋找對應點時,認為歐氏距離最近的點就是對應點。這種假設有不合理之處,會產生一定數量的錯誤對應點

  針對標準ICP算法的不足之處,許多研究者提出ICP算法的各種改進版本,主要涉及如下所示的6個方面。

  標準ICP算法中,選用點集中所有的點來計算對應點,通常用于配準的點集元素數量都是非常巨大的,通過這些點集來計算,所消耗的時間很長。在后來的研究中,提出了各種方法來選擇配準元素,這些方法的主要目的都是為了減小點集元素的數目,即如何選用最少的點來表征原始點集的全部特征信息。在點集選取時可以:1.選取所有點;2.均勻采樣(Uniform sub-sampling?);3.隨機采樣(Random sampling);4.按特征采樣(Feature based Sampling );5.法向空間均勻采樣(Normal-space sampling),如下圖所示,法向采樣保證了法向上的連續性(Ensure that samples have normals distributed as?uniformly as possible)

  基于特征的采樣使用一些具有明顯特征的點集來進行配準,大量減少了對應點的數目。

  點集匹配上有:最近鄰點(Closet Point)

  法方向最近鄰點(Normal Shooting)

  投影法(Projection)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458184.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2016-8-2更新日志

1.修正版本管理器資源文件名 不能正確拉取 91Resource 文件下的資源的問題2.修正商城購買物品不計算負重的問題3.修正拾取疊加物品 只計算一個物品的重量的問題4.游戲參數-> 游戲選項2->增加物品使用間隔5.修正冷酷不加技能點的BUG6.自定義UI開放測試[目前只能針對熱血傳…

字符流緩沖區的使用之BufferedWriter和BufferedReader

從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取,代碼中使用了輸入緩沖區的特有的方法:readLine(),獲取一行文本數據 import java.io.BufferedReader; import java.io.FileNotFoundException; import java…

圖像處理的灰度化和二值化

from:http://blog.sina.com.cn/s/blog_13c6397540102wqtt.html 在圖像處理中,用RGB三個分量(R:Red,G:Green,B:Blue),即紅、綠、藍三原色來表示真彩色&#x…

結合 category 工作原理分析 OC2.0 中的 runtime

絕大多數 iOS 開發者在學習 runtime 時都閱讀過 runtime.h 文件中的這段代碼: struct objc_class {Class isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__Class super_class OBJC2_UNAVAILABLE;const char *name …

獲取子元素

1、純css 獲取子元素 #test1>div {background-color:red;}#test1 div {font-size:14px;}#test1>div:first-child {color:#ccc;} <div id"test1"><div>性別</div><div>男</div></div> 因1示例中為#test1下的子元素 #test1…

JPG PNG GIF BMP圖片格式的區別

類型優點缺點應用場景相同圖片大小比較BMP無損壓縮&#xff0c;圖質最好文件太大&#xff0c;不利于網絡傳輸 152KGIF動畫存儲格式最多256色&#xff0c;畫質差 53KPNG可保存透明背景的圖片畫質中等 202KJPG文件小&#xff0c;利于網絡傳輸畫質損失車牌識別84K BMP BMP&…

EasyUI左右布居

<!DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"><head runat"server"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>首頁</title> <li…

44.Android之Shape設置虛線、圓角和漸變學習

Shape在Android中設定各種形狀&#xff0c;今天記錄下&#xff0c;由于比較簡單直接貼代碼。 Shape子屬性簡單說明一下:   gradient -- 對應顏色漸變。 startcolor、endcolor就不多說了。 android:angle是指從哪個角度開始變.solid -- 填充。stroke -- 描邊。corners -- 圓角…

幾種邊緣檢測算子的比較Roberts,Sobel,Prewitt,LOG,Canny

from&#xff1a;https://blog.csdn.net/gdut2015go/article/details/46779251 邊緣檢測是圖像處理和計算機視覺中的基本問題&#xff0c;邊緣檢測的目的是標識數字圖像中亮度變化明顯的點。圖像屬性中的顯著變化通常反映了屬性的重要事件和變化。這些包括&#xff1a;深度上的…

django 初試

/*************************************************************************************** django 初試* 說明&#xff1a;* 昨天打搭了dgango的服務器&#xff0c;今天學一下怎么來輸出一個hello world出來。* * …

淺析“高斯白噪聲”,“泊松噪聲”,“椒鹽噪聲”的區別

from&#xff1a;https://www.jianshu.com/p/67f909f3d0ce 在圖像處理的過程中&#xff0c;一般情況下都進行圖像增強&#xff0c;圖像增強主要包括“空域增強”和“頻域增強”&#xff0c; 空域增強包括平滑濾波和銳化濾波。 平滑濾波&#xff0c;就是將圖像模糊處理&#x…

HttpClient通過Post上傳文件(轉)

在之前一段的項目中&#xff0c;使用Java模仿Http Post方式發送參數以及文件&#xff0c;單純的傳遞參數或者文件可以使用URLConnection進行相應的處理。 但是項目中涉及到既要傳遞普通參數&#xff0c;也要傳遞多個文件&#xff08;不是單純的傳遞XML文件&#xff09;。在網上…

數字圖像處理:各種變換濾波和噪聲的類型和用途總結

摘自http://imgtec.eetrend.com/blog/4564 一、基本的灰度變換函數 1.1圖像反轉 適用場景&#xff1a;增強嵌入在一幅圖像的暗區域中的白色或灰色細節&#xff0c;特別是當黑色的面積在尺寸上占主導地位的時候。 1.2對數變換&#xff08;反對數變換與其相反&#xff09; …

Java 開發環境部署

1.下載Java開發環境工具包JDK&#xff0c;下載地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 下載后&#xff0c;雙擊jdk應用程序&#xff0c;根據提示完成安裝&#xff0c;安裝過程中可以自定義安裝目錄等信息&#xff0c;這里我選擇…

枚舉enum、NS_ENUM 、NS_OPTIONS

2019獨角獸企業重金招聘Python工程師標準>>> enum 了解位移枚舉之前&#xff0c;我們先回顧一下C語言位運算符。 1 << : 左移,比如1<<n,表示1往左移n位&#xff0c;即數值大小2的n次方; 例如 : 0b0001 << 1 變為了 0b0010 2 >> : 右…

mysql 關鍵詞相關度排序方法詳細示例分析

http://www.jb51.net/article/40480.htm轉載于:https://www.cnblogs.com/lixiuran/p/5299305.html

數字圖像處理-頻率域濾波原理

from&#xff1a;https://blog.csdn.net/forrest02/article/details/55510711?locationNum15&fps1 寫在前面的話 作者是一名在讀的碩士研究僧&#xff0c;方向是圖像處理。由于圖像處理是一門相對復雜的學科&#xff0c;作者在課堂上學到的東西只是非常淺顯的內容&#…

tomcat優化-有改protocol 和 緩存 集群方案

tomcat優化 在線上環境中我們是采用了tomcat作為Web服務器&#xff0c;它的處理性能直接關系到用戶體驗&#xff0c;在平時的工作和學習中&#xff0c;歸納出以下七種調優經驗。 1. 服務器資源 服務器所能提供CPU、內存、硬盤的性能對處理能力有決定性影響。 (1) 對于高并發…

深入淺出的講解傅里葉變換(真正的通俗易懂)

原文出處&#xff1a; 韓昊 1 2 3 4 5 6 7 8 9 10 作 者&#xff1a;韓 昊 知 乎&#xff1a;Heinrich 微 博&#xff1a;花生油工人 知乎專欄&#xff1a;與時間無關的故事 謹以此文獻給大連海事大學的吳楠老師&#xff0c;柳曉鳴老師&#xff0c;王新年老師以及張晶泊老…

分布式鎖 基于Redis

分布式鎖的實現(基于Redis)參考:http://www.jb51.net/article/75439.htm http://www.linuxidc.com/Linux/2015-01/111827.htm http://www.tuicool.com/articles/6juqmm7 方式一: 基于第三方類庫 redssion 1.安裝redis安裝redssion的鎖服務隊redis的版本有要求&#xff0c;要求必…