1.全局閾值:機(jī)器視覺需要處理的圖像中包括目標(biāo)特征、目標(biāo)特征以外的背景和噪聲。全局閾值就是在設(shè)定的閾值范圍內(nèi)將灰度圖像處理成白色像素,灰度圖的灰度范圍為0~255,此閾值處理方法適用于目標(biāo)特征和背景對比度大的圖像。
2.自動閾值:使用OTSU算法計算最佳閾值并對圖像進(jìn)行二值化處理。OTSU算法將二值后的白色像素和黑色像素看成是兩類,算法的思想則是尋找最佳的閾值使得二值后黑白兩類像素的類間方差最大化。
3.局部閾值:局部閾值可分為局部自動閾值和局部閾值。
A.局部閾值是根據(jù)ROI區(qū)域進(jìn)行閾值分割。
B.局部自動閾值則是根據(jù)ROI區(qū)域內(nèi)的像素的鄰域塊的像素值分布來確定該像素位置上的二值化閾值。亮度較高的局部自動閾值的區(qū)域二值化閾值通常會較大,而亮度較低的局部自動閾值的區(qū)域二值化閾值則會相應(yīng)地變小。不同亮度、對比度、紋理的局部圖像區(qū)域?qū)碛邢鄬?yīng)的局部二值化閾值。
![機(jī)器視覺運動控制一體機(jī)實現(xiàn)圖像閾值分割](https://file.elecfans.com//web2/M00/33/F4/pYYBAGIhiXiAcC5tAADKs9yEdKA289.png)
背景
在實際的機(jī)器視覺項目應(yīng)用當(dāng)中圖像質(zhì)量效果是視覺處理方案能否準(zhǔn)確和穩(wěn)定運行的關(guān)鍵因素。
圖像質(zhì)量的最佳效果是需要將特征目標(biāo)突出顯示,同時弱化與特征目標(biāo)無關(guān)的背景和干擾噪點。圖像閾值分割處理是最簡單,也是最常用的圖像預(yù)處理方法,適用于處理目標(biāo)特征和背景像素灰度值差異明顯的圖像。
在上期課程中,我們講述了如何使用VPLC系列視覺運控一體機(jī)使用相機(jī)進(jìn)行相關(guān)采集操作的課程。本期課程正運動小助手給大家分享一下VPLC系列視覺運控一體機(jī)進(jìn)行圖像閾值分割的課程。
01VPLC控制器
(一)VPLC516E構(gòu)架圖
![機(jī)器視覺運動控制一體機(jī)實現(xiàn)圖像閾值分割](https://file.elecfans.com//web2/M00/33/F4/pYYBAGIhiXmAJjc5AAHwP9xOV5Q462.png)
(二)課前準(zhǔn)備
1.電腦一臺,安裝ZDevelop3.10以上版本軟件
2.VPLC516E一臺
3.24V直流電源一個
4.網(wǎng)線一根
5.WinSCP軟件
6.電線若干
02課程主要使用的指令
![機(jī)器視覺運動控制一體機(jī)實現(xiàn)圖像閾值分割](https://file.elecfans.com//web2/M00/33/F4/pYYBAGIhiXmAZYaOAABlrdpko-A786.png)
03軟件實現(xiàn)
1.打開ZDevelop軟件:新建名稱為“圖像分割.zpj”項目→新建“HMI”文件→新建“Basic.bas”文件(用于編寫界面響應(yīng)函數(shù)、并開啟HMI自動運行任務(wù))→新建“相機(jī)采集.bas”文件(用于實現(xiàn)相機(jī)采集功能)→新建“初始化.bas”文件(用于初始化測量參數(shù))→新建“draw.bas”文件(用于更新繪制ROI數(shù)據(jù))→文件添加到項目。
![機(jī)器視覺運動控制一體機(jī)實現(xiàn)圖像閾值分割](https://file.elecfans.com//web2/M00/33/F4/pYYBAGIhiXmAMFGrAAAWZszcJ2U876.png)
2.設(shè)計HMI主界面和關(guān)聯(lián)它的控件變量。
3.編寫圖像比例縮放和平移的執(zhí)行函數(shù)。
圖像分割執(zhí)行程序
GLOBAL sub main()
? ?'先采集一張圖
? ?ZV_IMGCOPY(GrabImg,testImg)? ? '復(fù)制圖像?
? ?'全局圖像二值化分割
? ?if img_flag=0 THEN
? ? ? if auto_switch=0 THEN '手動閾值??
? ? ? ? ?ZV_THRESH(testImg,globalImg,ga_binaryzation(0),ga_binaryzation(1))? ? '閾值化生成二值圖像
? ? ? ? ?ZV_LATCH(globalImg,1)? ??
? ? ? elseif auto_switch=1 THEN? '自動閾值
? ? ? ? ?ZV_AUTOTHRESH(testImg,globalImg,0)? ? '自動閾值化生成二值圖像
? ? ? ? ?ZV_LATCH(globalImg,1)
? ? ? ? ?DMCPY? ga_binaryzation(0),table(0),2? ? ??
? ? ? endif
? ?'局部圖像二值化分割
? ?elseif img_flag=1 THEN? ??
? ? ? ZV_IMGCOPY(testImg,localImg)? ? '復(fù)制圖像
? ? ? ZV_REGENRECT(rect_region,d_roi_rect(0),d_roi_rect(1),d_roi_rect(2)-d_roi_rect(0),d_roi_rect(3)-d_roi_rect(1)) '生成矩形區(qū)域? ??
? ? ? if auto_switch=0 THEN '手動閾值? ? ? ?
? ? ? ? ?ZV_RETHRESH(localImg,rect_region,binaryzation_re,ga_binaryzation(0),ga_binaryzation(1))? ? '圖像二值化生成區(qū)域?
? ? ? ? ?ZV_REGION(localImg,rect_region,0,rgb(0,0,0))? ? '在img圖像中繪制指定區(qū)域黑色
? ? ? ? ?ZV_REGION(localImg,binaryzation_re,0,rgb(255,255,255))? ? '在img圖像中繪制指定區(qū)域成白色
? ? ? ? ?ZV_LATCH(localImg,0)??
? ? ? elseif auto_switch=1 THEN '自動閾值? ? ?
? ? ? ? ?ZV_REAUTOTHRESH(localImg,rect_region,binaryzation_re,0)? ? '圖像自動二值化生成區(qū)域??
? ? ? ? ?ZV_REGION(localImg,rect_region,0,rgb(0,0,0))? ? '在img圖像中繪制指定區(qū)域黑色
? ? ? ? ?ZV_REGION(localImg,binaryzation_re,0,rgb(255,255,255))? ? '在img圖像中繪制指定區(qū)域成白色
? ? ? ? ?ZV_LATCH(localImg,0)
? ? ? ? ?DMCPY? ga_binaryzation(0),table(0),2? ? ? ?
? ? ? endif? ??
?本次,正運動技術(shù)【機(jī)器視覺運動控制一體機(jī)小課堂】三分鐘實現(xiàn)圖像閾值分割,就分享到這里。
審核編輯:湯梓紅
?
?
評論