# AOI通用架構開發 ## MIL X教育訓練會議記錄 #### 時間日期:2023/03/28整日 #### 參與人員: - LINX:馮凱琳、平阜蓮、技術人員 - GMM:魏榮良、謝秉恒、許惟淳、洪英豪、黃士謙、溫少捷、謝懷億、伍希文、彭聖軒、簡士博、陳冠宇、吳承軒、魏麒庭、林建利、范植皓 #### 會議記錄:范植皓 ### 基礎知識 1. MIL X僅用CPU,不支援GPU 2. 物件結構:![](https://i.imgur.com/jIKiMHd.png) 3. 宣告順序: - Allocate:Top-Down - Free:Bottom-Up 4. 程式關閉時,未Free的物件會告知(或未按照順序Free) ### 程式相關 1. MappHookFunction:可接收錯誤訊息,作為錯誤處理使用 2. MappControl:可關閉MIL內建的ErrorMsgBox 3. Non-Paged Memory:分配給MIL使用的記憶體空間(PC RAM),開機即分配好。建議:抓10張Raw以上大小(說明手冊內建議1024MB) 4. GrabThread與ProccessThread可同時運行 5. 操作ChildBuf會影響原圖,因其使用指標操作 6. CreateBuf與Allocate差異:CreateBuf不須分配指標的記憶體空間,使用原傳入的指標 7. MbufImport與MbufLoad差異:MbufImport等於Load+Allocate 8. ModelFinder與PatternMatch差異:ModelFinder可以找旋轉、平移、縮放的Pattern 9. C#與MIL X的Pointer指標傳遞範例:MbufPut ### 待LINX回覆與後續討論: 1. 繪圖相關功能,利用找到的圓心與半徑自動生成新圖片或Mask等 2. Dongle版本、價格、借用議題 3. Multi-Proccess實際運作情況,是否建議關閉 ### 連絡資訊 - 視覺應用事業部 - 工程部工程組副理:馮凱琳(Kai Feng) - -886-2-2603-1600 ext. 136 - kaif@linx.tw - 業務部副理:平阜蓮(Ivy Pin) - 0917-547-192 - ivyp@linx.tw ## MIL X環境安裝 DebugTool 1. 下載並安裝MIL 10,[連結](https://drive.google.com/open?id=16HCd5xNLe3zl1rqdl_i7Wwucmpc7n02W&authuser=kaif%40linx.tw&usp=drive_fs) 2. MIL 10 LicenseKey Due 4/23 [連結](https://gmmcorp.sharepoint.com/:t:/s/GMM257-AOI/EcA1CDY0x2tHs7wb3fYuGiIBHQRtjo-BYYnQL8sB4ImPKA?e=DGlbsH) 3. 使用Visual Studio 2022 並安裝 Visual Cpp套件(MFC)。Visual Studio 2022->工具->取得工具與功能->Cpp桌面開發->MFC 4. 安裝OpenCV並加入環境變數 5. 修改引入MIL的路徑: - DebugTool->屬性->VC++路徑->MIL路徑->修改Include/LIB。![](https://i.imgur.com/iLz5Hqm.png) - DebugTool需要連結inspecDll.dll的位置。![](https://i.imgur.com/wkdezGV.png) - InspectDLL->屬性->VC++路徑->MIL路徑->修改Include![](https://i.imgur.com/TWWAzsO.png) - InspectDLL->屬性->VC++路徑->MIL路徑->修改LIB![](https://i.imgur.com/HorPERl.png) - InspectDLL需連結opencv![](https://i.imgur.com/ubPkykQ.png) 6. 如使用MIL10 -> pch.h內 USE_MIL8需要註解 7. X86->X64 ## ImgProccess10 環境 出現pch.h的錯誤 ![](https://i.imgur.com/z4kgWnO.png) 出現mil.h的錯誤 ![](https://i.imgur.com/LQ4tNYY.png) ## 學料流程 物料分類位置:`D:\GWRecipe\CLIENT_MACHINEYPE_VIEW(隨物料更改,e.g.ChipBond_KS962J_BS, ASEK_EDAM_TS.etc)`,以下將此位置稱為`Root` 建立第一個學料圖片:BaseDie.bmp;放置位置:`Root\BaseDie.bmp` 建立學料測試圖片集位置:`Root\0_Image`,丟幾十張影像,確定學料流程可以正確定位物料 ![](https://i.imgur.com/i5Q0u54.png) 開啟學料程式,若有正確放置物料位置,可以在紅圈處看見物料名 ![](https://i.imgur.com/y3lrxGh.png) 選物料名,點擊"建立新料" ![](https://i.imgur.com/PF9QBW1.png) 點擊"晶粒定位"->"開始取像" ![](https://i.imgur.com/AcoLuU9.png) 框選晶粒中選擇"矩形"or"四邊形",並拖曳框出物料邊界後,點按"框選完成" ![](https://i.imgur.com/T0byUf3.png) 拖曳PatternMatch的定位框至特徵上,點按"框選完成" ![](https://i.imgur.com/i0dV4ag.png) 此時`Root\1_DieAlign`會出現完成的物料設定檔案 ![](https://i.imgur.com/c5aowzU.png) 建立學料測試圖片集轉正後的存放位置`Root\3_InspSfc`,並依序建立`Root\3_InspSfc\0_ImgInput`、`Root\3_InspSfc\1_ImgGold`、`Root\3_InspSfc\2_GoldDiff` 點擊"篩選晶粒"->"轉正影像",可在`Root\3_InspSfc\1_ImgGold`看到學料測試資料集轉正結果 ![](https://i.imgur.com/xIQoL79.png) ### 錯誤處理 使用學料工具時,遇到**存取圖片時,發生共用違規**的錯誤訊息:圖片格式錯誤,將`Root/BaseDie.bmp`刪除,並用XnView將圖片全部轉成bmp格式 ![](https://hackmd.io/_uploads/Bk1ckQPVh.png) ## 通用架構Code Study