官术网_书友最值得收藏!

第1章 熱點(diǎn)圖像處理方法原理及其MATLAB仿真

1.1 基于模型的圖像邊緣檢測(cè)及其代碼快速生成

1.1.1 模型驅(qū)動(dòng)開發(fā)思想概述

基于模型設(shè)計(jì)方法是一種設(shè)計(jì)復(fù)雜系統(tǒng)的可視化數(shù)學(xué)方法。基于模型的軟件開發(fā)方法是一種以模型為中心的軟件設(shè)計(jì)方法,用模型來(lái)形式化表示用戶所構(gòu)建系統(tǒng)的功能、行為和結(jié)構(gòu)。形式化的意思是指描述模型的語(yǔ)言具有定義良好的語(yǔ)法和語(yǔ)義。基于模型設(shè)計(jì)思想是通過(guò)模型抽象和描述系統(tǒng)的關(guān)鍵問(wèn)題,用模型表示出系統(tǒng)解決方案,并通過(guò)形式化的工具對(duì)系統(tǒng)模型進(jìn)行驗(yàn)證,以保證系統(tǒng)設(shè)計(jì)正確性。基于模型設(shè)計(jì)思想從根本上解決了軟件設(shè)計(jì)的正確性保證問(wèn)題。

什么是模型?模型可以是具體的物理實(shí)體,也可以是抽象的描述,如圖像描述、數(shù)學(xué)表達(dá)式。模型特征是對(duì)對(duì)應(yīng)的物理系統(tǒng)或者非物理系統(tǒng)的一種簡(jiǎn)化表示,是人們的一種有意識(shí)的創(chuàng)造物。有了模型,系統(tǒng)開發(fā)人員就可以依賴模型來(lái)構(gòu)建系統(tǒng),而忽略掉無(wú)關(guān)的細(xì)節(jié)。

系統(tǒng)建模和模型仿真驗(yàn)證是基于模型設(shè)計(jì)方法的兩個(gè)重點(diǎn)。采用特定的建模語(yǔ)言和模型設(shè)計(jì)工具,來(lái)抽象出被描述的目標(biāo)系統(tǒng),從而建立準(zhǔn)確的模型,這樣可以消除其他系統(tǒng)描述方式(比如文本描述)的模糊性和二義性。仿真驗(yàn)證毫無(wú)疑問(wèn)需要基于建立好的準(zhǔn)確的目標(biāo)模型,而仿真驗(yàn)證帶來(lái)的好處是通過(guò)相應(yīng)的仿真驗(yàn)證工具對(duì)模型進(jìn)行仿真驗(yàn)證之后可以保證模型的正確性。

模型驅(qū)動(dòng)架構(gòu)(Model Driven Architecture, MDA)是2002年被提出的,包含了模型的精確形式化表示、模型存儲(chǔ)以及模型交換等方面的一系列規(guī)約,如MOF(Meta Object Facility)、OCL(Object Constraint Language)、XMI(XML Metadata Interchange)等,旨在提高程序設(shè)計(jì)的抽象層次,提高軟件開發(fā)效率,增強(qiáng)軟件的可移植性、協(xié)同工作能力和可維護(hù)性。要求設(shè)計(jì)時(shí)進(jìn)行嚴(yán)格的模型定義,力求最終能全部或部分自動(dòng)生成工程代碼。

MDA的軟件開發(fā)過(guò)程是由軟件系統(tǒng)建模驅(qū)動(dòng)的。模型根據(jù)抽象層次不同可分為平臺(tái)無(wú)關(guān)模型PIM和平臺(tái)相關(guān)模型PSM。平臺(tái)無(wú)關(guān)模型描述系統(tǒng)的行為需求不涉及平臺(tái)實(shí)現(xiàn)細(xì)節(jié),平臺(tái)無(wú)關(guān)模型的設(shè)計(jì)者專注于表示系統(tǒng)的業(yè)務(wù)邏輯;平臺(tái)相關(guān)模型不僅包含系統(tǒng)功能描述,而且包含實(shí)現(xiàn)平臺(tái)的設(shè)計(jì)思想。平臺(tái)無(wú)關(guān)模型可以被轉(zhuǎn)換為一個(gè)或多個(gè)平臺(tái)相關(guān)模型,平臺(tái)相關(guān)模型最終會(huì)轉(zhuǎn)換成具體平臺(tái)的實(shí)現(xiàn)代碼。MDA軟件開發(fā)周期如圖1.1.1所示。

圖1.1.1 MDA軟件開發(fā)周期

