《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 基于數(shù)字圖像處理技術(shù)的工程檢測軟件設(shè)計
基于數(shù)字圖像處理技術(shù)的工程檢測軟件設(shè)計
摘要:  利用工業(yè)數(shù)碼相機(jī)拍攝照片,獲取模擬圖像,再通過圖像采集卡,對圖像進(jìn)行離散化 后傳送給計算機(jī),計算機(jī)將得到的數(shù)字圖像按一定的圖像文件格式保存;然后調(diào)用該圖像處理系統(tǒng)對圖像處理分析,根據(jù)需要提取的特征值,最后對得到的特征數(shù)值進(jìn)行數(shù)據(jù)重構(gòu)分析,獲取精度公差結(jié)果。
Abstract:
Key words :

一、 概述
  利用工業(yè)數(shù)碼相機(jī)拍攝照片,獲取模擬圖像,再通過圖像采集卡,對圖像進(jìn)行離散化 后傳送給計算機(jī),計算機(jī)將得到的數(shù)字圖像按一定的圖像文件格式保存;然后調(diào)用該圖像處理系統(tǒng)對圖像處理分析,根據(jù)需要提取的特征值,最后對得到的特征數(shù)值進(jìn)行數(shù)據(jù)重構(gòu)分析,獲取精度公差結(jié)果。

二、 該軟件的構(gòu)件關(guān)系
  本軟件的設(shè)計是以VB6.0為客戶,MATLAB6.5與AUTOCAD為服務(wù)器來共同完成的。利用VB的可視化設(shè)計構(gòu)建人機(jī)對話界面,利用MATLAB的圖形處理功能和強(qiáng)大的編程功能完成軟件核心處理,而后利用AUTOCAD的圖形標(biāo)注和測量功能完成圖像數(shù)據(jù)的獲得。
  對AutoCAD對象控制[1]:acaddoc.sendcommand "符合Autocad 的指令" ;該命令可以向AutoCAD發(fā)出指令調(diào)用且執(zhí)行該指令。
  對MATLAB的對象控制[2]:在將MATLAB作為服務(wù)器利用ActiveX技術(shù)進(jìn)行調(diào)用時,在操作系統(tǒng)的注冊表中只有以下三個函數(shù)可以用。
1) matlab.execute “ MATLAB格式的程序”;該句用于執(zhí)行MATLAB的命令
2) matlab.getfullmatrix(“a”, “base”, “mreal”,“mimag”);該句用于執(zhí)行從MATLAB中讀出距陣的數(shù)值,放在數(shù)組a中,mreal為距陣的實(shí)部,mimag為距陣的虛部。
3) matlab.putfullmatrix(“a”, “base”, “mreal”,“mimag”);該句用于執(zhí)行把外部的數(shù)組讀入到MATLAB中距陣的數(shù)值,放在距陣a中,mreal為距陣的實(shí)部,mimag為距陣的虛部。
  在VB中應(yīng)用符合MATLAB與AutoCAD的命令,首先必須建立VB與MATLAB,VB與AutoCAD之間的聯(lián)系。這是通過在VB中書寫公用變量聲名的方式來實(shí)現(xiàn)的。
  其核心程序?yàn)椋?br /> Public matlab As Object ;全局變量聲名
