---
# System prepended metadata

title: AOI通用架構開發

---

# 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