MDA引入了模型驅(qū)動(dòng)開發(fā)(Model-Driven Development, MDD)的軟件開發(fā)和模型集成運(yùn)算(Model-Integrated Computing, MIC)的開發(fā)模式。模型驅(qū)動(dòng)開發(fā)是當(dāng)今嵌入式系統(tǒng)開發(fā)方法的熱點(diǎn),模型集成運(yùn)算開發(fā)方法是面向領(lǐng)域的模型驅(qū)動(dòng)開發(fā)方法,在面向特定領(lǐng)域的建模語(yǔ)言方面擴(kuò)展了模型驅(qū)動(dòng)開發(fā)方法,能通過(guò)元模型針對(duì)特定領(lǐng)域進(jìn)行定制和裁剪,并能基于領(lǐng)域模型自動(dòng)生成代碼。

代碼生成的概念最初見于編譯器設(shè)計(jì)和開發(fā)中,編譯器先將輸入的源程序翻譯成某種中間表示,然后產(chǎn)生等價(jià)的某種目標(biāo)程序語(yǔ)言表示的目標(biāo)程序。這種將中間表示生成目標(biāo)程序的過(guò)程也是代碼生成,但是在基于模型的軟件設(shè)計(jì)方法中的代碼生成是指利用計(jì)算機(jī)程序(代碼生成器)將模型自動(dòng)地生成可用的代碼。代碼生成的過(guò)程大致包括模型建立和生成代碼。建立一個(gè)好的能準(zhǔn)確描述應(yīng)用系統(tǒng)并充分考慮系統(tǒng)應(yīng)用環(huán)境的模型并沒(méi)有解決所有問(wèn)題,因?yàn)楸仨殞⑦@個(gè)模型轉(zhuǎn)化成有效的可運(yùn)行的模型代碼。

基于模型的軟件開發(fā)方法和傳統(tǒng)的軟件開發(fā)方法有著顯著的區(qū)別。傳統(tǒng)的軟件開發(fā)方法如圖1.1.2所示,其核心是代碼,代碼的開發(fā)、測(cè)試和維護(hù)占用項(xiàng)目開發(fā)的絕大多數(shù)時(shí)間和精力。而基于模型的軟件開發(fā)方法,如圖1.1.3所示,其核心是模型,項(xiàng)目開發(fā)的主要工作是模型的設(shè)計(jì),測(cè)試和維護(hù)也是圍繞著模型來(lái)開展的,其代碼可以方便地依據(jù)模型而自動(dòng)生成。代碼生成可以很好地提升軟件開發(fā)效率、縮短軟件開發(fā)周期、提高軟件開發(fā)效率。

圖1.1.2 傳統(tǒng)的以代碼為中心的軟件開發(fā)方法

圖1.1.3 以模型為中心的軟件開發(fā)方法

1.1.2 模型驅(qū)動(dòng)開發(fā)的優(yōu)勢(shì)

基于模型驅(qū)動(dòng)的設(shè)計(jì)開發(fā)在各個(gè)過(guò)程之間沒(méi)有阻礙,它的優(yōu)勢(shì)在于:

(1)在統(tǒng)一的開發(fā)、測(cè)試平臺(tái)上,允許產(chǎn)品從需求分析階段就開始驗(yàn)證,并做到持續(xù)不斷的驗(yàn)證與測(cè)試;

(2)產(chǎn)品的缺陷暴露在產(chǎn)品開發(fā)的初級(jí)階段,開發(fā)者把主要精力放在算法和測(cè)試的研究上,代碼生成和驗(yàn)證過(guò)程則留給計(jì)算機(jī)自動(dòng)完成;

(3)大大縮短開發(fā)周期,降低開發(fā)成本。

1.1.3 模型驅(qū)動(dòng)開發(fā)在圖像處理領(lǐng)域中的應(yīng)用

眾所周知,數(shù)字圖像處理的實(shí)現(xiàn)過(guò)程中代碼量巨大,將模型驅(qū)動(dòng)開發(fā)引入到圖像處理領(lǐng)域,則可大大提高其規(guī)范性和高效性。

基于模型驅(qū)動(dòng)的數(shù)字圖像處理的主要步驟包括:

(1)需求分析;

(2)將實(shí)現(xiàn)過(guò)程按照邏輯先后順序分為各個(gè)階段,再將各個(gè)階段按照功能劃分為各個(gè)模塊;

(3)建立基于功能模塊的模型,并進(jìn)行仿真;

(4)代碼自動(dòng)生成。

1.1.4 基于Simulink-Blocks的模型驅(qū)動(dòng)開發(fā)圖像處理

MATLAB中的計(jì)算機(jī)視覺(jué)系統(tǒng)工具箱(Computer Vision System)如圖1.1.4所示,提供了視頻和圖像處理的各種模型,共計(jì)11個(gè)大類庫(kù),每個(gè)模型庫(kù)提供了數(shù)種模塊。用戶可以通過(guò)拖動(dòng)、組合,構(gòu)建視頻和圖像處理模型,進(jìn)行視頻和圖像的仿真和分析。

