




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