0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于單目攝像頭實現(xiàn)3D識別SFM技術(shù)的研究

tUM2_ADA ? 來源:djl ? 作者:ADAS ? 2019-08-10 09:30 ? 次閱讀

通過單眼攝像頭復(fù)原3D模型
為了能夠通過單眼攝像頭實現(xiàn)3D識別,SfM(Structure from Motion)的技術(shù)。采用的方法是,移動攝像頭的位置,獲得視點不同的多個圖像,然后對這些圖像加以比較,從而復(fù)原拍攝對象的三維(3D)模型。對于車載攝像頭,只要車輛移動就能獲得視點不同的多個圖像,因此可以使用SfM制作車輛周邊的簡易3D模型。

獲得的3D模型如何應(yīng)用不是由芯片來決定的,而是取決于開發(fā)者。比如,可以組合使用由多個車載攝像頭獲得的圖像生成的360度圖像,從而提高駕駛輔助的精度等。上述一系列的圖像識別處理利用VGA和全高清(1920×1080像素)車載攝像頭就能實現(xiàn),無需專門選擇某種攝像頭。

1. Bundler簡介

Bundler是一個采用C和C++開發(fā)的稱為sfm(struct-from-motion)的系統(tǒng),它能夠利用無序的圖片集合(例如來自網(wǎng)絡(luò)的圖片)重建出3D的模型。最早的版本被用在Photo Tourism的項目上。

Bundler的輸入是一些圖像、圖像特征以及圖像匹配信息,輸出則是一個根據(jù)這些圖像反應(yīng)的場景的3D重建模型,伴有少量識別得到的相機(jī)以及場景幾何信息。系統(tǒng)借用一個由Lourakis 和Argyros提供的稱為Sparse Bundle Adjustment的開發(fā)包的修改版,一點一點遞增地重建出圖像場景。Bundler已經(jīng)成功的應(yīng)用在許多網(wǎng)絡(luò)相冊系統(tǒng),尤其是一些建筑相冊里。

2. Bundler的編譯

下載到Bundler的源代碼之后,我們首先要對其進(jìn)行編譯。在bundler-v0.4-source\vc++\文件夾下有Visual Studio2005創(chuàng)建的工程Bundler.sln,當(dāng)然我們也可以使用更高的版本進(jìn)行編譯。

在編譯f2c時,會給出無法找到#include"sysdep1.h"文件的錯誤。進(jìn)入f2c的目錄,將sysdep1.h0文件名修改為sysdep1.h即可。

同時將signal1.h0文件名修改為signal1.h。再次編譯f2c庫時,會提示無法找到#include"arith.h"文件的錯誤,同時在f2c目錄下并沒有名字為arith.h的文件,這時可以新建一個arith.h文件,在文件里添加如下內(nèi)容即可:

#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define QNaN0 0x0
#define QNaN1 0xfff80000

這時,編譯f2c,便成功了。

接下來編譯keyMatchFull和Bundler項目,一切順利。

為了進(jìn)行獲得稠密的三圍重建效果,利用Bundler提供的Bundle2PMVS和RadialUndistort工具,生成稠密重建PMVS軟件所需的參數(shù)

在編譯Bundlr2PMVS時,在Bundle2PMVS.cpp文件中會出現(xiàn)“未知的標(biāo)識符mkdir”的錯誤。在文件的開頭添加#include,

同時將mkdir替換為_mkdir,如下所示:

//mkdir(output_path,0770);

_mkdir(output_path);

至此,Bundle2PMVS編譯成功。

在編譯RadialUndistort時,在RadialUndistort.cpp文件中會出現(xiàn)“無法識別的標(biāo)識符index”。

原先的代碼如下所示:

//char *space = index(buf, ' ');
//if (space) *space = 0;

將其替換為:

std::string str(buf);
int space_pos = str.find(' ');
str.at(space_pos) = 0;

files.push_back(str);