圖1.1.4 計(jì)算機(jī)視覺(jué)系統(tǒng)工具箱的路徑

啟動(dòng)MATLAB,選擇菜單欄的Simulink Library,按圖1.1.4所示選擇Computer Vision System Toolbox,系統(tǒng)就會(huì)顯示計(jì)算機(jī)視覺(jué)系統(tǒng)工具箱,如圖1.1.5所示。視頻和圖像處理模塊包含Sources(輸入模塊)、Sinks(輸出模塊)、Analysis &Enhancement(分析和增強(qiáng))、Conversions(轉(zhuǎn)換)、Filtering(濾波)、Geometric Transformations(幾何變換)、Morphological Operations(形態(tài)學(xué)運(yùn)算)、Statistics(統(tǒng)計(jì))、Text &Graphics(文本和圖像)、Transforms(變換)和Utilities(自定義)11個(gè)大類庫(kù)。這幾乎包含了圖像處理中的所有操作和算法,并附帶了文字標(biāo)注子模塊,為圖像處理的模型建立和仿真提供了充足的模塊。

圖1.1.5 計(jì)算機(jī)視覺(jué)系統(tǒng)工具箱模塊

1.1.5 基于Sobel算子的邊緣檢測(cè)的基本原理

邊緣是圖像最基本的特征。邊緣檢測(cè)在計(jì)算機(jī)視覺(jué)、圖像分析等應(yīng)用中起著重要的作用,是圖像分析與識(shí)別的重要環(huán)節(jié)。因?yàn)閳D像的邊緣包含了用于識(shí)別的有用信息,所以邊緣檢測(cè)是圖像分析和模式識(shí)別的主要特征提取手段。

所謂邊緣,是指其周圍像素灰度階躍變化或屋頂狀變化的那些像素的集合,它存在于目標(biāo)與背景、目標(biāo)與目標(biāo)、區(qū)域與區(qū)域、基元與基元之間。因此,它是圖像分割所依賴的重要特征,也是紋理特征的重要信息源和形狀特征的基礎(chǔ);而圖像的紋理形狀特征的提取又常常依賴于圖像分割。圖像的邊緣提取也是圖像匹配的基礎(chǔ),因?yàn)樗俏恢玫臉?biāo)志,對(duì)灰度的變化不敏感,所以可作為匹配的特征點(diǎn)。

圖像的其他特征都是由邊緣和區(qū)域這些基本特征推導(dǎo)出來(lái)的。邊緣具有方向和幅度兩個(gè)特征。沿邊緣走向,像素變化比較平緩;而垂直于邊緣走向,像素變化比較劇烈,而這種劇烈變化可能呈現(xiàn)階躍狀,也可能呈現(xiàn)斜坡狀。邊緣上的這種變化可以用微分算子檢測(cè)出來(lái),通常用一階或二階導(dǎo)數(shù)來(lái)檢測(cè)邊緣。不同的是,一階導(dǎo)數(shù)認(rèn)為最大值對(duì)應(yīng)邊緣位置,而二階導(dǎo)數(shù)則以過(guò)零點(diǎn)對(duì)應(yīng)邊緣位置。

邊緣檢測(cè)的步驟如下:

(1)圖像濾波。邊緣檢測(cè)算法主要是基于圖像亮度的一階和二階導(dǎo)數(shù),但是導(dǎo)數(shù)的計(jì)算對(duì)噪聲很敏感,因此必須使用濾波器來(lái)改善與噪聲有關(guān)的邊緣檢測(cè)器的性能。

(2)圖像增強(qiáng)。增強(qiáng)邊緣的基礎(chǔ)是確定圖像各點(diǎn)鄰域強(qiáng)度的變化值。增強(qiáng)算法可以將鄰域強(qiáng)度值有顯著變化的點(diǎn)突出顯示。

(3)圖像檢測(cè)。在圖像中有許多點(diǎn)的梯度幅值比較大,而這些點(diǎn)在特定的應(yīng)用領(lǐng)域中并不都是邊緣,應(yīng)該用某些方法來(lái)確定哪些是邊緣點(diǎn)。最簡(jiǎn)單的邊緣檢測(cè)判據(jù)是梯度幅值閾值判據(jù)。

(4)圖像定位。如果某一應(yīng)用場(chǎng)合要求確定邊緣位置,則邊緣的位置可以在子像素分辨率上來(lái)估計(jì),邊緣的方位也可以被估計(jì)出來(lái)。

對(duì)于圖像的邊緣檢測(cè)來(lái)說(shuō),一般在識(shí)別過(guò)程中有如下要求:

(1)首先能夠正確地檢測(cè)出有效的邊緣;

(2)邊緣定位的精度要高;

(3)檢測(cè)的響應(yīng)最好是單像素的;

(4)對(duì)于不同尺度的邊緣都能有較好的響應(yīng)并盡量減少漏檢;

