前言:
最近到了新的研究單位進行軟硬體的整合,工作主要是整合-三維電腦斷層掃描的系統。由於不管是影像接收裝置還是X-Ray的控制,或者是多軸平台的控制,都用了不同的控制介面。其中影像裝置(Flat Panel)用的是Camera Link(.net or .dll)而CMOS是(Active),X-ray(.net),多軸控制平台(GPIB/ RS232),X-Ray 頃角調整器為Modbus。這邊會稍微紀錄一些個別與整合上所遇到的問題以及解決方式(若有的話)。
原因與目的:
原本實驗室已有舊的整合系統(射線源、載物平台、影像系統),但是射線源的部份一直出現問題而無法完整的整合進去,且整個系統的使用流暢度上還有待加強(包含操作介面)。
挑戰點:
硬體面:
除了之前在南港與人合作藍芽無線射頻測試系統外,這個幾乎是全新的專案,相對於在NTU(包含以前),這次的介面用的更廣(RS232/Camera Link/Modbus...etc)。
用到的儀器有:
X-ray 射線源
Flat Panel/ CMOS
...
(硬體清單待補充)
軟體面:
撰寫所需的基礎更多(C/C++, Image...etc),因為廠商提供的source code並不是完整的低階support,而是已經封裝程中高階的指令(C++),雖然給了很多範例,但是對於C/C++沒有接觸的我,是個大挑戰。
整合部分:
前期主要的花了時間在學習C/C++語言以及理解廠商給的"範例",可惜的是原廠其實並沒有非常的"支援"底層程式的封裝,而有些原廠軟體內的指令也"沒有"在廠商提供的source code內(封裝成DLL file)。所以從中間稍微修改了一些部分已達成可以直接從Camera Link取回"最原始的緩衝資料",為什麼說是最原始的緩衝資料呢?因為根據廠商提供的範例裡面得知,從Camera Link取回的buffer必須在經過程序"UnscrambleALL"的處理,才能得到經過完整順序排列的一維陣列檔案。
經過初期的辛苦後,可以順利的A.設定Flat Panel的大部分參數(是的,只能夠設定大部分的參數!),還有B.取回沒有unscramble的初始檔案後,我就先開始進行整合的部份了。整合的部分我則是以Event-Queue-State Machine的架構為主,已經先整合進去的有Flat Panel以及載物平台的旋轉軸,而預留了載物平台的其他軸 & CMOS & X-Ray射線源的部份。
載物平台的設定比較簡單,因為經過RS232使用的是VISA即可以進行通訊,不過舊有的整合系統將VISA包裝成Stage專用的SubVI(包含儀器設定全包,載物平台全包),我個人覺得太過累贅,於是將其拆開寫成較小的控制元件(只針對最低階即可),這樣可以將載物平台(Stage)拆分為三個部份,在後續的整合上會更加靈活。
後記:
目前已經可以進行三維影像的拍攝(3D-CT),但是取得的仍然是原始的檔案,會藉由測試的時候,順便拍攝暗場與亮場的影像來研究如何進行Dark/ Flood校正,而影像儀器本身的缺陷點問題在之前已經解決,只是可以更進一步討論如何達到更佳的結果。
下一步:
試拍360度的影像圖、研究亮暗場校正、測試X-Ray的系統(64bit)、整合載物平台其他軸、整合系統架構的再優化。
關鍵字:
Three-Dimention Computed Tomography (3DCT)
LabVIEW
Image Acquisition