對於多視點圖像的理解

對於多視點圖像的理解

前言

我們知道計算機的計算能力非常強,因爲計算機裏面的硬件結構例如累加器,移位器等等,主要是因爲硬件在設計的時候已經定義了計算機運算的規則,例如計算方式採用類似於什麼補碼,反碼加減方式等等,已經事先安排好的規則,是一般是不容易改變的,例如二進制01+01=10,當然計算溢出了就另當別論了。

而我們學習的例如:語音或者是圖像識別,因爲語音和圖像輸入的變化量太大了,

舉一個簡單的例子:同一只狗在不同的角度,不同的光線,不同的動作下。圖像捕捉到的一瞬間像素差異是非常大的。就算是同一張照片,旋轉90度或者縮放大小後,其像素差異也非常大。

所以圖片裏的內容相似甚至相同,但是在像素層面,其變化會非常大。這對於特徵提取很難。就像一個人,你可以形容他高矮胖瘦等幾個關鍵的因素就可以很好表達哪個人了。

但是對於一張靜態的圖片的話。舉個例子,手機上隨便拍一張照片就是1000*2000像素的。每個像素 RGB 3個參數,一共有1000 X 2000 X 3=6,000,000。隨便一張照片就要處理 600萬 個參數,這只是一個靜止的圖片,視頻或者動畫中的每一張畫面,而視頻和動畫特效就是由無數張畫面組合而成,每一張畫面都是一幀。於我們大多數手機視頻拍攝能力,無論是 720P 還是 1080P 基本都只有 30 幀每秒,現在越來越流行的 4K 視頻,一些手機也可以拍出 4K 視頻,甚至可以使用 135 幀每秒的超高速拍攝功能。就知道這個計算量級有多恐怖了。

以上遇到的種種困難可以概括爲以下

  • 特徵值提取困難:同一只物體在不同的角度,不同的光線,不同的動作下的差異
  • 需要處理的數據量龐大:單個照片至少要處理600萬個以上參數

所以爲了不要重複的造輪子,由英特爾公司發起並參與開發,以BSD許可證授權發行,可以在商業和研究領域中免費使用的計算機視覺庫——opencv的誕生了。


OpencCV

OpenCV的全稱是Open Source Computer Vision Library,是一個跨平臺的計算機視覺庫。

OpenCV可用於開發實時的圖像處理、計算機視覺以及模式識別程序。

而我個人的理解opencv是一個圖像處理庫,一個工具,只是其中封裝了傳統的機器學習方法和特徵提取方式。

OpenCV可用於解決如下領域的問題:

  • 增強現實
  • 人臉識別
  • 手勢識別
  • 人機交互
  • 動作識別
  • 運動跟蹤
  • 物體識別
  • 圖像分割
  • 機器人

詳情可以看博文

計算機視覺博文
https://blog.csdn.net/jankin6/category_9863253.html


人臉識別技術

類別

人臉識別需要相應的設備來獲取我們人臉的面部信息,例如目前手機上獲取我們人臉面部信息的方式有兩種:

  • 一種是目前絕大數安卓手機的方案:就是直接通過前置攝像頭實現的2D人臉識別。

  • 另一種是像蘋果手機,由劉海部分的元器件實現的3D人臉識別。

無論3D還是2D人臉識別,原理大體上都是差不多的:

原理

我們第一次使用人臉識別的時候和指紋識別一樣,

  • 第一步,要錄入我們人臉的面部信息,要通過攝像頭採集到我們的面部信息。

  • 第二步,要先對我們的圖像進行處理(因爲我們在錄入面部信息的時候所處的環境都是不同的,有的圖像光可能有點弱,有的圖像噪點又有點多,所以要先對圖像進行處理,讓手機可以更容易的識別出我們的面部信息)。

  • 第三步,就要對我們面部的特徵信息進行提取,比如面部各個器官之間的距離,以及器官的幾何形狀等等,這些都可以被提取爲特徵信息。

  • 第四步,提取完我們的面部特徵信息之後,這些特徵信息就會被儲存下來。

當我們解鎖手機的時候,手機又會重複前面的步驟,把提取到的面部特徵信息,和我們第一次錄入的面部特徵信息進行對比,只要能對上絕大多數的特徵信息(不能說100%吻合,大概有個80-90%以上的吻合),就可以解鎖手機,這個就是我們人臉識別的基本原理。

差異不足

在整個流程中,提取面部特徵信息這一步,就像我們設置密碼一樣,密碼包含的信息越多,安全性就越高,而我們目前的有些安卓手機,都是通過一個前置攝像頭,都是直接拍攝我們人臉的照片,獲取的都是一個平面的圖像,也就是我們說的2D人臉識別,因爲攝像頭拍攝到的是一個平面圖像,其實換句話也可以這麼說就是得到了一張照片,對着攝像頭就可以騙過我們的人臉識別,因爲不管我們是用攝像頭拍立體的人臉,還是直接對着一張照片,那最終拍下來的都是一個平面的圖像,所以2D人臉識別就像是一個6位的純數字密碼一樣,安全性不高。

