圖像處理也可以稱作視覺處理。LabVIEW提供了多種圖像處理的方法。其中NI公司的視覺采集軟件提供的驅動和函數,既能夠從數千種連接到 NI 幀接收器上的不同相機上采集圖像,也能夠從連接在PC、PXI系統或筆記本計算機上標準端口的IEEE1394和千兆位以太網視覺相機采集圖像。
本實例主要完成通過 USB 攝像頭采集圖像,并經過一些運算對圖像進行數據分析。在實例中用采集到的圖片作樣本,讓系統認識一個像素,然后開始自動查找圖像中的相同像素,查找時還要對圖片進行翻轉,以全面找到相同的像素,最后再標注出這些點的中心位置和點數。
一、Vision圖像工具安裝
Vision 是一個圖像處理的工具包,當安裝完成后,啟動 LabVIEW 軟件,可以在前面板與后面板上看到相應的控件和函數。
在實驗中,我們會用到工具前面板的Vision選項列表的三個圖像顯示控件IMAQ Image.ctl、Image Display、Image Display(Classic)進行圖像分析、處理及顯示設置;也會用到后面板“視覺與運動”函數選板,包括常用的視覺圖像采集函數組NI-IMAQ、應用函數組Vision Utilities。具體控件與函數使用方法,可自行參考百度索引或者Vision視覺助手相關的書籍手冊。
二、圖像采集
要處理圖像,必須先要獲取一張圖像。獲取圖像是通過調用 Vision 中的 IMAQ USB 函數來實現的。它的最大優勢在于可以自動識別 USB 攝像頭,并讀取數據。
選擇“函數”|“Vision and Motion”|“IMAQ USB”命令,打開IMAQ USB函數下拉列表,如圖1所示。
在進行圖像采集時,先要用IMAQ Create函數創建一個圖像任務,此函數的接線如圖2所示。
圖1 圖像采集函數
圖2 IMAQ Create函數圖標
這里通過此函數對圖像的名稱和類型大小等進行定義,否則后面的工作沒有辦法進行。然后再通過一個 USB 啟動函數來調用 USB 攝像頭設備。此函數是 NI 公司自己研發專門讀取 USB 設備的函數,其內部通過調用ImaqDirectShowDll.dll文件來實現。
打開USB設備后,就要從此設備上獲取數據,所以用了一個IMAQ USB Grab Acquire函數來實現。整個圖像采集程序框圖如圖3所示。
圖3 圖像采集
三、圖像處理過程
此處的圖像處理包括對圖像進行采樣,找出與采樣點相同的圖像。為了找出各種角度放置的采樣點,在查找的同時對圖像進行了360°的翻轉,這樣可以找出圖像上所有相同點。
1.整體設計
在本實例設計中,對一張圖片先設置好要查找的內容,然后開始自動查找,最后對找出的內容進行標記和顯示。
由于軟件的運行比較復雜,數據的采集又是實時的,要求處理速度比較快,所以要對其進行整體設計,合理安排控件的調用和執行順序。本程序中采用了一個大循環,保持程序的持續運行。在內部再調用一個順序結構來控制程序的執行順序 ,這樣可以保證程序按編程者的思路進行。具體的工作流程圖如圖4所示。
圖4 整個程序流程圖
2.設置查找像素
讀取了圖像數據后,還要設置查找的像素。這里通過一個光標選擇函數來實現。
先用函數IMAQ Setup Learn Pattern 2來設置需要記錄的各項,然后再用IMAQ Extract函數進行光標設置。這樣就記錄了此光標區域的圖像數據。它的程序框圖如圖5所示。
圖5 設置查找像素
這里用一個條件結構來控制是否進入記錄像素的程序。也就是當選擇了要記錄的像素后,才進入此分支程序。在這一分支程序中,又利用了一個順序結構,這樣提高了程序運行的效率。它的程序如圖6所示。
圖6 復位記錄按鈕
3.開始查找
當設置完以上要查找的像素后,就可以在需要的圖片中查找此像素。為了查找有用的像素,在選擇了“開始查找”后,要先讀取上面標記的像素,再進行查找。
此處程序的設計中,也是先運行一個條件結構,再運行順序結構,按順序執行程序。讀取光標選擇像素的程序如圖7所示。
圖7 讀取選擇的像素
當讀取像素后,利用順序結構在第二幀的圖像中繼續查找。在這一幀中放置了一個循環,并限制循環次數為4。此時先用一個IMAQ Rotate對圖像進行翻轉,每次翻轉90°。這樣就可以在循環4次時翻轉一周,對圖像上各個角度的像素進行查找。再把圖像送到IMAQ Match Pattern 2函數,對其進行查找。通過此函數直接輸出找到的像素信息的數組。為了對找到的信息進行處理,又用一個For循環對此數據和簇進行拆分。這里的For循環次數直接由數組大小來控制。把數組拆開后再找到像素的中心位置,并按設置好的字體和格式顯示出來。對字體的設置,前面板如圖8所示。
圖8 標記字體設置
從圖7中可以看出,其中包括字體名稱、字體大小、下畫線、加粗等標記方式。標記字體程序如圖9所示。
圖9 標記字體程序
可以看到,最復雜的設置是對標記內容的組合與寫入。這里先由Draw Pattern Matches Position函數讀取各個記錄點的坐標值,然后用一個字符串組合函數把標記和坐標值組合成一個標記字符串。最后由IMAQ Draw Text函數把組合好的標記信息直接寫入圖像界面中。整個標記程序如圖10所示。
圖10 完整標記程序
當第二幀執行完后,進入第三幀的圖像大小設置。因為在前面查找的過程中,為了查找得更加精確,對圖像進行了像素的放大,這里為了顯示的方便,就需要對圖像進行還原,這樣才可以看得清楚。此處用了IMAQ Extract函數,對顯示的圖像進行放大和縮小,但是沒有改變真正的圖像。它的程序框圖如圖11所示。
圖11 圖像還原
4.程序前面板
當所有后面板程序編寫完后,就要進行前面板控件布局。由于此程序中涉及的控件不多,所以很好設置整體布局。程序界面如圖12所示。其中,“標簽類型”是為了給標簽進行不同的編號,在當前坐標前面加的一個前綴,這樣更好區分不同的像素點。“最大數目”是查找出目標的最大限制。如果設置為40,則最多只能找出40個目標。當大于此值時,則將多出來的其他目標量忽略。
下面對查找時要放大的倍數進行設置,這里只是對二維的數據放大,所以在界面上設置兩個值,一個是X,另一個是Y。前面板布局如圖13所示。
圖12 控制項設置
圖13 放大設置
為了對系統的工作進行控制,需要設置4個按鈕。它們分別如下:
— 開始采集:用于啟動采集,完成整個任務的第一個動作,采集一張圖片。
— 記錄標記:用于對光標選擇的區域進行記錄,以識別設置像素。
— 開始查找:啟動整個系統,對采集到的圖片進行查找,找出相同像素并進行標記。
— 停止工作:系統停止工作。
界面布局如圖14所示。
圖14 按鈕設置
接下來對查找后的圖像進行顯示,這是非常關鍵的一個步驟。這里還對查找到的總個數進行了統計,這樣可以讓人對查找結果一目了然,完整的前面板界面如圖15所示。
圖15完整界面
5.程序調試
程序編寫完成后,要對系統進行軟硬件的聯機調試。這里把NI公司的USB攝像頭和計算機連接,并在計算機上安裝此軟件工具包。具體操作如下:
(1)運行本程序,在攝像頭下放置好一塊電路板,并對其設置好焦距和亮度。單擊“開始采集”按鈕,對其進行采集,并顯示實時采集到的圖像,如圖16所示。
(2)當采集完一次后,在界面上可以看到清晰的采集結果。此時我們用光標在需要進行識別的地方畫出一個區域。此時光標變為綠色,表示用光標選中了要記錄的像素。然后單擊“學習標記”按鈕,此光標消失,表示已經記錄(學習)完成,如圖17所示。
從圖上可以看出,這里選中的是電路板上字母C,讓程序學習記錄,并找出界面上所有的字母C。
圖16 圖像采集
圖17 設置學習區域
(3)記錄學習完成后,就可以查找相同像素的點了。單擊“開始查找”按鈕后,程序開始在此圖上查找記錄的像素點,并以此像素點為標準,進行比對,找出相同的點。查找的過程中標出了各個點的坐標和編號。這里把標簽類型設置為“A”,以Shift Invariant的方式查找,精度設置為700,最大數目設置為40。這樣就可找出所有相同的元素。程序運行時如圖18所示。
圖18 查找結果
從圖中可以看出,查找過程中,程序找出了所有字母 C,并標注了它們的坐標和標簽。此處的標簽有些不是端正的,主要是由于在對圖片進行翻轉查找時,按相應的角度找到后直接就標記了。如標簽 A43(70,471)表示的意義如下:字母 A是對程序進行查找前設置的標簽類型。4表示此圖片翻轉到第4次找到的,即第4個角度。3表示是此角度下的第3個點。(70,471)表示當前查找到像素的中心坐標,即此目標的 X=70,Y=471,坐標的值是從圖像開始的左上角界面算起的。
同時可以看到界面的下面顯示了圖片的屬性,如圖片大小、位數等。最后還可以看到一個“已查找到總個數”本框,此處顯示的是8個目標。這和圖上標注的一樣,也和實際完全相符。
(4)完成查找后,單擊“停止工作”按鈕中斷此程序的運行。系統退出圖像采集和處理環節。
四、實例總結
本例講解了LabVIEW中圖像處理方面的具體應用,主要對如何利用Vision工具包采集圖像進行了詳細的講解。同時采集到圖像后進行了各類復雜的運算,其中編程的思路也是筆者的經驗展示,讀者需要用心體會,掌握設置不同事件的合理運行順序。
想要領取完整的LabVIEW視覺圖像識別與處理學習文檔,聯系文章文末的助教老師微信領取。
責任編輯:xj
原文標題:純干貨分享!手把手教你工業圖像視覺識別與處理
文章出處:【微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。
-
usb
+關注
關注
60文章
8146瀏覽量
270932 -
圖像處理
+關注
關注
27文章
1325瀏覽量
57727 -
視覺識別
+關注
關注
3文章
103瀏覽量
16978
原文標題:純干貨分享!手把手教你工業圖像視覺識別與處理
文章出處:【微信號:elecfans,微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論