Public acaddoc As Object
Public mdspace As Object
Public acadapp As Object
Public acadutil As Object
On Error Resume Next ;對于matlab的打開、聲明和錯誤處理
Set matlab = GetObject( "matlab.application"
If Err Then
Err.Clear
Set matlab = CreateObject("matlab.application"
If Err Then
MsgBox "軟件不能打開MATLAB,請重試!"
Exit Sub
End If
End If
以下是autocad的引用,對AutoCAD的打開、聲明和錯誤處理
On Error Resume Next
Set acadapp = GetObject(, "autocad.application"
If Error Then
Err.Clear
Set acadapp = CreateObject("autocad.application"
If Err Then
MsgBox "無法引導(dǎo)AUTOCAD,請檢查是否已安裝了AUTOCAD2000."
End If
End If
Set acaddoc = acadapp.activedocument ;設(shè)置autocad的具體工作情況
Set mdspace = acaddoc.modelspace
Set acadutil = acaddoc.utility
acadapp.Visible = False

三、 軟件的核心算法
1、 灰度圖像的算法
  邊緣是指其周圍象素灰度有階躍變化或者屋頂變化的那些要素的集合[4]。求解二維實(shí)函數(shù)的梯度后選擇合適的閾值提取邊緣的方法稱為梯度閾值法。這種微分算法運(yùn)算簡單,但抗干擾能力差。經(jīng)典的邊緣檢測方法是考察圖像的每個像素的某個領(lǐng)域內(nèi)灰度的變化,利用邊緣鄰近一階或二階導(dǎo)數(shù)變化規(guī)律,用簡單的方法檢測邊緣,該方法常被稱為邊緣檢測局部算子。
  Roberts算子的基本原理:
  對數(shù)字圖像的灰度函數(shù)為Z=f(x,y),x和y分別為像素的坐標(biāo)。若在坐標(biāo)點(diǎn)(x,y)處有邊緣,則利用f(x,y)在x與y方向上的變化率可以算出其變化最快的方向,即梯度方向。
  若考慮數(shù)字圖像的離散域,可以直接用圖像的一階差分代替圖像函數(shù)的偏導(dǎo)數(shù),二維離散圖像函數(shù)在x方向與y方向的一階差分分別定義為f(x+1,y)-f(x,1)與f(x,y+1)-f(x,y)。

2、 二值圖像的算法
  二值圖像中所有的像素只能從0和1這兩個值中取值,因此,在MATLAB中,二值圖像用一個由0和1組成的二維矩陣來表示。它們分別代表著關(guān)閉和打開,關(guān)閉表示該像素處于背景,而打開表示該像素處于前景。以這種方式來進(jìn)行操作圖像更容易識別出圖像的結(jié)構(gòu)特征。

四、 該軟件的操作方法
  首先是,原照片圖像的獲取工作??梢允遣噬掌部梢允呛诎渍?,它們都是模擬圖像,如果想要對其進(jìn)行處理就必須先將其轉(zhuǎn)換為數(shù)字圖像。其次,是圖像的預(yù)處理。用戶可以通過該軟件進(jìn)行各種圖像格式的剪裁、翻轉(zhuǎn)、比例調(diào)整、濾波,二值圖像的腐蝕處理、膨脹處理、直方圖的均衡化等等。再次,是灰度圖像的處理。用戶可以根據(jù)自己的需要通過比較各種算子的處理結(jié)果來確定所獲取的圖像,及而是對灰度果圖像的處理結(jié)果進(jìn)行圖像的擬合重構(gòu)分析。如果用戶對灰度圖像的處理結(jié)果不滿意,可以通過二值圖像操作菜單欄進(jìn)行二值圖像的相關(guān)操作;在這里用戶可以進(jìn)行,二值圖像的骨架化處理,其精度可以高達(dá)一個象素級。接下來,用戶將進(jìn)行的是圖像幾何尺寸的重構(gòu)和公差的計算顯示。在此處,用戶可以通過點(diǎn)擊菜單欄相應(yīng)的內(nèi)容獲取,其點(diǎn)擊的順序是從上向下依次序點(diǎn)擊。最后,在相關(guān)信息菜單欄用戶可以通過點(diǎn)擊獲取已打開的圖片信息,圓度公差表以及該軟件的版權(quán)聲明信息。

五、 一個簡單的實(shí)例
1.該軟件的安裝
  單擊setup.exe,依照一般軟件的安裝方式就可以完成安裝。初始密碼為:111111。 圖1 安裝界面
圖2 初始界面
2.該軟件的操作
  依照該軟件的相關(guān)菜單就可以完成操作。其順序?yàn)椋簣D像的預(yù)處理,灰度處理(或二值處理),數(shù)據(jù)重構(gòu),公差獲得。
  以一個茶杯的照片為例:茶杯直徑為35mm;其點(diǎn)陣1024×768像素 圖3 原始圖像 圖4 灰度圖像剪裁(488×488像素) 圖5 該照片的灰度直方圖
圖6 灰度算子獲取輪廓邊界 圖7 圓形的重構(gòu)
  結(jié)果分析:外包絡(luò)圓直徑為像素492;內(nèi)包絡(luò)圓直徑為像素486;該茶杯的圓度公差為6個像素,即0.05mm。該結(jié)果與實(shí)測結(jié)果基本吻合。

3.注意事項(xiàng)
  該軟件要求用戶系統(tǒng)中必須安裝MATLAB和AUTOCAD;如果沒用安裝其中的任何一個,本軟件將提示用戶不可正常工作的原因。

六、 結(jié)束語
  通過以上分析,文中已經(jīng)清晰地構(gòu)建出了該軟件的系統(tǒng)模型。文中同時給出了核心部分程序的基本算法以及三個軟件的調(diào)用申請指令;這對于圖形圖像軟件的開發(fā)者來說,具有較好的參考價值。實(shí)踐表明,本軟件運(yùn)行結(jié)果真實(shí)、有效,具有很強(qiáng)的實(shí)用性。

參考文獻(xiàn)
[1] 胡海青等 著.Autocad的設(shè)計與二次開發(fā)[M].北京:化學(xué)工業(yè)出版社,2001,3.
[2] 王曉丹,吳崇明 編著.基于MATLAB的系統(tǒng)分析與設(shè)計——圖像處理[M].西安:西安電子科技大學(xué)出版社,2004,5.
[3] 張兆禮,趙春暉,梅曉丹. 現(xiàn)代圖像處理技術(shù)及Matlab 實(shí)現(xiàn)[M]. 北京:人民郵電出版社, 2001,5.
[4] 張杰.一種實(shí)用的二值圖像細(xì)化算法[J]. 計算機(jī)應(yīng)用及軟件,1998,(12):28-32.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。