Measure the Objects -- Measure the Objects --
§ 目的
量測所提供影像中的物件寬度。結果應通過標有毫米為單位的測量寬度適當尺寸線
§ 過程
一組描繪單一物件測量。圖像儲存在 PNG 格式
§ 結果
在物件上繪製測量其寬度,測得的值應以毫米為單位
§ 提示
利用 1D Edge detection 和 Template Matching 兩種最常用來的技術解決,在第一部分發現該物件,之後計算出的物件進行測量
- 選擇一個影像為範本。這個模組沒有包含整個物件,模組可能只包含物件特性的一部分。選擇的物件也可能只有一部份。
- 準備的模型應當用於尋找物件的影像上。使用 "LocateSingleObject_EdgeBased" filter 使永遠只有一個物件被描繪在影像上。
- 檢測物件上兩個段的位置方式。在第一種解決方案中,可用 "ScanSingleStripe" filter,但必須確保物件中不會有亮暗,這可能會有影響,如果光線條件可以隨時間變化的話。在第二個解決方案,使用 "ScanMultipleEdges" filter,在結果中,第一個和最後發現的邊緣,掃描路徑會省略。
- 為了測量物件的寬度,應該準備掃描路徑。考慮到,該物件可能轉動或移動。因此,有必要使用物件序列通過定位物件找到符合的資料。掃描路徑必須使用先前選定的影像做準備。
- 這是一個很好的做法,建立 macrofitler 將包含所有的繪圖除了測量邏輯。這也使得項目更加清晰。
§ 解決方案
1. "EnumerateFiles" filter 和 "LoadImage" filter 呼叫影像
2. 取得影像加載到全局參數中,並命名此參數為 BaseImage
3. "LocateSingleObject_EdgeBased" filter 並打開其編輯器進行輸入 inEdgeModel :
- 選擇一張影像做為背景
- 標示著坐騎邊界,最小的孔在中間。該選擇將足以偵測其他物體
- 範本物件,設 3.5 旋轉角度
4. "ScanSingleStripe" filter 將其掃描路徑上的影像,連接 inScanPathAlignment 和 "LocateSingleObject_EdgeBased" filter 做輸出
§ Macrofilter Main finds object and calculates object's width.
§ Macrofilter DrawResults draws measured width on the input image