(5)對(duì)噪聲應(yīng)該不敏感;

(6)檢測(cè)的靈敏度受邊緣方向影響應(yīng)該小。

邊緣檢測(cè)的實(shí)質(zhì)是采用某種算法來(lái)提取出圖像中的對(duì)象與背景間的交界線。圖像灰度的變化情況可以用圖像灰度分布的梯度來(lái)反映,因此可以利用局部圖像微分技術(shù)獲得邊緣檢測(cè)算子。經(jīng)典的邊緣檢測(cè)方法是對(duì)原始圖像中像素的某個(gè)小鄰域來(lái)構(gòu)造邊緣檢測(cè)算子。

Sobel算子的基本原理是將圖像中每個(gè)像素的上、下、左、右四鄰域的灰度值加權(quán)差,與之接近的鄰域的權(quán)值最大。因此,Sobel算子定義如下:

sx={f(x+1, y-1)+2f(x+1, y)+f(x+1, y+1)}

-{f(x-1, y-1)+2f(x-1, y)+f(x-1, y+1)}

sy={f(x-1, y+1)+2f(x, y+1)+f(x+1, y+1)}

-{f(x-1, y-1)+2f(x, y)+f(x+1, y-1)}

該方法不但能產(chǎn)生較好的檢測(cè)效果,而且對(duì)噪聲具有平滑作用,可以提供較為精確的邊緣方向信息。但是,在抗噪聲好的同時(shí)增加了計(jì)算量,而且也會(huì)檢測(cè)出偽邊緣,定位精度不高。如果檢測(cè)中對(duì)精度的要求不高,則該方法較為常用。

1.1.6 基于模型的實(shí)現(xiàn)

下面就通過(guò)一個(gè)例子來(lái)看一下,如何通過(guò)MATLAB Simulink-Blocks來(lái)實(shí)現(xiàn)基于模型驅(qū)動(dòng)的數(shù)字圖像處理。

(1)需求分析。對(duì)輸入的圖像進(jìn)行Sobel邊緣檢測(cè)。

(2)實(shí)現(xiàn)步驟。RGB圖像輸入→轉(zhuǎn)換成灰度圖像→邊緣提取。

(3)建立功能模塊,并通過(guò)功能模塊進(jìn)行仿真。

其中,各功能模塊及其路徑如表1.1.1所列,連接方式如圖1.1.6所示。

表1.1.1 各功能模塊及其路徑

圖1.1.6 基于模型驅(qū)動(dòng)的Sobel邊緣檢測(cè)

對(duì)各模塊的屬性進(jìn)行設(shè)置如下:

(1)雙擊Image From File模塊,將其參數(shù)設(shè)置為如圖1.1.7所示的內(nèi)容。

圖1.1.7 Image From File模塊參數(shù)設(shè)置

(2)雙擊Color Space Conversion模塊,將其參數(shù)設(shè)置為如圖1.1.8所示的參數(shù)。

圖1.1.8 Color Space Conversion模塊參數(shù)設(shè)置

(3)雙擊Edge Detection模塊,將其參數(shù)設(shè)置為如圖1.1.9所示的參數(shù)。

圖1.1.9 Edge Detection模塊參數(shù)設(shè)置

在完成各功能模塊的設(shè)置之后,對(duì)整個(gè)模型進(jìn)行仿真,證明該模型是正確的并且是可行的,其運(yùn)行效果如圖1.1.10所示。

圖1.1.10 模型仿真結(jié)果

1.1.7 代碼的快速生成

接下來(lái),進(jìn)行代碼的自動(dòng)生成。在Simulation下拉菜單下,選擇Configuration Parameters,如圖1.1.11所示。

圖1.1.11 選擇Configuration Parameters操作

將Solver options的屬性設(shè)置為Fixed-step,如圖1.1.12所示。

圖1.1.12 將Solver options的屬性設(shè)置為Fixed-step

單擊Code Generation下的Build按鈕(如圖1.1.13所示),便可生成可執(zhí)行的C代碼,如圖1.1.14所示。

圖1.1.13 單擊Code Generation下的Build按鈕

圖1.1.14 生成的可執(zhí)行的C代碼

主站蜘蛛池模板: 民乐县| 武陟县| 江城| 汽车| 雷山县| 缙云县| 千阳县| 麻城市| 集贤县| 荥经县| 黄浦区| 隆子县| 丰台区| 太湖县| 西林县| 乳源| 荥经县| 青海省| 营口市| 兴隆县| 涞水县| 花莲县| 屯留县| 马边| 留坝县| 乃东县| 沅江市| 襄樊市| 习水县| 曲周县| 唐海县| 汝城县| 开化县| 固阳县| 红安县| 新源县| 北碚区| 开原市| 奎屯市| 安福县| 剑川县|