至此,RadialUndistort編譯成功。

3. Bundler的運行

編譯完成后,需要將bundler-v0.4-source\vc++\Debug\目錄下的Bundler.exe,KeyMatchFull.exe, RadialUndistort.exe, Bundle2PMVS.exe, jpeg.dll,ann_1.1_char.dll文件統(tǒng)統(tǒng)考到bundler-v0.4-source\bin\目錄下。

在成功執(zhí)行Bundler前,我們需要做幾步準(zhǔn)備工作:

1.下載和安裝Cygwin。Cygwin是許多自由軟件的集合,最初由Cygnus Solutions開發(fā),用于各種版本的Microsoft Windows上,運行UNIX類系統(tǒng)。由于Bundler默認(rèn)是通過在Unix環(huán)境下執(zhí)行shell腳本來啟動Bundler的,因為在Windows環(huán)境下需要安裝Cygwin以執(zhí)行shell腳本。

要下載cygwin,直接在setup.exe上點右鍵“另存為”即可。也可以復(fù)制右邊這個地址:http://cygwin.com/setup.exe

cygwin的安裝比較簡單,可以參考這篇教程

但要注意一點,Bundler程序中會使用perl、python來進(jìn)行一些預(yù)處理,因此在安裝過程中需要把Devel、Perl、Python三個組件庫都選上。另外還有ImageMagick這個庫,用來處理圖片。

下載安裝的時間比較久,需要等待一段時間。安裝過程中一些殺毒軟件(比如360)可能會提示一些安全警告,無視即可。

2.下載特征檢測器。Bundler推薦使用SIFT來進(jìn)行特征提取,可以到SIFT的作者David Lowe的主頁上下載他提供的SIFT Demo作為我們的檢測器。

下載完成后,解壓該文檔,將目錄下的siftWin32.exe文件拷貝到BASE_PATH\bin目錄中。

3.準(zhǔn)備圖片。將要進(jìn)行分析處理的圖片放到一個目錄里,比如BASE_PATH\Pictures\中(下面也統(tǒng)一以Pictures代替圖片目錄)。作為例子,Bundler自己也提供了兩套圖片,分別放在BASE_PATH\examples\ET和BASE_PATH\examples\kermit中。

4.下面對運行Bundler的腳本文件進(jìn)行修改:

把RunBundler.sh文件中BASE_PATH=$(dirname $(which $0)); 一句等號后邊的東西替換為Bundler的根目錄,也就是RunBundler.sh文件所在的目錄,記得加雙引號。如BASE_PATH="E:/SDK/bundler-v0.4-source";。

然后把ToSift.sh文件中BIN_PATH設(shè)為bin目錄,如BIN_PATH="E:/SDK/bundler-v0.4-source/bin"。

5.這下就大功告成了?。?/p>

打開Cygwin,cd定位到Bundler根目錄下,然后輸入下面的命令測試一下例子的圖片:

./RunBundler.sh examples/ET

4. 后續(xù)工作

Bundler輸出的文件大多以“bundle_*.out”的形式來命名,我們稱之為“bundle文件”。缺省命令下,Bundler在每張圖片經(jīng)過分析和注冊(register)后都會輸出一個相應(yīng)的bundle文件用來保存當(dāng)前的狀態(tài)信息,并以“bundle_.out”的形式命名。當(dāng)所有的文件都注冊后,Bundler就會輸出一個最終的文件“bundle.out”。另外,每一回合結(jié)束時還會緊接著生成一些后綴名為“ply”的文件,這些文件包含的是經(jīng)過重建后的相機(jī)和點的信息。

這些ply文件可以通過使用專用的查看器scanalyze來查看,

當(dāng)然也可以通過meshlab來查看。

利用Bundler可以得到較為稀疏的點云(pointclouds)數(shù)據(jù)。如果需要得到更密集的點,可以使用Yasutaka Furukawa博士寫的另外一個非常強(qiáng)大的軟件包,稱為PMVS2,

