colmap 三維重建腳本

任務參數(shù):task_params.sh

C_ID=dlzr3
SHOP_ID=cy
VIDEO_ID=V00
SEG_ID=seg_00

echo C_ID:${C_ID}
echo SHOP_ID:${SHOP_ID}
echo VIDEO_ID:${VIDEO_ID}
echo SEG_ID:${SEG_ID}

PanoSLAM:panoslam.sh

# [CPU]  PanoSLAM
# coscmd download -r dev_${ORG_PATH} ${ORG_PATH}
source task_params.sh

ORG_PATH=data/${C_ID}/${SHOP_ID}/org
PANOIMG_PATH=data/${C_ID}/${SHOP_ID}/pano_img

echo PanoSLAM ${ORG_PAHT} ${PANOIMG_PATH}

python dev/colmap_tools/src/cmd_tools/panoslam.py \
    --input_path ${ORG_PATH} \
    --output_path ${PANOIMG_PATH} 

PanoImages:panocut.sh

# [CPU] Pano images cut. 
source task_params.sh

PANOIMG_PATH=data/${C_ID}/${SHOP_ID}/pano_img
CUTIMG_PATH=data/${C_ID}/${SHOP_ID}/colmap/cut_img/${VIDEO_ID}

echo PanoImageCut ${PANOIMG_PATH}/${VIDEO_ID} ${CUTIMG_PATH}

python dev/colmap_tools/src/cmd_tools/panocutimg.py \
    --input_path ${PANOIMG_PATH}/${VIDEO_ID} \
    --output_path ${CUTIMG_PATH} \
    --fov 120 --arr_theta "[90]" --arr_phi "[0,60,120,180,240,300]" \
    --cut_size "[1500, 1500]" \
    --max_workers 16\
    --max_seg_count 1000 \
    --step 3


PanoVideo:panovideo.sh

source task_params.sh

PANOIMG_PATH=data/${C_ID}/${SHOP_ID}/pano_img/${VIDEO_ID}
PANOVIDEO_FULLPATH=data/${C_ID}/${SHOP_ID}/pano_video/${VIDEO_ID}.mp4

echo Panovideo ${PANOIMG_PATH}

python dev/colmap_tools/src/cmd_tools/images2video.py \
    --input_path ${PANOIMG_PATH} \
    --output_path ${PANOVIDEO_FULLPATH} \
    --overwrite "True"

FeatureExtractor:feature_extractor.sh

source task_params.sh

IMG_PATH=data/${C_ID}/${SHOP_ID}/colmap/cut_img/${VIDEO_ID}/${SEG_ID}
PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}

# [CPU/GPU] SIFT 特征檢測
mkdir -p ${PROJ_PATH}/feature_extractor
colmap feature_extractor \
    # --SiftExtraction.use_gpu 0 \
    --ImageReader.camera_model OPENCV \
    --ImageReader.single_camera_per_folder 1 \
    --SiftExtraction.estimate_affine_shape=true \
    --SiftExtraction.domain_size_pooling=true \
    --database_path "${PROJ_PATH}/feature_extractor/database.db" \
    --image_path ${IMG_PATH}

SequentialMatcher:sequential_matcher.sh

source task_params.sh

PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}

# [GPU] SIFT 特征匹配  (強烈建議利用GPU川抡,否則極慢)
mkdir -p ${PROJ_PATH}/sequential_matcher
cp ${PROJ_PATH}/feature_extractor/database.db ${PROJ_PATH}/sequential_matcher/database.db
colmap sequential_matcher \
    --SiftMatching.guided_matching=true \
    --SiftMatching.use_gpu 1 \
    --database_path "${PROJ_PATH}/sequential_matcher/database.db"

ExhaustiveMatcher:exhaustive_matcher.sh

source task_params.sh

PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}

# [GPU] SIFT 特征匹配  (強烈建議利用GPU,否則極慢)
mkdir -p ${PROJ_PATH}/exhaustive_matcher
cp ${PROJ_PATH}/feature_extractor/database.db ${PROJ_PATH}/exhaustive_matcher/database.db
colmap exhaustive_matcher \
    --SiftMatching.guided_matching=true \
    --SiftMatching.use_gpu 1 \
    --database_path "${PROJ_PATH}/exhaustive_matcher/database.db"

Mapper:mapper.sh

目前 云端服務器 Mapper 速度明顯慢于臺式機割岛。此問題還待解決籽慢。。住诸。驾胆。

source task_params.sh

IMG_PATH=data/${C_ID}/${SHOP_ID}/colmap/cut_img/${VIDEO_ID}/${SEG_ID}
PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}
DB_PATH=${PROJ_PATH}/sequential_matcher/database.db
OUTPUT_PATH=${PROJ_PATH}/sparse

