系統主畫面
尋找相機 | |
相機資訊 (相機型號 序號) | |
FPS 每秒張數 | |
開始啟像 | |
停止啟像 | |
儲存影像 | |
檢測功能 (有四個檢測功能) | |
顯示數據 (半徑比例、半徑差) | |
良品門檻值 | |
最大灰階值 | |
最小面積 | |
尋找相機 Find Device
按下「尋找相機 Find Device」,系統會偵測相機。
當系統並沒有相機時
當系統找到相機時
設定FPS
FPS: 每秒取像張數
開始取像 Start
停止取像 Stop
儲存影像 Save Image
檢測功能
曝光時間
系統主畫面
尋找相機 | |
相機資訊 (相機型號 序號) | |
FPS 每秒張數 | |
開始啟像 | |
停止啟像 | |
儲存影像 | |
檢測功能 (有四個檢測功能) | |
顯示數據 (半徑比例、半徑差) | |
良品門檻值 | |
最大灰階值 | |
最小面積 | |
尋找相機 Find Device
按下「尋找相機 Find Device」,系統會偵測相機。
當系統並沒有相機時
當系統找到相機時
設定FPS
FPS: 每秒取像張數
開始取像 Start
停止取像 Stop
儲存影像 Save Image
檢測功能
曝光時間
程式主畫面
程式功能
教導:每個焦段的偏移值與Motion Zoom Focus | |
RS232通訊埠設定 | |
搜尋相機 | |
相機的IP | |
開始取像 | |
停止取像 | |
載入校正檔 | |
儲存影像 | |
Color Map | |
是否套用影像偏移 | |
每個焦段的按鈕: 透過RS232下 ZOOMPOS positionTime.Sleep(3)透過RS232下 FOCUSPOSposition |
設定畫面
RS232通訊設定
影像明暗調整
調整影像灰階比例:new image = image x aplpha + beta | |
Min: 0 Max: 255 | Min: 18 Max: 179 |
佈署及執行程式:
噴液異常視覺檢測
鴻博資訊有限公司
系統架構圖
此專案規劃一台電腦最多可以跑四隻AOI程式,同時跑多隻AOI程式時的運行順暢度取決於電腦硬體本身的規格。
AOI程式與Modbus程式間是透過Socket進行通訊,每隻AOI程式需配置一個唯一序號,1到4號,當AOI程式偵測到異常時會發送一個訊號給Modbus程式,Modbus根據訊號中的AOI程式唯一序號,在對應的PLC Modbus位址上發送一個100 ms的ON訊號。
AOI ID | Modbus Address |
1 | 100 |
2 | 101 |
3 | 102 |
4 | 103 |
工業相機
官網:https://www.toshiba-teli.co.jp/en/products/industrial-camera/index.htm
請點選【Support】【Software Download】下載軟體SDK
【註】使用Ubuntu 22.04
下載TeliCamSDKforLinux_S5104031.zip
壓縮檔內容
請開啟Readme檔案
程式安裝路徑 /opt/TeliCamSDK
TeliViewer
說明文件:請參閱/opt/TeliCamSDK/documents/
啟用Dongle硬體
$ sudo vim /etc/udev/rules.d/99-my-hid.rules
99-my-hid.rules內容為:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”096e”, ATTRS{idProduct}==”0304″, MODE=”0666″
$sudo udevadm control –reload-rules
Modbus 程式
Listen Port:此欄位是設定與 AOI 程式 Socket 交握的埠。
Modbus Slave IP: 此欄位是設定 PLC 的網路 IP 位址。
Modbus Slave Port: 此欄位是設定 PLC 的網路埠。
Modbus Slave:此欄位是設定 PLC 的 Slave ID。
Start Address:此欄位是設定AOI異常位址。
AOI ID | Modbus Address |
1 | 100 |
2 | 101 |
3 | 102 |
4 | 103 |
如上圖:按下Start及Connection按鈕,啟動與AOI程式及PLC連線。
按上右上角的關閉按鈕,會提示此程式會隱藏並顯示在狀態列。
滑鼠移到Modbus 程式圖示上,按滑鼠右鍵,會跳出下列選單,按下【Show】則顯示主畫面;按下【Quit】則結果程式。
AOI程式
Camera下拉式選單,指定AOI程式連接的相機 Frame Rate:指定相機的Frame Rate Exposure (us):指定相機的曝光時間 micro second Connect:連接相機 Start:開始取像 Video:開始錄影 Demo:撥放Demo影片 Reset:清除 Demo影像 TCP Port:與Modbus通訊的Socket Port Modbus:此AOI程式的唯一識別碼 | |
Clear Count: 設定當Error Image大於100時,進行清除Error Image Error Image:開啟存放Error Image的路徑 Log:開啟Log的路徑 Video:開啟Video的路徑 About:程式的開發公司的聯絡資訊 Exit:結束程式 |
ROI Height:檢測區域的高度 ROI Width:檢測區域的寬度 ROI offset:檢測區域的Y軸位置的偏移 Min Row:設定原始影像X軸最低位置 Max Row:設定原始影像X軸最高位置 Min Area:噴嘴治具在影像中會打光成白色,最小的白色面積 Max Width:噴嘴治具在影像中會打光成白色,最大寬度 Min Gray:噴嘴治具在影像中會打光成白色,最低灰階值 Threshold:檢測區域會進行AOI分析會得到一個數值,大於 Threshold的設定值被判定為異常。 Show Bin:勾選時顯示Binary Image,未勾選顯示原始影像 Kernel:用於影像的的斷開 Set:儲存參數 |
Error Image路徑
About:程式的開發公司的聯絡資訊
異常影像
由左至右分為四個區塊:相機的觸發影像區塊,檢查異常的影像區塊,量測數據區塊、功能作業區塊。
設定:進入教導畫面
開啟相機:執行開啟相機操作
開始取像:執行連續取像 (相機中心點會顯示十字,用於相機鎖附時調整中心點)
曝光時間:執行變更相機曝光時間操作(以拖拉及輸入的方式)
連續取像:執行連續取像
教導影像:執行擷取影像到教導所需的影像
練習:連續取像
練習:教導影像
練習:
先設定ROI(檢測區域),輸入圓的座標(X,Y)及半徑R
設定外圈最及內圈的亮度值。建議初始值如下所示。
亮度設定值:數值越小,比較暗的區域也會被選取;數值越大,比較亮的區域才會被選取。
偏心率:是焦距(焦點之間的距離)與長軸長度之比。該值在區間 [0, 1) 中。為 0 時,橢圓變為圓形。數值越小代表趨近圓形。
偏心率就偏高0.77
周長:區域輪廓的周長
右側周長為3648 左側周長為4707
面積:區域佔了多少像素。下圖有絕緣片翹起的情況,會造成內圈面積的差異。
填滿面積:將綠色區域填滿的面積。如右圖白色后域為左圖綠色區域填滿。
半徑差:下圖綠色區域有兩個圓,外側圓、內側圓這兩個的圓的半徑值相減。
(此拉條設定曝光時間)
將教導參數儲存到檔案
放棄此次教導設定,回復初始設定
儲存教導中的影像
載入教導所需影像
用於查看指定的影像,當初為何被判定良品或不良品。
操作方式:
設定相機、是否儲存影像,儲存位置、Modbus通訊參數。
上圖紅色方框可以以拖拉的方式與填入數值的方式進行設定,建議從1000這個數值為基準進行設定,當影像藍色的區域比較像真實的顏色,不會過白、過暗,即完成設定。
下圖左側的影像會比右側好,因為右側的影像有過亮的情況。
進入「光學檢測參數設定」畫面,可以看到「步驟1. 原始影像」區塊,紅色圈ROI,其中心點座標及半徑。
圖一:為ROI 中心座標為(400,512)半徑400,設定數字後,按下「設定」進行套用。
圖二:為ROI 中心座標為(100,512)半徑400,設定數字後,按下「設定」進行套用。
圖三:為ROI 中心座標為(100,100)半徑400,設定數字後,按下「設定」進行套用。
圖四:為ROI 中心座標為(640,512)半徑100,設定數字後,按下「設定」進行套用。
圖五:為ROI 中心座標為(640,512)半徑300,設定數字後,按下「設定」進行套用。
圖六:為ROI 中心座標為(640,512)半徑400,設定數字後,按下「設定」進行套用。
可以看下圖左上角的區域,可以看到外圈的亮度的變化,亮點由80到255的變化。當製造發生異常造成外圈破損時,破損處的影像的光影變化處會呈現比較暗的情況。
圖一:請看右側的影像,外圈亮度80的變化。
圖二:請看右側的影像,外圈亮度90的變化。
圖三:請看右側的影像,外圈亮度100的變化。
圖四:請看右側的影像,外圈亮度110的變化。
外圈的亮度,目前的建議值為亮度100,比亮度100暗的情況就會造成外圈斷掉,檢測邏輯就可以檢出。
圖一:內圈亮度150,所呈現的影像
圖二:內圈亮度170,所呈現的影像
圖三:內圈亮度250,所呈現的影像
建議設定在250以上,可以看上面的圖示可以清楚正確的捉到內圈的輪廓。
可以發覺當發生這種異常時,就可以被AOI檢測出異常。
斷開設定為3的影像,可以看到外圈3點鐘方向有一點輕微的異常,如果這種情況也捉取的話,可以改設定為5,可以看看調整後的檢測情況。
可以看到斷開參數調整成5時,就可以正確捉到這種異常。
WSL2 環境
Java 環境
sudo apt install openjdk-17-jdk
Windows-based X Server
在Windows主機下查詢IP
修改WSL2中的~/.bashrc內容,增加一行
Android Studio環境
~/.bashrc 增加下列
執行Android-studio
下載額外的Hardware Profiles
由ARM 改成 x86_64
NPM 環境
click a to run on Android
鐵條計數
鴻博資訊有限公司
鐵條影像
採用AI的物件偵測邏輯
AI的物件偵測的邏輯是基於計算機視覺(Computer Vision)和深度學習技術。它的核心是透過模型學習如何從影像中自動識別出物件的位置和類別。以下是物件偵測的基本邏輯,以及它如何確定影像中的物件數量和位置。
物件偵測結合了兩個主要的任務:
展示瞭如何將圖像劃分為網格,使用邊界框和標籤來檢測和分類汽車、狗和人等物件。
使用AI技術進行實驗
第一步:拍攝多張影像
第二步:影像變形增量(變暗、變亮、放大、縮小、旋轉)
第三步:影像標記
第三步:訓練AI模型
第四步:訓練AI模型驗証、測試
206張實驗
在極暗、極亮、傾斜影像下的實驗結果
取像環境的規劃
Numpy Slice
數組的運算子:==,!=,~,&,|
數組軸對換 Axis Change
一元ufunc | |
abs, fabs | 計算絕對值 absolute value |
sqrt | 平方根 square root |
square | 平方 |
exp | 指數 expoent |
log, log10, log2, log1p | 自然對數 natural logarithm 底數:e, 10, 2, (1+x) |
sign | 各元素的正負號:1(正數), 0 (零), -1(負數) |
ceil | 計算該值的最大整數 |
floor | 計算該值的最小整數 |
rint | 四捨五入 |
modf | 以獨立數值的方式回傳數組的小數和整數部份 |
isnan | 回傳哪些值不是Nan的Boolean數組 |
isfinite, isinf | 單傳哪些值是有限值的Boolean數組 |
cos, cosh, sin, sinh, tan,tanh | 三角函式 |
arccos, arccosh, arcsin, arcsinh, arctan, arctanh | 反三角函式 |
logical_not | 計算各元素not x的真值 |
add | 各元素相加 |
substract | 各元素相減 |
multiply | 各元素相乘 |
divide, floor_divide | 除法或丟去餘數 |
power | 求數值的N次方 |
maximum, fmax | 求數值中的最大值 |
minimum, fmin | 求數值中的最小值 |
mod | 除法的餘數 |
copysign | 將第二數組中的值符號Copy給第一數組 |
greater, greater_equal, less, less_equal, equal, no_equal, logical_and, logical_or, logical_xor | >, >=, <, <=, =, !=, &, I, ^ |
Meshgrid
The purpose of meshgrid is to create a rectangular grid out of an array of x values and an array of y values.
np.where
統計方法
sum | 求總合 |
mean | 求平均值 |
std, var | 求標準差和方差 |
min, max | 最小值和最大值 |
argmin, argmax | 最小值的索引值和最大值的索引值 |
cumsum | 與前一欄的值累相加 |
cumprod | 與前一欄的值累相乘 |
Sensor Size:12.441 mm x 9.830 mm
Resolution: 2592 x 2048
Focal Length: 12mm
The physical size of each pixel:
The projected width of the object:
Magnification:
Distance:
The projected width of the object:
Magnification:
Distance:
光學校正:
關鍵元件:
NO | 規格 | 相片 |
1 | UI-3884LEResolution:6.41 MPixOptical class:1/1.8″Pixel size:2.40 µm | |
2 | 6mm FL, Liquid Lens M12 LensFocal Length FL (mm): 6.0mm | |
3 | 校正片7×7 12.5mm | |
4 | 筆記本21 cm X 15 cm |
拍攝校正片
相機內參矩陣 | [[2234.9151650412764, 0.0, 1613.33369580123], [0.0, 2245.021094475966, 1096.3297700427615], [0.0, 0.0, 1.0]] |
畸變係數 | [[-0.27468132182099425, 0.19905562857571302, -0.002831944837372181, -0.01046052609357293, -0.1759195932009981]] |
旋轉向量 | [[-0.01961335538368109], [-0.064561685464345], [-0.048599163141283534]] |
平移向量 | [[-245.4462037894694], [-234.68707345975994], [589.3447597554461]] |
旋轉矩陣 | [[0.9967368360429331, 0.04917594469298315, -0.06401098451575252], [-0.04791040290857523, 0.9986275099612804, 0.02115867769193121], [0.06496362804109107, -0.01802284139878348, 0.9977248639878897]] |
情境一:
情境一:
量測邏輯實作(A):
不同高度,不同的葉子堆疊個數(B):
A 所得到的葉面積 X B 依距對焦數值來決定葉子堆疊的倍率= C 得到預估的葉面積
假設: A 的數值為 100,B的數值為10 故預估的葉面積為100 X 10 = 1000
系統會提供一個實際調校功能,當使用者判斷實際面積為 800時,系統會根據800的數值去調校不同對焦數值的倍率。之後會跟據調校後的倍率來計算面積。
每一個拍攝的視野範圍有多個株植栽
目前系統只能以計算出來的總面積來等分有多少植栽