一種比較常見的途徑是使用Bundler來得到相機(jī)參數(shù),然后使用Bundle2PMVS程序,將生成結(jié)果轉(zhuǎn)換為PMVS2的輸入,然后使用PMVS2來得到更密集的點云。另外,讀者們可能會對另外一個同樣由Furukawa博士開發(fā)的實用工具——CMVS感興趣,CMVS是一個場景聚類程序,在使用PMVS2前可以使用它來進(jìn)行一些預(yù)處理,

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 3D
    3D
    +關(guān)注

    關(guān)注

    9

    文章

    2904

    瀏覽量

    107747
  • 車載攝像頭
    +關(guān)注

    關(guān)注

    5

    文章

    138

    瀏覽量

    28108
  • 單目攝像頭
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    4288
收藏 人收藏

    評論

    相關(guān)推薦

    最新攝像頭技術(shù)給車輛以強(qiáng)大的視覺功能

    ,這都得益于圖像處理技術(shù)。 因為這些系統(tǒng)越來越復(fù)雜,有些使用雙攝像頭實現(xiàn) 3D 立體視覺或物體檢測,或只是單純?yōu)榱双@得前端和后端視野(通過前后窗口)。圖 4:(a) Lattice 雙
    發(fā)表于 04-12 14:44

    怎樣去設(shè)計一種基于OPT9221和OPT8241的3D ToF攝像頭電路?

    3D ToF攝像頭有哪些特性?3D ToF攝像頭有哪些功能?怎樣去設(shè)計一種基于OPT9221和OPT8241的3D ToF
    發(fā)表于 07-04 07:15

    iPhone8什么時候上市最新消息:iPhone8將用哪種攝像頭?iPhone8的3D攝像頭革命

    日前,關(guān)于蘋果將在新一代的iPhone上使用前置3D攝像頭的消息甚囂。蘋果會在iphone8中對增強(qiáng)現(xiàn)實3D深度感測鏡頭技術(shù)加以利用。
    發(fā)表于 06-29 16:33 ?744次閱讀

    3D攝像頭和vcesl產(chǎn)業(yè)做一個超詳細(xì)的專業(yè)科普

    3D攝像攝像頭是什么?3D攝像頭特點在于除了能夠獲取平面圖像以外,還可以獲得拍攝對象的深度信息,即三維的位置及尺寸信息,其通常由多個
    的頭像 發(fā)表于 02-05 09:35 ?2.6w次閱讀
    對<b class='flag-5'>3D</b><b class='flag-5'>攝像頭</b>和vcesl產(chǎn)業(yè)做一個超詳細(xì)的專業(yè)科普

    3D攝像頭行業(yè)巨頭的市場爭奪戰(zhàn)爆發(fā)“誰”能勇立潮頭

    自蘋果搭載3D攝像頭后,攝像頭市場也發(fā)生了微妙的變化,而這一變化,可能最早是從設(shè)備端開始,前幾日因3D攝像頭激起的人才大戰(zhàn)還歷歷在
    的頭像 發(fā)表于 02-11 10:55 ?7900次閱讀

    MWC2018:奧比中光成功研發(fā)手機(jī)3D攝像頭 安卓陣營進(jìn)入3D人臉識別時代

    MWC2018正式拉開帷幕,在這次的展會上,聯(lián)發(fā)科戰(zhàn)略入股,奧比中光成功研發(fā)手機(jī)前置3D攝像頭,最新helio P系列芯片平臺支持奧比中光3D傳感攝像頭,媲美iPhone X,安卓陣營
    發(fā)表于 03-02 14:49 ?1916次閱讀

    Lucid的3D融合技術(shù)實現(xiàn)攝像頭設(shè)備仿人類視覺3D景深識別

    設(shè)備制造商現(xiàn)在可以利用Lucid的核心軟件解決方案,在簡單的雙攝像頭設(shè)備上實現(xiàn)仿人類視覺的高精度3D景深識別。
    的頭像 發(fā)表于 07-27 17:18 ?7500次閱讀

    攝像對比立體攝像頭的優(yōu)點

    像素提高到ZYDAS-2的每度14.2個像素。這進(jìn)而提高了目標(biāo)識別的探測距離,遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)立體攝像頭相對受限的3D測量距離。
    的頭像 發(fā)表于 08-09 10:51 ?5935次閱讀

    為什么華為Mate30Pro前后都采用了3D深感攝像頭

    超廣角攝像頭+ 8MP 長焦+ 3D 深感攝像頭,雙 OIS;前置則采用了 3200 萬像素攝像頭 + 3D 深感
    的頭像 發(fā)表于 09-24 08:57 ?7.5w次閱讀

    人臉識別中雙目、、3D結(jié)構(gòu)光攝像頭的區(qū)別

    邁迪杰科技提供的rk3288人臉識別模組可支持雙目攝像頭3D結(jié)構(gòu)光攝像頭,在客戶咨詢中經(jīng)常有被問到雙目的為什么會比目的成本高,區(qū)別在哪里
    發(fā)表于 06-18 14:38 ?3w次閱讀

    專訪模組廠商:人臉識別攝像頭和雙攝像頭該如何選型

    高交會,筆者對專注做影像采集行業(yè)、具備較強(qiáng)專業(yè)能力的攝像頭模組廠商金視康康總經(jīng)理何世錕介紹進(jìn)行了一場關(guān)于人臉識別攝像頭如何選型的深度溝通。 關(guān)鍵點一:選單
    的頭像 發(fā)表于 11-26 17:10 ?2142次閱讀

    人臉識別中雙目、3D結(jié)構(gòu)光攝像頭之間的區(qū)別

    聯(lián)智通達(dá)提供的rk3288人臉識別模組可支持雙目攝像頭3D結(jié)構(gòu)光攝像頭,在客戶咨詢中經(jīng)常有被問到雙目的為什么會比目的成本高,區(qū)別在哪里,
    發(fā)表于 02-26 14:32 ?1.1w次閱讀

    華為智能門鎖搭載3D深感攝像頭和人臉識別技術(shù)

    在智慧暢聯(lián)場景下,華為智能門鎖搭載了旗艦手機(jī)同款的 3D 深感攝像頭和人臉識別技術(shù)。 ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 07-28 17:16 ?1698次閱讀
    華為智能門鎖搭載<b class='flag-5'>3D</b>深感<b class='flag-5'>攝像頭</b>和人臉<b class='flag-5'>識別</b><b class='flag-5'>技術(shù)</b>

    使用python和opencv實現(xiàn)攝像機(jī)測距

    我的論文方向目前是使用攝像頭實現(xiàn)機(jī)器人對人的跟隨,首先
    的頭像 發(fā)表于 07-03 10:01 ?3134次閱讀
    使用python和opencv<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>單</b><b class='flag-5'>目</b><b class='flag-5'>攝像</b>機(jī)測距

    顆CMOS攝像頭重構(gòu)三維場景,維悟光子發(fā)布紅外3D成像模組

    硬件系統(tǒng)的輕量化和降本是3D視覺市場演進(jìn)的必然趨勢。維悟光子通過底層原理的創(chuàng)新,僅利用CMOS相機(jī)(最簡單的成像系統(tǒng))就可以獲取完整的3D信息。本次發(fā)布的
    的頭像 發(fā)表于 10-13 15:45 ?784次閱讀
    以<b class='flag-5'>單</b>顆CMOS<b class='flag-5'>攝像頭</b>重構(gòu)三維場景,維悟光子發(fā)布<b class='flag-5'>單</b><b class='flag-5'>目</b>紅外<b class='flag-5'>3D</b>成像模組