# [CPU] 稀疏重建  (僅用到了CPU, 建議采用CPU服務器計算,效費比更高)
mkdir -p ${OUTPUT_PATH}
colmap mapper \
    --database_path ${DB_PATH} \
    --image_path ${IMG_PATH} \
    --output_path ${OUTPUT_PATH} \
    # --Mapper.ba_global_max_num_iterations 10

Hierarchical Mapper:hierarchical_mapper.sh

目前 云端服務器 Hierarchical Mapper 速度明顯慢于臺式機贱呐。此問題還待解決丧诺。。奄薇。驳阎。

source task_params.sh

IMG_PATH=data/${C_ID}/${SHOP_ID}/colmap/cut_img/${VIDEO_ID}/${SEG_ID}
PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}
DB_PATH=${PROJ_PATH}/sequential_matcher/database.db
OUTPUT_PATH=${PROJ_PATH}/sparse

# [CPU] 稀疏重建  (僅用到了CPU, 建議采用CPU服務器計算,效費比更高)
mkdir -p ${OUTPUT_PATH}
colmap hierarchical_mapper \
    --database_path ${DB_PATH} \
    --image_path ${IMG_PATH} \
    --output_path ${OUTPUT_PATH} \
    # --Mapper.ba_global_max_num_iterations 10

稠密重建:第一步 undistorter.sh

source task_params.sh

IMG_PATH=data/${C_ID}/${SHOP_ID}/colmap/cut_img/${VIDEO_ID}/${SEG_ID}
PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}
SPARSE_PATH=${PROJ_PATH}/sparse
DENSE_PATH=${PROJ_PATH}/dense

# [CPU] 稠密重建 第一步 去畸變
mkdir -p ${DENSE_PATH}
colmap image_undistorter \
    --image_path ${IMG_PATH} \
    --input_path ${SPARSE_PATH}/0 \
    --output_path ${DENSE_PATH} \
    --output_type COLMAP \
    --max_image_size 3840

稠密重建:第二步 stereo.sh

source task_params.sh

PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}
DENSE_PATH=${PROJ_PATH}/dense

# [GPU] 稠密重建 第二步 stereo 
colmap patch_match_stereo \
    --workspace_path ${DENSE_PATH} \
    --workspace_format COLMAP \
    --PatchMatchStereo.max_image_size 1500 \
    --PatchMatchStereo.window_radius 9 \
    --PatchMatchStereo.geom_consistency true \
    --PatchMatchStereo.filter_min_ncc 0.07

稠密重建:第三步 fusion.sh

source task_params.sh

PROJ_PATH=data/${C_ID}/${SHOP_ID}/colmap/proj/${VIDEO_ID}/${SEG_ID}
DENSE_PATH=${PROJ_PATH}/dense

# [GPU] 稠密重建 第三步 fusion
colmap stereo_fusion \
    --workspace_path ${DENSE_PATH} \
    --workspace_format COLMAP \
    --input_type geometric \
    --output_path ${DENSE_PATH}/fused.ply
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馁蒂,一起剝皮案震驚了整個濱河市呵晚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌远搪,老刑警劉巖劣纲,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谁鳍,居然都是意外死亡癞季,警方通過查閱死者的電腦和手機劫瞳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绷柒,“玉大人志于,你說我怎么就攤上這事》夏溃” “怎么了伺绽?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗜湃。 經(jīng)常有香客問我奈应,道長,這世上最難降的妖魔是什么购披? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任杖挣,我火速辦了婚禮,結(jié)果婚禮上刚陡,老公的妹妹穿的比我還像新娘惩妇。我一直安慰自己,他們只是感情好筐乳,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布歌殃。 她就那樣靜靜地躺著,像睡著了一般蝙云。 火紅的嫁衣襯著肌膚如雪氓皱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天贮懈,我揣著相機與錄音匀泊,去河邊找鬼。 笑死朵你,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的揣非。 我是一名探鬼主播抡医,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼早敬!你這毒婦竟也來了忌傻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤搞监,失蹤者是張志新(化名)和其女友劉穎水孩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琐驴,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡俘种,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年秤标,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宙刘。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡苍姜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悬包,到底是詐尸還是另有隱情衙猪,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布布近,位于F島的核電站垫释,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏撑瞧。R本人自食惡果不足惜饶号,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望季蚂。 院中可真熱鬧茫船,春花似錦、人聲如沸扭屁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽料滥。三九已至然眼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葵腹,已是汗流浹背高每。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留践宴,地道東北人鲸匿。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像阻肩,于是被迫代替她去往敵國和親带欢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容