爲了提高2D人臉識別的安全性,也會有各種各樣的算法,比如邊框檢測 反光檢測之類的算法,可以在一定程度上,避免用照片或者視頻騙過2D人臉識別,但是本質上提取得到的特徵信息太少,就像是一個6位的純數字密碼一樣,安全性無法保證。

所以現在的網站用戶註冊的時候會提高密碼的位數 增加大小寫字母,甚至要包括是特殊符號,以此類推我們人臉識別只有增加更多的特徵信息,才能在本質上提高人臉識別的安全性,所以我們除了要獲取人臉器官之間的距離 幾何形狀,還要獲取人臉的深度信息,也就是我們說的3D人臉識別技術

人臉深度信息的技術

目前獲取我們人臉深度信息的技術主要有三種

  • 一種是ToF(Time Of Flight)。就是傳感器發射出紅外光,紅外光再從物體表面反射回傳感器,傳感器通過發射和反射光之間的相位差換算出深度信息,因爲已知光速和調製光的波長,所以能快速準確計算出到物體的距離。

  • 第二種是雙目測距技術。和我們的人眼類似,直接用兩個攝像頭進行拍攝,就會得到兩個不一樣的平面圖像,再把兩張圖像上相同的特徵點標註出來,最後再基於三角測量原理計算出深度信息。

  • 第三種3D結構光技術。雙目測距的難點在於,要準確的標出兩幅圖像的共同特徵點來。舉例子,好比我和我的室友在食堂吃飯,突然發現前面有個好看的妹子,我說那個穿白色衣服的妹子很漂亮,但是食堂可能不止一個穿白色衣服的,所以我室友可能會認錯人。 那怎樣才能解決這個問題呢,我一支激光筆,直接指向某個人說是這個,這下我們立馬就可以找到目標,這個就是我們說的3D結構光技術。例如,蘋果劉海里面有一個點陣投影器和一個紅外攝像頭點陣投影器投影光點到我們的臉上,紅外攝像頭直接找到投影到臉上的光點,找到光點之後,後面的步驟就和雙目測距一樣,用三角測量的原理計算出各個光點的深度信息,這個就是我們3D結構光的原理。

3D結構光技術細分也可以將結構光技術分爲:

  • 散斑結構光,它的散斑有一定的隨機性,所以安全性會更好,但相應的計算量也會更大

  • 編碼結構光,好處是計算量要小一些,但和前者比較的話,安全性會稍低一些

點雲配準過程一般分爲三步:

  1. 3D關鍵點的選取;
  2. 對關鍵點處幾何特徵的描述;
  3. 到目標點雲的匹配。 本文對不同的特徵點選取(NARF和3D-SIFT)和特徵描述方法(PFH,FPFH,PFHRGB,SHOT,Color-SHOT)進行比較,發現採用FPFH描述子能夠提高點雲配準的準確度和減少運算時間,而特徵點的選取通常會降低匹配的準確性

常見的三維重建表達方式

常規的3D shape representation有以下四種:深度圖(depth)、點雲(point cloud)、體素(voxel)、網格(mesh)。

img

深度圖其每個像素值代表的是物體到相機xy平面的距離,單位爲 mm。

img

體素是三維空間中的一個有大小的點,一個小方塊,相當於是三維空間種的像素。

img

點雲是某個座標系下的點的數據集。點包含了豐富的信息,包括三維座標X,Y,Z、顏色、分類值、強度值、時間等等。在我看來點雲可以將現實世界原子化,通過高精度的點雲數據可以還原現實世界。萬物皆點雲,獲取方式可通過三維激光掃描等。

img用三角網格重建

三角網格就是全部由三角形組成的多邊形網格。多邊形和三角網格在圖形學和建模中廣泛使用,用來模擬複雜物體的表面,如建築、車輛、人體,當然還有茶壺等。任意多邊形網格都能轉換成三角網格。

三角網格需要存儲三類信息:

頂點:每個三角形都有三個頂點,各頂點都有可能和其他三角形共享。 .

邊:連接兩個頂點的邊,每個三角形有三條邊。

面:每個三角形對應一個面,我們可以用頂點或邊列表表示面。

參考資料

引用資料

維基百科-oencv

基於模糊匹配的多視點圖像配準方法

基於多尺度分析的空間陣列圖像配準研究

基於結構光的立體視覺

對點雲配準的關鍵點和描述子的選取的比較

基於深度學習的視覺三維重建研究總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章