2022年6月15日 星期三

窮人版的3D掃描儀,CICLOP

3D物件模型的來源有三,網路下載,程式自製,自行掃描既有物品。掃描的原理眾多,族繁不及備載,實際可運作商品也不少,例如Revopoint POP2 或Mini (連結),這裡討論的是Maker等級CICLOP,原理是藉由拍攝和計算單條雷射光在物體表面構成的線條,取得單一軸線的二維位置,再由旋轉補充整個物件。

  • 硬體:整套僅台幣二千多元,連結,安裝步驟(連結),該偷的料都沒少(螺帽都是塑膠)。原本擔心粗製濫造零件衍生的組裝公差造成影響,最後發現都是多餘(理由後述)。
  • 軟體
    • 初次下載WIN版本,整包下載雖然立刻可用,但效果不佳,直到由理論開始重新了解運作機制,終於掃描出勉強可看成品。
    • UI開發環境為wxpython,對比於wxqt的參考範例較多。
    • 顯示部份使用python-opengl(並非open3d,也無關point cloud套件)。
    • porting: 熱心人士維護系統(連結 ,有藍色的雷射)。
  • 校正
    • WEBCAM,先對chess board拍攝進行校正(隨便拍攝十五張照片),計算出變形等資訊,因此決定了相機角度位置。理論上,只要對焦位置更近,雷射線條夠細,應該可以掃描更微小的項目。
    • 雷射,首先拍攝一張曝光很低的相片,然後打出雷射並且拍照,利用OpenCV取得最亮線條,因此計算出雷射的射出面,也就是雷射的法向量。在此條件下,雷射位置不重要,相反的螺絲鎖緊些才能得到穩定的數值。光線均質也是重點。
    • 旋轉平台,理論上,到這階段為止就可取得物體相對於相機的座標系統,若是要放到轉台上,首先要知道轉台位置,程式介面會抓取chess board左下角點,且維持並fit到圓上,計算出圓心。盤面高度不重要(輸入27mm)。其中馬達會有卡頓現象,溫度偏高,需要處理。
  • 掃描
    • 理論上左右雷射可擇一運作。掃描過程會取得某一切面全線點位置,以及當時的顏色。轉動轉盤,被動的將360度資訊組合為一物體。
    • 雙雷射的結果,會進行疊合,理論上應該緊密重疊,實際卻有誤差(還找不出原因,猜測原因是背景干擾反光),雙雷射的優點是可拍攝到被遮蔽凹處。
    • 掃描BUG,物體粉紅色區域會影響位置,如口腔下半部,及某個顏色的神奇寶貝。透過掃描界面中觀察雷射取像畫面,會發現粉紅色與雷射顏色太接近而白成一片。這可以用噴灰漆或更換雷射顏色解決。
  • 結果儲存
    • PLY檔案,但檔頭有誤,程式庫中有提到STL但尚未完成。
    • PLY轉換STL技巧,連結 連結,特別安裝meshlab後發現兩邊網格密度不同。

----

程式說明 目錄架構,使用siglon將GUI和engine區分

python horus.py

>engine

    >algorithms

    >calibration

    >driver

        >uvc

    >scan

    >uvc

        >mac

.gui

    >util

    >wazard

    >workbench

        >adjustment

        >calibration

            >pages

        >control

        >scanning

        main開始 

>util

    >mesh_loaders

    >meshLoaders


沒有留言:

張貼留言