背景
ROI即感興趣區(qū)域是我們機(jī)器視覺圖像處理經(jīng)常使用的基本功能。在實(shí)際的視覺檢測(cè)項(xiàng)目過(guò)程中,我們將待檢測(cè)目標(biāo)的檢測(cè)特征框選出來(lái)的區(qū)域稱作ROI(感興趣區(qū)域)。使用ROI功能我們可以針對(duì)性的處理目標(biāo)特征,提升檢測(cè)效率和準(zhǔn)確性,同時(shí)還可以過(guò)濾掉環(huán)境中引入的干擾因素。
ROI創(chuàng)建有以下兩個(gè)優(yōu)點(diǎn):
1.可縮減處理圖像的區(qū)域范圍,減少圖像像素處理量,縮短圖像處理時(shí)間,提升效率。
2.基準(zhǔn)模板。框選檢測(cè)目標(biāo)特征后可過(guò)濾掉干擾因素,提高檢測(cè)方案的準(zhǔn)確度。
在采集到一張圖像后,即可在圖像上框選感興趣的區(qū)域創(chuàng)建ROI。
常見的ROI類型有:矩形、旋轉(zhuǎn)矩形、圓形、圓環(huán)。本期課程以創(chuàng)建矩形ROI為例。
在上期課程中,我們講述了如何使用 VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)進(jìn)行圖像開閉運(yùn)算的課程。本期課程正運(yùn)動(dòng)小助手給大家分享一下VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)對(duì)圖像進(jìn)行ROI創(chuàng)建的課程。
01VPLC控制器
(一)VPLC516E構(gòu)架圖
(二)課前準(zhǔn)備
1.電腦一臺(tái),安裝ZDevelop3.10以上版本軟件
2.VPLC516E一臺(tái)
3.24V直流電源一個(gè)
4.網(wǎng)線一根
5.WinSCP軟件
6.電線若干
02課程主要使用的指令
1.SET_REDRAW -- 指定區(qū)域重新繪制(需要在自定義元件的刷新函數(shù)中使用)
SET_REDRAW ([x, y, width, height])
X,Y:顯示區(qū)域左上角的坐X、Y坐標(biāo)位置
width,height:區(qū)域?qū)捄透?/p>
2.MOUSE_SCAN -- 掃描觸摸按下動(dòng)作
MOUSE_SCAN (num)
參數(shù):
num:觸摸對(duì)應(yīng)的位置的X、Y坐標(biāo)分別存儲(chǔ)在table(num), table(num+1)
3.ZV_HMIADJRECT -- 矩形ROI調(diào)整
hittype = ZV_HMIADJRECT(mousex,mousey,tab_rect,hittype)
參數(shù):
mousex:HMI 控件的鼠標(biāo)X坐標(biāo)
mousey:HMI 控件的鼠標(biāo)Y坐標(biāo)
tab_rect:保存矩形ROI參數(shù)的TABLE索引,依次為ltx、lty、 rbx、rby,即分別為正矩形左上角坐標(biāo)ltx、lty,右下角坐標(biāo)rbx、 rby,對(duì)應(yīng)的是hmi控件坐標(biāo)系下的值,調(diào)整后的值將直接替換調(diào)整前的值。
hittype:指定擊中區(qū)域編號(hào),表示指令要調(diào)整的矩形對(duì)應(yīng)部分,為-1時(shí)表示無(wú)效編號(hào),不對(duì)矩形做調(diào)整;為有效編號(hào)時(shí)則調(diào)整矩形對(duì)應(yīng)的部分。按下鼠標(biāo)左鍵則返回當(dāng)前選中的擊中區(qū)域編號(hào),按住鼠標(biāo)左鍵不放再移動(dòng)鼠標(biāo)表示在不斷地在調(diào)整指定編號(hào)所對(duì)應(yīng)的矩形部分,此時(shí)返回的擊中區(qū)域編號(hào)與輸入的編號(hào)一致。
返回值:
hittype:根據(jù)鼠標(biāo)點(diǎn)擊位置計(jì)算的新的擊中區(qū)域編號(hào)
4.MOUSE_STATE -- 讀取觸摸狀態(tài)
MOUSE_STATE (num)
參數(shù):
num:觸摸對(duì)應(yīng)的位置的 X,Y 坐標(biāo)分別存儲(chǔ)在 table(num), table(num+1)
5.HMI_CONTROLSIZEX -- 獲取控件寬度
HMI_CONTROLSIZEX ([winid, controlid])
參數(shù):
winid:HMI文件里面窗口編號(hào)
controlid:元件編號(hào),缺省為當(dāng)前自定義元件寬度
6.HMI_CONTROLSIZEY -- 獲取控件高度
HMI_CONTROLSIZEX ([winid, controlid])
參數(shù):
winid:HMI文件里面窗口編號(hào)
controlid:元件編號(hào),缺省為當(dāng)前自定義元件高度
7.ZV_POSTOIMG -- HMI控件坐標(biāo)轉(zhuǎn)圖像坐標(biāo)
ZV_POSTOIMG(latch_id,num,tab_in_id,tab_out_id)
參數(shù):
latch_id:鎖存通道號(hào)
num:坐標(biāo)點(diǎn)數(shù)量
tab_in_id:存放轉(zhuǎn)換前坐標(biāo)點(diǎn)的TABLE索引,num個(gè)坐標(biāo)點(diǎn)數(shù)據(jù)依次為x、y、x、y......
tab_out_id:存放轉(zhuǎn)換后坐標(biāo)點(diǎn)的TABLE索引
8.DRAWRECT --繪制矩形
DRAWRECT(x1,y1,x2,y2)
參數(shù):
x1,y1:顯示區(qū)域左上角的坐標(biāo)位置
x2,y2:顯示區(qū)域右下角的坐標(biāo)位置
03軟件實(shí)現(xiàn)
1.打開ZDevelop軟件:新建名稱為“創(chuàng)建ROI.zpj”項(xiàng)目→新建“HMI”文件→新建“main.bas”文件(用于編寫界面響應(yīng)函數(shù)、并開啟HMI自動(dòng)運(yùn)行任務(wù))→新建“相機(jī)采集.bas”文件(用于實(shí)現(xiàn)相機(jī)采集功能)→新建“初始化.bas”文件(用于初始化測(cè)量參數(shù))→文件添加到項(xiàng)目。
2.設(shè)計(jì)HMI主界面和關(guān)聯(lián)它的控件變量。
3.編寫實(shí)現(xiàn)對(duì)圖像進(jìn)行ROI創(chuàng)建的執(zhí)行函數(shù)。
'ROI創(chuàng)建的執(zhí)行函數(shù)
GLOBAL SUB update_roi()
local is_redraw,lv_i
SET_REDRAW '全局繪制
if ROI_flag=1 THEN
if mouse_scan(11) = 1 then '掃描鼠標(biāo)按下操作
hit_pos = ZV_HMIADJRECT(table(11), table(12), 25, -1) '獲取調(diào)整區(qū)域標(biāo)志
is_redraw = 1 '將繪圖標(biāo)志置1
endif
if mouse_scan(11) = -1 then '掃描鼠標(biāo)松開操作
ZV_HMIADJRECT(table(11), table(12), 25, hit_pos) '調(diào)整ROI的位置
is_redraw = 1 '將繪圖標(biāo)志置1
endif
if (MOUSE_state(11)) then
ZV_HMIADJRECT(table(11), table(12), 25, hit_pos) '調(diào)整ROI的位置
is_redraw = 1 '將繪圖標(biāo)志置1
endif
if (TABLE(25) >= 0) AND (TABLE(27) <= and="">= 0) AND (TABLE(28) <= HMI_CONTROLSIZEY(10,2))? THEN
TABLE(30) = TABLE(25) ' CX
TABLE(31) = TABLE(26) ' CY
TABLE(32) = TABLE(27) ' Width
TABLE(33) = TABLE(28) ' Height
ELSEIF (TABLE(25) < 0) OR (table(27) > HMI_CONTROLSIZEX(10,2)) OR (table(26) < 0) OR (table(28) > HMI_CONTROLSIZEY(10,2)) THEN
TABLE(25) = TABLE(30)
TABLE(26) = TABLE(31)
TABLE(27) = TABLE(32)
TABLE(28) = TABLE(33)
endif
if (1 = is_redraw) then
is_redraw = 0 '將繪圖標(biāo)志置0
ZV_POSTOIMG(0, 2, 25, 15)'將ROI的控件坐標(biāo)數(shù)據(jù)轉(zhuǎn)到圖像坐標(biāo)數(shù)據(jù)
d_roi_rect(0) = TABLE(15)'將ROI的圖像坐標(biāo)數(shù)據(jù)賦值給定義的變量
d_roi_rect(1) = TABLE(16)
d_roi_rect(2) = table(17)
d_roi_rect(3) = table(18)
SET_REDRAW '全局繪制
endif
endif
ENDSUB
'ROI區(qū)域更新后實(shí)時(shí)繪制ROI區(qū)域
GLOBAL SUB draw_roi()
if ROI_flag= 1 THEN
SET_COLOR(rgb(0,255,0)) '設(shè)置繪制時(shí)畫筆的顏色為綠色
'繪制矩形
DRAWRECT(table(25),table(26),table(27),table(28))
'繪制十字標(biāo)
DRAWLINE((table(25)+table(27))/2-5,(table(28)+table(26))/2,(table(25)+table(27))/2+5,(table(28)+table(26))/2)
DRAWLINE((table(25)+table(27))/2,(table(28)+table(26))/2-5,(table(25)+table(27))/2,(table(28)+table(26))/2+5)
endif
END SUB
本次,正運(yùn)動(dòng)技術(shù)【機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)小課堂】三分鐘對(duì)圖像進(jìn)行ROI創(chuàng)建,就分享到這里。
審核編輯:湯梓紅
-
機(jī)器視覺
+關(guān)注
關(guān)注
162文章
4406瀏覽量
120734 -
一體機(jī)
+關(guān)注
關(guān)注
0文章
924瀏覽量
32844 -
運(yùn)動(dòng)控制
+關(guān)注
關(guān)注
4文章
588瀏覽量
32984
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論