




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>一、課程介紹機(jī)器視覺是一門多學(xué)科交叉的新興學(xué)科,在各行各業(yè)有著廣泛的應(yīng)用,隨著計算機(jī)技術(shù)、人工智能技術(shù)的發(fā)展,新時代十年的偉大變革,企業(yè)轉(zhuǎn)型升級,在制造領(lǐng)域,對設(shè)備的自動化、智能化要求越來越高,機(jī)器視覺的作用愈發(fā)重要,機(jī)器視覺是智造系統(tǒng)中不可或缺的一環(huán),起到橋梁的作用,為設(shè)備裝上了“眼睛”,可以讓機(jī)器通過“眼睛”獲取現(xiàn)場信息、并對信息進(jìn)行分析、處理判斷,根據(jù)信息處理結(jié)果給出相應(yīng)信號,驅(qū)動后續(xù)操作,在重復(fù)度較高、環(huán)境差、檢測、機(jī)器人引導(dǎo)定位等場合得到了廣泛的應(yīng)用。二、課程目標(biāo)要求通過本課程學(xué)習(xí),可以掌握一些計算機(jī)知識、數(shù)字圖像處理知識和數(shù)學(xué)知識。通過本課程學(xué)習(xí),要活躍思維,敢于創(chuàng)新,樹立科技強(qiáng)國的理想和信念。三、課程內(nèi)容總結(jié):1、機(jī)器視覺在智造中應(yīng)用越來越廣泛,我們要熟悉機(jī)器視覺的地位和作用,為我國的智造2025貢獻(xiàn)自己的力量。2、掌握一種機(jī)器視覺開發(fā)工具,Halcon是個不錯的選擇。3、體會一下Halcon開發(fā)的過程。讓我們共同努力助力中國智造!機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>項目1認(rèn)識機(jī)器視覺及Halcon開發(fā)軟件【知識目標(biāo)】1.了解機(jī)器視覺系統(tǒng)的概念,掌握機(jī)器視覺系統(tǒng)的結(jié)構(gòu)組成,了解各部分的作用;2.了解Halcon軟件的界面,知道各窗口、菜單、工具的作用;3.了解Halcon軟件的編程方式。1、學(xué)會利用網(wǎng)絡(luò)資源,資料搜集能力;2、掌握編程語言的學(xué)習(xí)方法。1、素質(zhì)高、專業(yè)技術(shù)全面、技能熟練的大國工匠、高技能人才;2、樹立科技強(qiáng)國的理念?!灸芰δ繕?biāo)】【素養(yǎng)目標(biāo)】熟悉機(jī)器視覺系統(tǒng)利用HALCON編寫第一個程序
認(rèn)識HALCON軟件任務(wù)1任務(wù)2任務(wù)3熟悉機(jī)器視覺系統(tǒng)任務(wù)11課時【任務(wù)要求】1、掌握機(jī)器視覺的概念;2、了解機(jī)器視覺的應(yīng)用場合和優(yōu)勢;3、能繪圖說明機(jī)器視覺系統(tǒng)的組成部分。一、定義:機(jī)器視覺(MachineVision)是一門涉及到計算機(jī)、圖像處理、模式識別、人工智能、信號處理、光機(jī)電一體化等多個領(lǐng)域的交叉學(xué)科,主要利用計算機(jī)來模擬人的視覺功能,從客觀事物的圖像中提取所需特征信息,進(jìn)行加工處理并加以解析,最終根據(jù)分析結(jié)果來實現(xiàn)檢測、測量和定位等。機(jī)器視覺:機(jī)器:視覺的主體,動作的控制和執(zhí)行部分視覺:機(jī)器的眼睛,信息的輸入端,采集(有目的的采集)
采集的樣式---圖像
圖像處理系統(tǒng)二、機(jī)器視覺系統(tǒng)
機(jī)器視覺標(biāo)準(zhǔn)體系
典型行業(yè)應(yīng)用電子制造汽車制造印刷包裝軌道交通鋰電制造卷煙生產(chǎn)光伏制造生物制藥輕工皮革
圖像信息獲取相機(jī)鏡頭光源圖像采集卡控制器配件
智能決策執(zhí)行AI能力平臺
四大應(yīng)用方向
檢測定位測量識別模式識別機(jī)器學(xué)習(xí)深度學(xué)習(xí)
信息處理平臺
機(jī)器視覺算法庫
圖像分析處理嵌入式視覺處理HalconNiVisionOpenCVVisioproPCBaseGPUNPU2.1機(jī)器視覺系統(tǒng)應(yīng)包括:圖像采集模塊;圖像處理模塊;與其它軟硬件協(xié)同交互模塊(控制模塊)圖像采集模塊:圖像采集模塊主要由工業(yè)相機(jī)、鏡頭和光源組成。圖像處理模塊:該部分工作由計算機(jī)完成,計算機(jī)是視覺系統(tǒng)的核心,采集的圖像數(shù)據(jù)輸入到計算機(jī)后,計算機(jī)圖像處理軟件完成圖像數(shù)據(jù)的處理??刂颇K:視覺軟件完成圖像分析后,需要和外部設(shè)備(如引導(dǎo)機(jī)器人進(jìn)行抓取操作)進(jìn)行通信以完成對生產(chǎn)過程的控制。工業(yè)相機(jī)網(wǎng)口USB接口VGA接口2.2機(jī)器視覺3大硬件:工業(yè)相機(jī)、鏡頭、光源鏡頭光源三、機(jī)器視覺系統(tǒng)的基本應(yīng)用
1、引導(dǎo)和定位2、外觀檢測3、工業(yè)測量4、信息識別定位抓取藥液檢測電路板檢測字符識別四、常用的視覺開發(fā)軟件下一任務(wù)介紹:了解了機(jī)器視覺系統(tǒng)的組成和作用后,選擇一個開發(fā)工具出發(fā)吧。重點介紹Halcon的界面操作和算子的結(jié)構(gòu)與使用。認(rèn)識HALCON軟件任務(wù)21課時【任務(wù)要求】1、認(rèn)識Halcon軟件操作界面;2、掌握“算子”的結(jié)構(gòu)和作用;3、能分析“算子”的各組成部分。1、啟動HalconHalcon的開發(fā)環(huán)境叫HDevelop一、Halcon界面菜單欄工具欄算子窗口程序窗口圖像窗口變量窗口狀態(tài)欄案例1-1打開一個例程1、文件—瀏覽Hdevelop示例程序或點擊按鈕或
Ctrl+E2、打開實例程序列表3、選擇需要查看的程序二、算子算子是Halcon的核心,利用算子可以讓視覺系統(tǒng)開發(fā)工程師像堆積木一樣,僅需掌握基本的編程規(guī)則,可以迅速的開發(fā)出需要的程序,也許只要幾十行的程序就可以得到想要的結(jié)果。Halcon20.0版本由2100多個算子組成。算子結(jié)構(gòu)算子名稱(圖像輸入:圖像輸出:控制輸入:控制輸出)圖像變量輸出參數(shù)控制變量輸入?yún)?shù)算子名稱算子參數(shù)算子輸入在程序窗口輸入算子的名稱,會有提示,可以在提示區(qū)選擇需要的算子。按“tab”鍵,可以完成算子的輸入工作,各參數(shù)需要在“算子窗口”中修改。通過菜單“算子”-選擇需要的算子,將會打開“算子窗口”,設(shè)定好各參數(shù)后,點擊“確定”,即可在程序窗口中產(chǎn)生一條代碼?;蛳乱蝗蝿?wù)介紹:了解了Hdevelop軟件的界面和算子后,讓我們開始Halcon編程之旅吧。通過“我的第一個Halcon程序”了解Halcon編程的特色。利用HALCON編寫第一個程序任務(wù)32課時【任務(wù)要求】1、能對照例程完成第一個程序的編寫;2、在程序的編寫過程中熟練掌握Halcon編程的方式、方法;3、掌握Halcon編程的技巧、調(diào)試的方法和幫助文檔的使用。Halcon提供了“我的第一個Hdevelop程序”教程,供開發(fā)者學(xué)習(xí)使用。任務(wù)要求:提取圖中回形針,并獲取回形針的坐標(biāo)和方向。
企業(yè)任務(wù):在企業(yè)中,經(jīng)常會碰到無需抓取,在視覺定位時,需要將零件的坐標(biāo)和方向傳遞給機(jī)器人,機(jī)器人根據(jù)坐標(biāo)和方向調(diào)整準(zhǔn)確的位姿以保證準(zhǔn)確的抓取。一、程序編寫1、讀取圖像在程序窗口輸入:read_image(Image,'clip')讀取默認(rèn)目錄下的圖像文件clip。默認(rèn)目錄為:C:\Users\Public\Documents\MVTec\HALCON-20.11-Progress\examples\images對處理的圖像進(jìn)行初始化*獲取圖像尺寸get_image_size(Image,Width,Height)*關(guān)閉當(dāng)前窗口,因為當(dāng)前窗口是系統(tǒng)默認(rèn)的窗口,在沒讀取圖像之前就存在了dev_close_window()*新建一個自己想要的窗口,可以設(shè)定大小,背景顏色,窗口句柄等dev_open_window(0,0,Width/2,Height/2,'black',WindowHandle)*在新窗口中顯示圖像變量Image中的圖像dev_display(Image)新窗口顯示圖像2、對圖像分割*對圖像閾值分割(使用灰度直方圖工具),篩選灰度值在0-50之間的像素threshold
(Image,
Regions,
0,
50)
*連通域處理,將回形針分割成單個區(qū)域
connection
(Regions,
ConnectedRegions)閾值分割的作用是提取像素值在某范圍的像素點,組成一個集合灰度直方圖---進(jìn)行簡單閾值分割的工具----1、點擊工具條上的“灰度直方圖”;2、打開閾值開關(guān);3、調(diào)節(jié)“綠線”和“紅線”確定閾值區(qū)間;4、點擊“插入代碼”生成程序。3、特征提取-----對回形針進(jìn)行篩選*特征篩選,以面積為篩選過濾條件
select_shape
(ConnectedRegions,
SelectedRegions,
'area',
'and',
4000,
6000)
4、特征分析*計算回形針的轉(zhuǎn)角
orientation_region
(SelectedRegions,
Phi)
*計算中心坐標(biāo),面積
area_center
(SelectedRegions,
Area,
Row,
Column)
特征直方圖---進(jìn)行特征提取的工具----1、點擊工具條上的“特征直方圖”;2、打開閾值開關(guān);3、選擇需要篩選的特征;4、調(diào)節(jié)“綠線”和“紅線”確定特征值區(qū)間;5、點擊“插入代碼”生成程序。5、顯示信息*顯示箭頭disp_arrow
(WindowHandle,
Row,
Column,
Row
-Length
*
sin(Phi),
Column
+
Length
*
cos(Phi),
4)
*顯示角度(弧度)disp_message
(WindowHandle,
deg(Phi)$‘.1f'
+
'
deg',
'image',
Row-100,
Column
-
100,
'black',
'false')弧度轉(zhuǎn)角度小數(shù)點后保留1位有效數(shù)字總結(jié):1、機(jī)器視覺在智造中應(yīng)用越來越廣泛,我們要熟悉機(jī)器視覺的地位和作用,為我國的智造2025貢獻(xiàn)自己的力量。2、掌握一種機(jī)器視覺開發(fā)工具,Halcon是個不錯的選擇。3、體會一下Halcon開發(fā)的過程。讓我們共同努力助力中國智造!機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>項目2
Halcon編程基礎(chǔ)知識【知識目標(biāo)】1、理解數(shù)字圖像的概念;2、熟悉圖像數(shù)字化的過程;3、了解Halcon獲取圖像的方法及編程知識;1、學(xué)會使用Halcon讀取圖像操作;2、掌握Halcon編程的基礎(chǔ)知識。1、養(yǎng)成愛崗敬業(yè),刻苦鉆研的工匠精神;2、培養(yǎng)良好的編程習(xí)慣?!灸芰δ繕?biāo)】【素養(yǎng)目標(biāo)】項目導(dǎo)讀
Halcon軟件是MVTec公司開發(fā)的機(jī)器視覺算法工具包,Halcon和其它編程語言一樣具有自己的編程規(guī)則,封裝了2100多個算子(函數(shù))工具供開發(fā)者使用,Halcon編程主要針對數(shù)字圖像進(jìn)行編程,本項目要掌握數(shù)字圖像的概念和Halcon的語法結(jié)構(gòu),如果有C、C++或其它編程語言基礎(chǔ),將更容易掌握,Halcon編程類似積木編程,算子中的變量,系統(tǒng)會自動命名,方便快捷,對編程水平要求降低了,難點在于各算子的選擇、算子使用的先后順序,以及算子參數(shù)的選擇上。了解數(shù)字圖像概念HALCON編程基礎(chǔ)知識任務(wù)2任務(wù)1了解數(shù)字圖像概念任務(wù)12課時【任務(wù)要求】
1、了解圖像數(shù)字化的概念及數(shù)字圖像的分類,了解像素的數(shù)字表述;2、能用多種方法使用Halcon軟件獲取圖像;3、能使用算子將圖像顯示到圖像窗口中。
一、數(shù)字圖像基礎(chǔ)數(shù)字圖像(Digitalimage)是以像素為基本單位、可以直接用計算機(jī)或數(shù)字電路存儲和處理的圖像。通過工業(yè)相機(jī)、掃描儀等設(shè)備獲取的圖像均已是數(shù)字圖像。1、圖像數(shù)字化網(wǎng)格化也不是隨意的,而是由相機(jī)的分辨率決定,如800×600,表示480000像素數(shù)字化圖像是將圖像網(wǎng)格化,每個網(wǎng)格為1個像素,像素是圖像的最小單位,每個像素取值為(0-255)網(wǎng)格化的圖像1、圖像數(shù)字化數(shù)字化圖像是將圖像網(wǎng)格化,每個網(wǎng)格為1個像素,每個像素取值為(0-255)網(wǎng)格化的圖像數(shù)字圖像在計算機(jī)中的表示每幅圖像都可以用一個矩陣來表示一幅的m×n數(shù)字圖像可用矩陣表示為2、數(shù)字圖像分類二值圖像:二值圖像是指圖像的每個像素非黑即白,“0”代表著黑色,“1”代表著白色。數(shù)字圖像根據(jù)采樣數(shù)目及特性的不同可以劃分為二值圖像、灰度圖像、彩色圖像?;叶葓D像在二值化圖像的基礎(chǔ)上,在黑與白之間構(gòu)建更多的顏色深度分級,從黑色到最亮的白色過渡,根據(jù)保存灰度數(shù)值所使用的數(shù)據(jù)類型的不同,可以有2k種,k=1時是二值圖。彩色圖像也叫RGB圖像,是根據(jù)三基色成像原理來描述圖像信息,由Red、Green、Blue三個顏色組合而成,三種顏色各有256個級別。1、二值圖像
(a)1位
(b)2位
(c)3位
(d)8位2、灰度圖像
圖像灰度直方圖
灰度直方圖是關(guān)于灰度級分布的函數(shù),是對圖像中灰度級分布的統(tǒng)計?;叶戎狈綀D是將數(shù)字圖像中的所有像素,按照灰度值的大小,統(tǒng)計其出現(xiàn)的頻率?;叶戎狈綀D是灰度級的函數(shù),它表示圖像中具有某種灰度級的像素的個數(shù),反映了圖像中某種灰度出現(xiàn)的頻率。灰度直方圖只能反映圖像的灰度分布情況,而不能反映圖像像素的位置,一幅圖像各直方圖數(shù)值之和就等于該圖全圖的灰度值數(shù)量。二、利用Halcon軟件獲取圖像1、利用read_image算子;2、通過“文件”-”讀取圖像“;3、通過鼠標(biāo)拖拽;4、通過“助手”-“打開新的ImageAcquisition”-“圖像文件”-“選擇文件”。1、利用read_image算子獲取圖像在程序窗口輸入read_image,然后按“tab”鍵,直至一條語句輸入完雙擊“read_image”在打開的“算子窗口”中點擊filename.read(string)前面的文件夾按鈕選擇需要處理的圖像,單擊“打開”,讀入圖像系統(tǒng)默認(rèn)的圖像變量名稱為Image,可以修改,命名規(guī)則與其它編程語言規(guī)則一致。2、通過“文件”-”讀取圖像“獲取圖像“文件”-“讀取圖像”單擊“文件名稱”后面的文件夾按鈕選擇需要處理的圖像,單擊確定3、通過鼠標(biāo)拖拽用鼠標(biāo)點住要處理的圖像,拖動至Halcon軟件上。4、通過“助手”菜單讀取圖像算子釋義:read_image—Readanimagewithdifferentfileformats.格式:read_image(:
Image
:
FileName
:)參數(shù):Image--為輸出對象,是一個變量,可以直接定義使用,不需要提前聲明;Filename--為輸入控制文件名,用于指定讀取的文件。作用:將指定路徑下的圖像文件讀入變量Image中?!景咐?-1】使用Halcon軟件讀取單張圖像1. *獲取圖像earth.png,存入變量Image中2. read_image(Image,'earth.png')3. *獲取圖像Image的大?。ㄏ袼刂担?,Width為“列”,Height為“行”4. get_image_size(Image,Width,Height)5. *創(chuàng)建新窗口,(0,0)-(Width,Height),背景為“黑色”,窗口句柄為WindowHandle6. dev_open_window(0,0,Width,Height,'black',WindowHandle)7. *顯示圖像Image8. dev_display(Image)下一任務(wù)介紹:了解了Halcon編程的數(shù)據(jù)結(jié)構(gòu)和基本語法規(guī)則。HALCON編程基礎(chǔ)知識任務(wù)22課時【任務(wù)要求】1、熟練掌握Halcon數(shù)據(jù)結(jié)構(gòu),特別是圖形參數(shù)Image、Region和XLD的概念;2、能用數(shù)組對一組圖像進(jìn)行存儲;3、熟悉各類控制語句。HALCON數(shù)據(jù)結(jié)構(gòu)類型HALCON數(shù)據(jù)結(jié)構(gòu)類型主要有圖形參數(shù)(Iconic)和控制參數(shù)(Control)兩類。圖形參數(shù)包括:圖像Image、區(qū)域Region和亞像素輪廓XLD(ExtendLineDescriptions);控制參數(shù)包括字符型String、整型integer、實型real、句柄handle和Tuple數(shù)組等一、數(shù)據(jù)結(jié)構(gòu)1、圖像變量Image圖像Image是Halcon基本的一種變量類型,用于存放圖像數(shù)據(jù),圖像數(shù)據(jù)用矩陣來表示,矩陣的“行”對應(yīng)圖像的“高”,矩陣的“列”對應(yīng)圖像的“寬”,矩陣的“元素”對應(yīng)圖像的“像素”,矩陣“元素”的值對應(yīng)“像素”顏色值。RegionXLD區(qū)域是Halcon的另一種數(shù)據(jù)類型,是圖像的真子集,利用區(qū)域可以縮小圖像處理范圍,提高圖像處理速度。XLD(eXtendedLineDescriptions)是一個輪廓函數(shù),它不是基于像素,但比像素更精確,可以精確到像素內(nèi)部的一種描述,通常稱為亞像素,提取XLD并不是沿著像素與像素邊界交界的地方,而是Halcon經(jīng)過某種計算得出的位置。1、圖像變量Image如果獲取的圖像為彩色圖像,即RGB圖像,該圖像有3個顏色分量:紅、綠、藍(lán)三基色,每個像素點都可以用這3種顏色疊加而成,不是數(shù)值相加。圖像的通道:是指圖像中一個像素點采用多少個灰度級數(shù)值進(jìn)行表示,如果圖像內(nèi)的像素點可以用1個灰度級數(shù)值來表示,那么圖像就只有1個通道,如果可以用多個灰度級數(shù)值來表示,圖像就有多個通道。如RGB色彩圖像可以用紅色、綠色、藍(lán)色3個灰度級數(shù)值來表示,表示彩色圖像是由紅色、綠色、藍(lán)色3個通道組成。Halcon讀入圖像后,將光標(biāo)停放在圖像變量中的圖像或區(qū)域上,將會彈出小窗顯示圖像的類型、通道和尺寸。
2、區(qū)域region變量
是圖像的真子集,利用區(qū)域可以縮小圖像處理范圍,提高圖像處理速度一是集中形式,在圖中直接裁剪出一塊區(qū)域,即感興趣區(qū)域(ROI);二是離散形式,在圖像中設(shè)定某段閾值范圍,利用圖像分割算子將所需要的灰度值單獨(dú)組成一個區(qū)域。繪制ROI單擊圖像窗口上的“繪制新的ROI工具”,將會彈出ROI繪制工具二、Tuple圖形數(shù)組1. *對Tuple1數(shù)組賦值結(jié)果:Tuple1:=[1,0,3,4,5,6,7,8,9]2. Tuple1:=[1,0,3,4,5,6,7,8,9]3. *改變Tuple1[1]的值,結(jié)果:Tuple1[]=[1,2,3,4,5,6,7,8,9]4. Tuple1[1]:=25. *批量改變數(shù)組元素的值,結(jié)果:Tuple1[]=[1,a,3,b,5,c,7,8,9]6. Tuple1[1,3,5]:='abc'7. *對Tuple2數(shù)組賦值,其值為0到10000連續(xù)數(shù)值,結(jié)果:Tuple2[]=[0,1,2,…,9999,10000]8. Tuple2:=[0:10000]9. *批量給Tuple3數(shù)組賦值,其值為3到200連續(xù)數(shù)值,步長為2,結(jié)果:Tuple3[]=[3,5,7,…,197,199]10. Tuple3:=[3:2:200]11. *批量給Tuple4數(shù)組賦值,其值為100到-100連續(xù)數(shù)值,步長為-10,結(jié)果;Tuple4[]=[100,90,80,…,-90,-100]12. Tuple4:=[100:-10:-100](0~n-1)13. *對兩個Tuple數(shù)組進(jìn)行合并操作,將數(shù)組TupleInt1和TupleInt2的數(shù)據(jù)組成新的集合,排序后賦值給新的數(shù)組UnionInt,結(jié)果:UnionInt[]=[1,2,3,4,9,10]14. TupleInt1:=[3,1,2,9,1]15. TupleInt2:=[10,2,4,3,2]16. tuple_union(TupleInt1,TupleInt2,UnionInt)17. *對兩個Tuple數(shù)組進(jìn)行交集操作,將數(shù)組TupleInt3和TupleInt4相同的數(shù)據(jù)組成新的集合,排序后賦值給新的數(shù)組IntersectionInt,結(jié)果:IntersectionInt[]=[2,3]18. TupleInt3:=[3,1,2,9,1]19. TupleInt4:=[10,2,4,3,2]20. tuple_intersection(TupleInt3,TupleInt4,IntersectionInt)21. *對Tuple數(shù)組元素進(jìn)行替換,用‘x,y’替換數(shù)組OriginalTuple中的‘0,1’,結(jié)果:OriginalTuple[]=[x,y,2,3,4,5]22. OriginalTuple:=[0,1,2,3,4,5]23. tuple_replace(OriginalTuple,[0,1],['x','y'],Replaced)24. *向Tuple數(shù)組插入數(shù)值,在數(shù)組OriginalTuple中所有的‘3’替換成‘x’,結(jié)果:OriginalTuple:=[0,1,2,x,4,5]25. OriginalTuple:=[0,1,2,3,4,5]26. tuple_insert(OriginalTuple,3,'x',InsertSingleValueA)三、程序控制語句
If語句1. if(條件表達(dá)式)2. *條件表達(dá)式成立執(zhí)行的語句3. endifFor循環(huán)while循環(huán)for(index:=起始數(shù)值to終止數(shù)值by步長)*循環(huán)體
endforwhile(條件)*循環(huán)體
endwhile1. if(條件表達(dá)式1)2. 條件表達(dá)式1成立執(zhí)行的語句組3. else4. 否則執(zhí)行的語句組5. endif總結(jié):1、掌握Halcon的基本語法和數(shù)據(jù)結(jié)構(gòu)。2、掌握Halcon流程控制語句和條件語句。讓我們共同努力,助力中國智造!機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>項目3圖像的變換和校正【知識目標(biāo)】1、知道圖像產(chǎn)生畸變的形式和原因;2、掌握仿射變換基本操作;2、掌握透視變換的基本操作。1、會使用Halcon軟件進(jìn)行仿射變換;2、會使用Halcon軟件進(jìn)行透視變換。1、培養(yǎng)精益求精的精神;2、勇于創(chuàng)新,勤學(xué)苦練的精神?!灸芰δ繕?biāo)】【素養(yǎng)目標(biāo)】項目導(dǎo)讀
在許多工程實際應(yīng)用中,由于相機(jī)拍攝時可能角度存在偏差,實際獲得的圖像也許會與預(yù)期的不一致,如在傳送帶上隨意擺放的零件,角度、位置都不一樣,又或者得到的圖像形狀失真,所以在對圖像進(jìn)行分析處理之前,需要對失真的圖像進(jìn)行幾何變換,來解決失真的問題。幾何變換是指用數(shù)學(xué)建模的方法來描述圖像位置、大小、形狀等變換的方法,不改變圖像的拓?fù)浣Y(jié)構(gòu),常作為圖像預(yù)處理,為后續(xù)的圖像處理、特征提取、目標(biāo)識別做準(zhǔn)備。
對文字圖像進(jìn)行仿射變換對傾斜的二維碼進(jìn)行透視變換任務(wù)2任務(wù)1利用仿射變換校正圖像任務(wù)12課時【任務(wù)要求】
1、會使用基本的平移、旋轉(zhuǎn)、縮放操作,了解組合變換;2、熟練使用仿射變換算子?!救蝿?wù)實施】
圖像的幾何變換常見的形式有平移、旋轉(zhuǎn)和縮放等操作。在Halcon中通過對應(yīng)幾何變換的算子進(jìn)行相應(yīng)的變換操作。
幾何變換的流程1、利用hom_mat2d_identity算子創(chuàng)建單位矩陣;2、選定變換類型算子;3、利用幾何變換算子affine_trans_image進(jìn)行幾何變換?!救蝿?wù)實施】1. *關(guān)閉窗口,讀取圖像,如圖3-1(a)所示。2. read_image(Image,'machinevision.jpg')3. *獲取圖像大小4. get_image_size(Image,Width,Height)5. *創(chuàng)建新的圖像窗口,大小和圖像一致6. dev_open_window(0,0,Width,Height,'black',WindowHandle)7. *顯示圖像8. dev_display(Image)圖像初始化原圖9. *定義單位矩陣第一步10. hom_mat2d_identity(HomMat2DIdentity)11. *設(shè)定平移矩陣第二步12. hom_mat2d_translate(HomMat2DIdentity,64,64,HomMat2DTranslate)13. *進(jìn)行平移操作,如圖3-1(b)所示,第三步14. affine_trans_image(Image,ImageAffineTrans,HomMat2DTranslate,'constant','false')平移15. *獲得圖像中心(設(shè)為旋轉(zhuǎn)點,也可以選擇其它點)16. area_center(Image,Area,Row,Column)17. *設(shè)定旋轉(zhuǎn)矩陣,進(jìn)行旋轉(zhuǎn)操作
18. hom_mat2d_rotate(HomMat2DIdentity,0.78,Row,Column,HomMat2DRotate)19. affine_trans_image(Image,ImageAffineTrans1,HomMat2DRotate,'constant','false')旋轉(zhuǎn)20. *設(shè)定縮放矩陣,進(jìn)行縮放操作
21. hom_mat2d_scale(HomMat2DIdentity,0.5,0.5,Column,Row,HomMat2DScale)22. affine_trans_image(Image,ImageAffineTrans2,HomMat2DScale,'constant','false')縮放算子釋義hom_mat2d_identity—Generatethehomogeneoustransformationmatrixoftheidentical2Dtransformation.格式:hom_mat2d_identity(:::HomMat2DIdentity)參數(shù):HomMat2Didentity--為3*3單位矩陣作用:創(chuàng)建一個單位矩陣。hom_mat2d_translate—Addatranslationtoahomogeneous2Dtransformationmatrix.格式:hom_mat2d_translate(::HomMat2DIdentity,Tx,Ty:HomMat2DTranslate)參數(shù):HomMat2DIdentity--單位矩陣;Tx--X行平移量;Ty--Y列平移量;HomMat2DTranslate--計算得到的平移矩陣。作用:創(chuàng)建平移矩陣。hom_mat2d_rotate—Addarotationtoahomogeneous2Dtransformationmatrix.格式:hom_mat2d_rotate(::HomMat2DIdentity,Phi,Px,Py:HomMat2DRotate)參數(shù):HomMat2DIdentity--單位矩陣;Phi--旋轉(zhuǎn)的角度(單位:弧度);Px,Py--旋轉(zhuǎn)點的坐標(biāo)(X行Y列);HomMat2DRotate--計算得到的旋轉(zhuǎn)矩陣。作用:創(chuàng)建旋轉(zhuǎn)矩陣。hom_mat2d_scale—Addascalingtoahomogeneous2Dtransformationmatrix.格式:hom_mat2d_scale(::HomMat2DIdentity,Sx,Sy,Px,Py:HomMat2DScale)參數(shù):HomMat2DIdentity--單位矩陣;Sx--X方向的縮放比例;Sy--Y方向的縮放比例;Px,Py--縮放點的坐標(biāo)(X行Y列)。作用:創(chuàng)建縮放矩陣。affine_trans_image—Applyanarbitraryaffine2Dtransformationtoimages.格式:affine_trans_image(Image:ImageAffineTrans:HomMat2D,Interpolation,AdaptImageSize:)參數(shù):Image--幾何變換前的圖像變量;ImageAffineTrans--幾何變換后的圖像變量;HomMat2D--變換矩陣;Interpolation--插值類型;AdaptImageSize--自動調(diào)節(jié)輸出圖像大?。═rue:將調(diào)整目標(biāo)圖像大小,右邊緣或下邊緣不裁剪,F(xiàn)alse:目標(biāo)圖像的大小與輸入圖像的大小相同。默認(rèn)值為False)。作用:進(jìn)行幾何變換。下一任務(wù)介紹:了解了Halcon透視變換的方法。利用透視變換校正圖像任務(wù)22課時【任務(wù)要求】
1、了解透視變換的概念,產(chǎn)生的原因;2、能用透視變換算子對傾斜的圖像進(jìn)行透視變換?!救蝿?wù)實施】
獲取的圖像如果發(fā)生傾斜,可以采用透視變換對其校正,透視變換也稱投影變換,是在三維空間上的變換。透視變換可以通過hom_vector_to_proj_hom_mat2d算子結(jié)合projective_trans_image算子實現(xiàn)。透視變換的步驟1、求出圖像的角點坐標(biāo),如圖3-2所示。根據(jù)需要變換的區(qū)域使用ctrl+鼠標(biāo)左鍵,查看原圖像坐標(biāo),然后將4個角點的“行”坐標(biāo)放入一個數(shù)組,“列”坐標(biāo)放入一個數(shù)組;
2、利用hom_vector_to_proj_hom_mat2d算子,根據(jù)4個角點和變換后矩形的4個角點坐標(biāo)點創(chuàng)建齊次變換矩陣;
3、利用projective_trans_image算子根據(jù)變換矩陣對傾斜的圖像進(jìn)行校正。透視變換可以通過
hom_vector_to_proj_hom_mat2d算子
結(jié)合
projective_trans_image算子
實現(xiàn)算子釋義:hom_vector_to_proj_hom_mat2d—Computeahomogeneoustransformationmatrixusinggivenpointcorrespondences.格式:hom_vector_to_proj_hom_mat2d(::Px,Py,Pw,Qx,Qy,Qw,Method:HomMat2D)參數(shù):Px、Py、Pw--原圖角點的坐標(biāo);Qx,Qy,Qw--變換后對應(yīng)角點的坐標(biāo);Method--如果Pw或Qw不為0,選擇'normalized_dlt',為0,選擇“dlt”;HomMat2D--生成的齊次變換矩陣。作用:計算齊次變換矩陣?!救蝿?wù)實施】傾斜的二維碼1、圖像初始化1. *獲取圖像2. read_image(Image,'datacode/ecc200/ecc200_to_preprocess_001')3. *關(guān)閉窗口4. dev_close_window()5. *創(chuàng)建一個窗口,大小和圖像尺寸一致6. dev_open_window_fit_image(Image,0,0,-1,-1,WindowHandle)7. *初始化坐標(biāo),利用鼠標(biāo)查看原圖4個角點的坐標(biāo),X放置“行”坐標(biāo),Y放置“列”坐標(biāo)。8. XCoordCorners:=[130,225,290,63]9. YCoordCorners:=[101,96,289,269]2、透視變換10. *第一步:使用4個角點的坐標(biāo)和邊長為200正方形的對應(yīng)角點生成一個齊次變換矩陣homMat2D。11. hom_vector_to_proj_hom_mat2d(XCoordCorners,YCoordCorners,[1,1,1,1],[70,270,270,70],[100,100,300,300],[1,1,1,1],'normalized_dlt',HomMat2D)**第二步:利用透視變換對傾斜圖像進(jìn)行校正,結(jié)果如圖3-3所示。12.projective_trans_image
(Image,
Image_rectified,
HomMat2D,
'bilinear',
'false',
'false')
3、二維碼識別16. **第一步:創(chuàng)建二維碼模型并在校正后的圖像中搜索*數(shù)據(jù)代碼17. *注意:要根據(jù)二維碼的類型選擇對應(yīng)的參數(shù)18. create_data_code_2d_model('DataMatrixECC200',[],[],DataCodeHandle)19. *第二步:檢測讀取二維嗎模型20. find_data_code_2d(Image_rectified,SymbolXLDs,DataCodeHandle,[],[],ResultHandles,DecodedDataStrings)4、顯示結(jié)果21. **顯示結(jié)果22. dev_display(SymbolXLDs)23. *顯示二維碼信息,結(jié)果如圖3-4所示。24. disp_message(WindowHandle,DecodedDataStrings,'window',12,12,'black','true')總結(jié):1、常用的校正方法有仿射變換和透視變換,重點掌握仿射變換操作;2、仿射變換可以使區(qū)域特征在平面內(nèi)移動、旋轉(zhuǎn)、縮放,整體形狀沒有發(fā)生變化,主要用于查找定位,模板匹配等應(yīng)用。3、透視變換將改變區(qū)域形狀特征,主要校正相機(jī)視線傾斜造成的圖像失真,在實際工程中出現(xiàn)的可能性比較小,故使用不多。讓我們共同努力,助力中國智造!機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>項目4圖像濾波【知識目標(biāo)】1、熟悉圖像濾波的概念,了解濾波的作用和原理;2、掌握常用的濾波算子,會根據(jù)現(xiàn)場圖像噪聲選擇合適的濾波算子。1、了解圖像噪聲的原因;2、能夠掌握幾種基本的圖像濾波操作。1、培養(yǎng)對機(jī)器視覺行業(yè)的興趣;2、加強(qiáng)團(tuán)隊協(xié)作的培養(yǎng)?!灸芰δ繕?biāo)】【素養(yǎng)目標(biāo)】項目導(dǎo)讀
圖像濾波是指在盡量保留圖像細(xì)節(jié)特征的前提下對目標(biāo)圖像的噪聲進(jìn)行去除或減弱,改善對比度或檢測邊緣,是圖像預(yù)處理中不可缺少的操作,企業(yè)現(xiàn)場除了穩(wěn)定的工作環(huán)境外,還有許多變化的場景,圖像的穩(wěn)定性不能得到保證,除了獲取需要的圖像外,圖像還攜帶了一定的噪聲,圖像常見噪聲基本上有以下四種:高斯噪聲,泊松噪聲,乘性噪聲,椒鹽噪聲,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性、可靠性。也常用作動態(tài)閾值分割的預(yù)處理操作,濾波算法還為形態(tài)學(xué)算子提供前置算法處理工作。常用的算法是通過一定的規(guī)則,修改圖像的像素值,常用的主要有均值濾波、中值濾波和高斯濾波。對猴臉圖像進(jìn)行處理對繃帶圖像進(jìn)行處理任務(wù)2任務(wù)1檢測輪轂上的字符任務(wù)3對猴臉圖像進(jìn)行處理任務(wù)12課時【任務(wù)要求】對所給的Monkey圖像進(jìn)行均值濾波操作,如圖4-1所示,調(diào)整濾波算子參數(shù),觀察濾波效果?!局R鏈接】均值濾波是一種線性平滑濾波,其原理將一個設(shè)定大小的小窗口作為濾波器,從圖像的左上角第一個像素開始,從左向右,從上至下劃過,將“小窗口”遮擋住的圖像像素鄰域的灰度值相加取平均值,然后將當(dāng)前坐標(biāo)的像素值修改為這個平均的灰度值。窗口的大小如3×3像素,4×6像素,一般為奇數(shù)像素尺寸的正方形,可以保證中心像素處于濾波器中間,默認(rèn)值為9×9,該窗口的具體數(shù)值在操作的過程中需要反復(fù)實驗才能確定,其算子為:
mean_image
。濾波原理(a)原圖
(b)濾波器模板
(c)替換求出模板覆蓋的9個像素點的平均值:(72+125+52+102+142+24+84+29+142)/9=86,然后用“86”替代原圖中灰度值“142”【任務(wù)實施】1. *圖像預(yù)處理:讀取圖像如圖4-2(a)所示2. read_image(Image,'monkey.png')3. *關(guān)閉當(dāng)前窗口4. dev_close_window()5. *獲取圖像大小6. get_image_size(Image,Width,Height)7. *創(chuàng)建新的窗口和圖像一樣大小8. dev_open_window(0,0,Width,Height,'black',WindowHandle)9. *顯示圖像10. dev_display(Image)11. *添加椒鹽噪聲
12. add_noise_white(Image,ImageNoise1,60)13. *均值濾波,邊長9的正方形
14. mean_image(Image,ImageMean1,9,9)15. *均值濾波,邊長3的正方形
16. mean_image(Image,ImageMean,3,3)17. *顯示圖像18. dev_display(ImageMean)算子釋義mean_image—Smoothbyaveraging.格式:mean_image(Image:ImageMean:MaskWidth,MaskHeight:)參數(shù):Image--原圖;ImageMean--濾波后圖像;MaskWidth,MaskHeight--掩碼窗口的寬度和高度。作用:創(chuàng)建一個均值濾波器對圖像進(jìn)行濾波處理。下一任務(wù)介紹:了解中值濾波的操作和算子。任務(wù)22課時對繃帶圖像進(jìn)行處理【任務(wù)要求】1、了解中值濾波的基本原理;2、能用根據(jù)圖像噪聲選擇合適的濾波參數(shù);【任務(wù)實施】與均值濾波類似,但中值濾波法是一種非線性平滑技術(shù),將滑動的“小窗口”所覆蓋的像素點的所有灰度值進(jìn)行排序,選擇中間值作為當(dāng)前像素點的灰度值,從圖像的左上角第一個像素開始,從左向右,從上至下劃過,將“小窗口”遮擋住的圖像像素的灰度值排序取中值,然后將當(dāng)前坐標(biāo)的像素值修改為中值。中值濾波可以用于例如平滑圖像,抑制小于掩碼的不需要的對象,可以對一些孤立的噪聲進(jìn)行去除,能保留大部分邊緣信息。小窗口可以為:圓形和方形。中值濾波可以讓邊緣更清晰,其算子為:median_image。濾波原理(a)原圖
(b)濾波器模板
(c)替換將濾波器覆蓋的9個像素點的灰度值排序,(24,29,52,72,84,102,125,142,142),選擇中間值“84”替換當(dāng)前像素點的值“142”【案例4-2】利用中值濾波對繃帶圖像進(jìn)行處理1. *讀取圖像2. read_image(Image,'bengdai')3. *獲取圖像尺寸4. get_image_size(Image,Width,Height)5. *關(guān)閉窗口6. dev_close_window()7. *新建一個和圖像大小一致的窗口8. dev_open_window_fit_size(0,0,Width,Height,-1,-1,WindowHandle)9. *將彩色圖像轉(zhuǎn)為灰度圖像10. rgb1_to_gray(Image,GrayImage)11. *顯示圖像12. dev_display(GrayImage)13. *對圖像加強(qiáng)14. emphasize(GrayImage,ImageEmphasize,Width,Height,20)15. *中值濾波16. median_image(ImageEmphasize,ImageMedian,'circle',6,'mirrored')17. *均值濾波18. mean_image(ImageEmphasize,ImageMean,5,58)算子釋義mean_image—Smoothbyaveraging.格式:mean_image(Image:ImageMean:MaskWidth,MaskHeight:)參數(shù):Image--原圖;ImageMean--濾波后圖像;MaskWidth,MaskHeight--掩碼窗口的寬度和高度。作用:創(chuàng)建一個均值濾波器對圖像進(jìn)行濾波處理。下一任務(wù)介紹:了解了Halcon編程的數(shù)據(jù)結(jié)構(gòu)和基本語法規(guī)則。檢測輪轂上的字符任務(wù)32課時【任務(wù)要求】1、了解高斯濾波的基本原理;2、能用根據(jù)圖像噪聲選擇合適的濾波參數(shù);【任務(wù)實施】高斯濾波就是對整幅圖像進(jìn)行加權(quán)平均的過程,每一個像素點的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到。高斯濾波的具體操作是:用一個模板(或稱卷積、掩模)掃描圖像中的每一個像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點的值。圖像高斯平滑也是鄰域平均的思想對圖像進(jìn)行平滑的一種方法,在圖像高斯平滑中,對圖像進(jìn)行平均時,不同位置的像素被賦予了不同的權(quán)重。高斯平滑與簡單平滑不同,它在對鄰域內(nèi)像素進(jìn)行平均時,給予不同位置的像素不同的權(quán)值。其算子為:gauss_filter?!景咐?-3】利用高斯濾波檢測輪轂上的字符
1. *讀取圖像2. read_image(Rim,'rim')3. *獲取圖像尺寸4. get_image_size(Rim,Width,Height)5. *關(guān)閉窗口6. dev_close_window()7. *打開2/3大小的窗口8. dev_open_window(0,800,Width*2/3,Height*2/3,'black',WindowHandle)9. *顯示圖像10. dev_display(Rim)11. *高斯濾波12. gauss_filter(Rim,ImageGauss,11)13. *動態(tài)閾值分割14. dyn_threshold(Rim,ImageGauss,RegionDynThresh,5,'dark')15. *連通域處理,打斷,如圖4-11所示16. connection(RegionDynThresh,ConnectedRegions)17. *利用特征直方圖選擇出字符“AS1062”,如圖4-12所示18. select_shape(ConnectedRegions,SelectedRegions,'area','and',40,150)19. select_shape(SelectedRegions,SelectedRegions1,['row','column'],'and',[346.87,92.01],[1000,333.1])20. *將字符合并成一個區(qū)域21. union1(SelectedRegions1,RegionUnion)22. *對字符進(jìn)行閉運(yùn)算,連接到一起,如圖4-13所示23. closing_circle(RegionUnion,RegionClosing,19.5)24. *獲取最小外接矩形,以及相關(guān)參數(shù),中心坐標(biāo),角度和半軸長度,如圖4-14所示25. smallest_rectangle2(RegionClosing,Row,Column,Phi,Length1,Length2)26. *繪制最小外接矩形,如圖4-15所示27. gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)28. *創(chuàng)建單位矩陣29. hom_mat2d_identity(HomMat2DIdentity)30. *創(chuàng)建旋轉(zhuǎn)矩陣31. hom_mat2d_rotate(HomMat2DIdentity,rad(180)-Phi,Column,Row,HomMat2DRotate)32. *區(qū)域旋轉(zhuǎn)操作33. affine_trans_region(RegionUnion,RegionAffineTrans,HomMat2DRotate,'nearest_neighbor')34. *旋轉(zhuǎn)圖像,如圖4-16所示35. affine_trans_image(ImageGauss,ImageAffineTrans,HomMat2DRotate,'constant','false')36. *顯示結(jié)果,如圖4-17所示37. dev_display(RegionAffineTrans)總結(jié):圖像濾波是圖像預(yù)處理的重要手段,為后續(xù)的閾值分割做準(zhǔn)備,常見的圖像濾波有:中值濾波、均值濾波、高斯濾波、沖擊濾波等。謝謝機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>項目5圖像分割【知識目標(biāo)】1、理解圖像分割的概念的作用;2、了解幾種圖像分割的方法和應(yīng)用場合;3、會用普通閾值分割圖像。1、學(xué)會使用灰度直方圖工具進(jìn)行閾值分割;2、掌握閾值分割算子參數(shù)的選擇。1、養(yǎng)成刻苦鉆研的習(xí)慣;2、提升創(chuàng)新能力?!灸芰δ繕?biāo)】【素養(yǎng)目標(biāo)】項目導(dǎo)讀
在圖像處理時,有時候圖像非常大,甚至以KB,GB為單位,包含的信息量很多,而需要關(guān)注的信息只是其中部分區(qū)域,這時候就需要一個工具,能夠把所感興趣的區(qū)域從圖像中分離出來,這種基于“區(qū)域”分割技術(shù)就叫“圖像分割”,它是由圖像處理到圖像分析的關(guān)鍵步驟,現(xiàn)有的圖像分割方法主要分以下幾類:基于閾值的分割方法、基于區(qū)域的分割方法、分水嶺算法的分割方法以及基于特定理論的分割方法等。1、掌握圖像分割的概念;2、掌握幾種常用的圖像分割方法。利用自動閾值提取零件已加工表面利用局部閾值對機(jī)器點字符進(jìn)行識別利用局部閾值分割手寫字符任務(wù)3任務(wù)4任務(wù)2利用區(qū)域生長法分割輪轂并測量小孔尺寸利用全閾值分割車牌字符任務(wù)1任務(wù)5利用分水嶺算法分割顆粒狀物體任務(wù)6利用全閾值分割車牌字符任務(wù)1【任務(wù)要求】
利用全閾值分割獲取圖5-1車牌字符
【知識鏈接】
1、算子threshold
—Segmentanimageusingglobalthreshold.格式:threshold(Image
:
Region
:
MinGray,
MaxGray
:)參數(shù):Image--輸入圖像;Region--分割后的區(qū)域;Mingray--最小灰度值;MaxGray--最大灰度值。作用:對圖像進(jìn)行全值閾值分割。例:threshold(Image,Region,128,255)表示:對圖像變量Image中的圖像進(jìn)行閾值分割,保留像素值在[128,255]之間的像素點形成新的區(qū)域,存放在圖像變量Region中。2、任務(wù)實施*讀取圖像read_image
(Audi2,
'audi2')
*獲取圖像尺寸get_image_size(Audi2,Width,Height)dev_close_window()*新建一個窗口dev_open_window(0,0,Width/2,Height/2,'black',WindowHandle)*顯示圖像,如圖所示dev_display(Audi2)讀取圖像并初始化對圖像進(jìn)行閾值分割10. *全閾值分割圖像,灰度值在0-90之間,利用灰度直方圖工具,效果如圖所示11. threshold(Audi2,Region,0,90)12. *連通域處理,打斷成不連續(xù)的單個小區(qū)域,每個小區(qū)域稱為特征,效果圖所示13. connection(Region,ConnectedRegions)特征選擇14. *特征選擇“width”30-70范圍內(nèi)的特征,放入SelectedRegions變量中15. select_shape(ConnectedRegions,SelectedRegions,'width','and',30,70)16. *特征選擇'height'60-110范圍內(nèi)的特征,放入Letters變量中17. select_shape(SelectedRegions,Letters,'height','and',60,110)顯示結(jié)果19. *清屏,重新顯示結(jié)果,結(jié)果如圖所示20. dev_clear_window()21. dev_display(Audi2)22. dev_display(Letters)下一任務(wù)介紹:自動閾值圖像。利用自動閾值提取零件已加工表面任務(wù)2【任務(wù)要求】自動閾值分割獲取零件已加工表面?!局R鏈接】全閾值分割僅在目標(biāo)對象和背景的灰度值有明顯區(qū)分度時效果較好,手動設(shè)定閾值不夠嚴(yán)謹(jǐn),人眼對灰度值的變化并不十分敏感,隨著后續(xù)計算的增加,將帶來不可預(yù)知的誤差,特別是在處理連續(xù)圖像時,圖像的灰度值是變化的,固定的閾值更容易造成誤差,因此,可以采用自動閾值分割的方法,自動閾值分割法以圖像的灰度直方圖為依據(jù),綜合考慮了像素鄰域以及圖像整體灰度分布等特征關(guān)系,以經(jīng)過灰度分類的像素類群之間產(chǎn)生最大方差時候的灰度值作為圖像的整體分割閾值。常用的有auto_threshold和binary_threshold算子。1、算子auto_threshold
—Segmentanimageusingthresholdsdeterminedfromitshistogram.格式:auto_threshold(Image
:
Regions
:
Sigma
:
)參數(shù):Image--輸入圖像;Region--分割后的區(qū)域;Sigma--對灰度直方圖高斯平滑系數(shù)。作用:使用直方圖對圖像進(jìn)行全值閾值分割。例:auto_threshold(Image,Regions,2)表示:對圖像變量Image中的圖像進(jìn)行多個區(qū)域的分割,高斯平滑系數(shù)為“2”,分割后的結(jié)果存放到圖像變量Regions中。binary_threshold
—
Segmentanimageusingbinarythresholding.格式:binary_threshold(Image:Region:Method,LightDark:UsedThreshold)參數(shù):Image--輸入圖像;Region--分割后的區(qū)域;Method--max_separability(可分性),smoothhisto(光滑的histogram直方圖,柱狀圖);Lightdark--選擇白色“l(fā)ight”或者黑色“dark”;Usedthreshold--使用的閾值。作用:對圖像進(jìn)行全值閾值分割。例:binary_threshold(Image,Region,'max_separability','dark',UsedThreshold)表示:對圖像變量Image中的圖像進(jìn)行全閾值分割,選擇“黑色”,分割后的區(qū)域放入圖像變量Region中。2、任務(wù)實施1.讀取圖像并初始化*讀取圖像
read_image
(Image,
'pumpe.png')
*獲取圖像尺寸
get_image_size
(Image,
Width,
Height)
*關(guān)閉當(dāng)前窗口
dev_close_window
()
*打開一個和圖像大小一致的窗口
dev_open_window
(0,
0,
Width,
Height,
'black',
WindowHandle)
*顯示圖像,如圖5-10所示dev_display
(Image)
動態(tài)閾值分割11. *因為金屬表面像素值比較接近,所以需進(jìn)行圖像增強(qiáng),如圖5-11所示12. emphasize(ImageScaleMax,ImageEmphasize,28,28,2)13. *動態(tài)閾值分割,因為灰度直方圖不呈二值化分布,人工分割確定閾值困難,所以采用動態(tài)分割,如圖5-12所示14. binary_threshold(ImageEmphasize,Region,'max_separability','light',UsedThreshold)15. *連通域處理,如圖5-13所示16. connection(Region,ConnectedRegions)17. *閉運(yùn)算,如圖5-14所示18. closing_circle(ConnectedRegions,RegionClosing,25.5)特征選擇*特征選擇,如圖5-15所示select_shape
(RegionClosing,
SelectedRegions,
'area',
'and',
48396.3,
100000)
*區(qū)域裁剪
reduce_domain
(ImageEmphasize,
SelectedRegions,
ImageReduced)
4.顯示結(jié)果*清屏
dev_clear_window
()
*顯示提取區(qū)域,如圖5-16所示dev_display
(ImageReduced)
下一任務(wù)介紹:局部閾值分割圖像。利用局部閾值分割手寫字符任務(wù)32課時【任務(wù)要求】利用局部閾值分割字符【知識鏈接】
受光線等環(huán)境的影響,有時候圖像的背景較復(fù)雜,前景和背景的灰度值呈交錯式,無法用單一灰度進(jìn)行分割,這時候可以采用局部閾值分割進(jìn)行處理,局部閾值分割也稱為動態(tài)閾值分割,其算子為:dyn_threshold。
1、算子dyn_threshold
—Segmentanimageusingalocalthreshold.格式:dyn_threshold(OrigImage,ThresholdImage:RegionDynThresh:Offset,LightDark:)參數(shù):OrigImage--原圖像;ThresholdImage--濾波后圖像(參考圖),可以通過mean_image,binomial_filter,gauss_filter等濾波方式處理;RegionDynThresh--分割后區(qū)域;Offset--灰度差值,默認(rèn)值5,鄰域比較的區(qū)間范圍,灰度值變化在offset范圍內(nèi)均是可以接受的,參數(shù)Offset不要設(shè)置0,否則將會提取到很多小的噪點區(qū)域,一般介于5-40最佳,其值越大,提取的區(qū)域越??;LightDark--“l(fā)ight”提取相對參考圖更亮的區(qū)域,“dark”提取相對參考圖更暗的區(qū)域,“equal”選取和參考圖差不多的區(qū)域,“not_equal”不同區(qū)域。作用:使用局部閾值分割圖像進(jìn)行閾值分割。例:dyn_threshold(Image,ImageMedian,RegionDynThresh,5,'light')表示:對圖像變量Image中的圖像進(jìn)行具備閾值分割,根據(jù)ImageMedian中的濾波圖像,分割后的區(qū)域放入RegionDynThresh,灰度變化范圍為“5”,選擇亮的區(qū)域。提示:在進(jìn)行dyn_threshold分割之前要先進(jìn)行濾波處理。1.讀取圖像并初始化*讀取圖像
read_image
(Image,
'alpha.tif')
*獲取圖像尺寸
get_image_size
(Image,
Width,
Height)
*關(guān)閉窗口
dev_close_window
()
*打開一個新的窗口和原圖一樣大小
dev_open_window
(0,
0,
Width,
Height,
'black',
WindowHandle)
*顯示圖像,如圖5-18所示dev_display
(Image)
2、任務(wù)實施1.濾波后進(jìn)行局部閾值分割11. *均值濾波,如圖5-19所示mean_image(Image,ImageMean,21,21)*局部閾值分割,選擇黑色“dark”,如圖5-20所示dyn_threshold(Image,ImageMean,Region,15,'dark')2、任務(wù)實施特征選擇15. *閉運(yùn)算,消除細(xì)小斑點,如圖5-21所示16. closing_circle(Region,RegionClosing,4.5)17. *連通域處理,打斷成單個小區(qū)域18. connection(RegionClosing,ConnectedRegions)19. *區(qū)域選擇,如圖5-22所示20. select_shape(ConnectedRegions,SelectedRegions,'area','and',80,1000)4.利用交集法求字符21. *求選擇的區(qū)域SelectedRegions與閾值分割區(qū)域Region的交集22. intersection(SelectedRegions,Region,RegionIntersection)5.顯示結(jié)果23. *顯示原圖24. dev_display(Image)25. *顯示最終效果,如圖5-23所示26. dev_display(RegionIntersection)下一任務(wù)介紹:局部閾值分割圖像。利用局部閾值對機(jī)器點字符進(jìn)行識別任務(wù)4【任務(wù)要求】利用局部閾值分割將字符提取出來【任務(wù)實施】讀取圖像并初始化*讀取圖像
read_image
(Image,
'number.png')
get_image_size
(Image,
Width,
Height)
dev_close_window
()
dev_open_window
(0,
0,
Width,
Height,
'black',
WindowHandle)*顯示圖像,如圖5-25所示dev_display
(Image)
局部閾值分割
*均值濾波,在局部閾值分割之前,需對圖像進(jìn)行濾波處理mean_image
(Image,
ImageMean,
11,
11)
*局部閾值分割,如圖5-26所示dyn_threshold
(Image,
ImageMean,
RegionDynThresh,
7,
'dark')
*連通域處理,打斷操作,如圖5-27所示connection
(RegionDynThresh,
ConnectedRegions)
特征選擇*選擇區(qū)域,如圖5-28所示select_shape
(ConnectedRegions,
SelectedRegions,
['area','row'],
'and',
[50,190],
[500,480])
*將字符聯(lián)合成一個區(qū)域
union1
(SelectedRegions,
RegionUnion)
*對字符進(jìn)行閉運(yùn)算
closing_circle
(RegionUnion,
RegionClosing,
3.5)
closing_rectangle1
(RegionClosing,
RegionClosing1,
5,7)
*轉(zhuǎn)為二值化圖像,如圖5-29所示region_to_bin
(RegionClosing1,
BinImage,
255,
0,
Width,
Height)
字符識別*創(chuàng)建字符識別模型
create_text_model_reader
('auto',
'Document_0-9A-Z_Rej.omc',
TextModel)
*可修改待測試字符參數(shù)信息,包括寬度、角度、行數(shù)、筆畫寬度等等
find_text
(BinImage,
TextModel,
TextResultID)
*獲取字符對象
get_text_object
(Characters,
TextResultID,
'all_lines')
*識別字符結(jié)果
get_text_result(TextResultID,
'class',
ResultValue)
*獲取字符的中心坐標(biāo)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年越南語等級考試重點難點解析與考前預(yù)測試卷
- 2025年注冊土木工程師考試建筑施工綠色施工管理試卷
- 城市快速路環(huán)境影響評估與保護(hù)方案
- 城市排澇與綠化水系聯(lián)動方案
- 2025年物業(yè)管理服務(wù)收費(fèi)標(biāo)準(zhǔn)合同范本
- 二零二五年柑桔產(chǎn)業(yè)鏈金融服務(wù)合同模板
- 2025擔(dān)保人應(yīng)收賬款質(zhì)押擔(dān)保合同范本
- 二零二五年度外墻巖棉板保溫材料采購、施工及節(jié)能補(bǔ)貼申請合同
- 預(yù)檢分診護(hù)理精要
- 人防辦公室知識課件
- 天然氣設(shè)備操作規(guī)程
- 環(huán)保合規(guī)聲明
- DBJ50-T-274-2017 重慶市軌道交通客運(yùn)服務(wù)標(biāo)志標(biāo)準(zhǔn)
- AQ6111-2023個體防護(hù)裝備安全管理規(guī)范
- 2024年湖北農(nóng)谷實業(yè)集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 倫敦的城市規(guī)劃
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- (高清版)DZT 0350-2020 礦產(chǎn)資源規(guī)劃圖示圖例
- 中醫(yī)學(xué)理論體系的基本特點
- 三輪車租賃合同范本簡單
- 印章刻制備案登記表
評論
0/150
提交評論