最新訊息
 
液面高度檢測
 

Bottle Inspector Part2 : Measuring Liquid Level

-- Bottle Inspector Part2 : Measuring Liquid Level --

§ 目的

編寫一個 "Macrofilter" 從影像中找出每個瓶中所裝液體容量的高度

§ 過程

一組瓶裝影像存放在一個單一目錄中
表示每一瓶瓶蓋中間點的點陣列

§ 結果

建立一個回圈名為 "Liquidlevel" 的 "Macrofiliter"
  • 即顯示液體的水平 (如:Point2DArray)
  • 即顯示液面高度是正確的 (如: BoolArray)
  • § 提示

  • 線穿過液面高度的亮度,如下所示:

  • 利用 "ScanSingleEdge" filter 可以設定一個液體和一瓶空白處間的邊界值,找出此邊緣
  • 掃描這個邊緣路徑是必要的,可以用公式來創建一個新的段,輸入基準點來掃描路徑
  • 為了得到這一點,我們可以用一個公式提出有效的液面高度,給予比較點的Y坐標與有效的液面高度一些假設值
  • 利用 "ClassifyByPredicate" filter 分割數組分成兩個分離的陣列
  • § 解決方案

    我們要利用輸入點,建立一個公式去掃描路徑

    1. 加入"Empty formula"

    • 增加輸入"inOffsetY" Real type, 調整掃描路徑的位置
    • 增加輸入"inLength" Real type, 掃描長度輸出
    • 增加輸出"OutSegment" Segment2D type, 傳回新建立的段
    • 建立一個新的段,需利用 Segment2D 建構函式要求提供兩組端點(x1, y1, x2, y2)坐標
    2. 我們可以基於輸入點建立兩個端點。需要讀取 Point2D 的性質。端點由 inOffsetY 的 Y 光點和第二個端點 inLength。如下圖示顯示的公式:

    3. 建立掃描路徑後,我們應利用它:

    • 加入 "ScanSingleEdge" filter 將 inScanPath 輸入做連結,InScanwidth 設定高達 30,改善掃描效果。
    • 加入 "RemoveNils" filter Point2D type, 在"ScanSingleEdge" filter 傳回值為 Nil 時,和它做連結
    • 加入 "Formula" filter, 如果檢查發現液面是正確的,我們需要建立一個新的公式,比較邊緣點的 Y 光點和一些 inMaxvalue 任意值。如下圖示顯示的公式:

    4. 接下來,我們可以使用此公式的輸出點陣列分成兩個陣列
    5. 利用 "ClassifyByPredicate" filter, inPrediciate 和上面公式的輸出做連結,和點的陣列做第二輸入,在於表示第一個數組包含已通過驗收,第二個數組將呈現無效的點。

    § Macrofilter LiquidLevel finds liquid level from provided image

    § 附註

  • 建立 macrofilter, 計算來自所有影像的平均液面高度
  • 利用計算出的平均液面測得水平與平均水平20%的邊緣進行分類
  •  
    特別聲明:本網站為汎叡有限公司版權所有,請尊重智慧財產權,未經允許請勿任意轉載、複製或做商業用途
    所使用的所有商標名稱, 分屬各商標註冊公司所有。
    Copyright c 2009 Fadracer Technology Inc. All Rights Reserved.
    汎叡有限公司 TEL:+886-2-2585-8592 FAX:+886-2-2598-8802 E-MAIL:[email protected]