日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

腐蚀函数cvErode 和 膨胀函数cvDilate

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腐蚀函数cvErode 和 膨胀函数cvDilate 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????Erode腐蝕, Dilate膨脹,這兩個(gè)形態(tài)學(xué)函數(shù)總是成對(duì)出現(xiàn),前者可以消除較小的點(diǎn)如噪音,后者可以使不連通的圖像合并成塊。

void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 ); void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );????? 這兩個(gè)函數(shù)的參數(shù)相同,是一對(duì)“相反”的函數(shù)(這里的相反并不是指后一個(gè)函數(shù)可以將前一個(gè)函數(shù)處理的圖像恢復(fù),而是一個(gè)縮小圖像團(tuán)塊,一個(gè)放大圖像的團(tuán)塊)
??? src? 輸入圖像.
??? dst? 輸出圖像.
??? element? 用于膨脹的結(jié)構(gòu)元素。若為 NULL, 則使用 3×3 長(zhǎng)方形的結(jié)構(gòu)元素
? ? iterations? 膨脹的次數(shù)。 膨脹可以重復(fù)進(jìn)行 (iterations) 次. 對(duì)彩色圖像,每個(gè)彩色通道單獨(dú)處理。
??? 下面的程序?qū)⒀菔具@兩個(gè)函數(shù),腐蝕和膨脹的過(guò)程


#include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include "cv.h" #include "cxcore.h" #include "highgui.h" int main(int argc, char** argv) {if (argc<2)return 0;//檢查輸入?yún)?shù)int a = 1;int eIter = 1, dIter = 1, exitFlag = 1;IplImage *image, *image1, *image2;image = cvLoadImage(argv[1]);image1 = cvCreateImage(cvSize(image->width, image->height), 8, 1);//創(chuàng)建首地址并分配存儲(chǔ)空間image2 = cvCreateImage(cvSize(image->width, image->height), 8, 1);cvCvtColor(image, image1, CV_RGB2GRAY);//實(shí)現(xiàn)RGB顏色向HSV,HSI等顏色空間的轉(zhuǎn)換. 參數(shù)CV_RGB2GRAY是RGB到gray(灰度圖)c參數(shù) CV_GRAY2RGB是gray到RGB.cvCvtColor(image, image2, CV_RGB2GRAY);cvNamedWindow("image", 1);cvShowImage("image", image);/* 對(duì)話框未使用cvNamedWindow("Select", 1);cvCreateTrackbar("eIterations", "Select", &eIter, 20, 0); //參數(shù)1滑塊名稱 參數(shù)2顯示窗口 參數(shù)3 OPENCV將當(dāng)前滑塊位置值傳給指針指向的整數(shù) 參數(shù)4滑塊調(diào)整范圍最大值 參數(shù)5指向回調(diào)函數(shù)的指針,當(dāng)滑動(dòng)條被拖動(dòng)時(shí),函數(shù)自動(dòng)調(diào)用 cvCreateTrackbar("dIterations", "Select", &dIter, 20, 0);//參數(shù)1滑塊名稱 參數(shù)2顯示窗口 參數(shù)3 OPENCV將當(dāng)前滑塊位置值傳給指針指向的整數(shù) 參數(shù)4滑塊調(diào)整范圍最大值 參數(shù)5指向回調(diào)函數(shù)的指針,當(dāng)滑動(dòng)條被拖動(dòng)時(shí),函數(shù)自動(dòng)調(diào)用*/cvNamedWindow("Erode_fushi", 1);cvNamedWindow("Dilate_pengzhang", 1);cvShowImage("Erode_fushi", image1);cvShowImage("Dilate_pengzhang", image2);cvWaitKey(0);while (1){cvErode(image1, image1, 0, 1); /*cvErode腐蝕,消除細(xì)小物質(zhì)src 輸入圖像.dst 輸出圖像.element 用于腐蝕的結(jié)構(gòu)元素。若為 NULL, 則使用 3×3 長(zhǎng)方形的結(jié)構(gòu)元素iterations 腐蝕的次數(shù). 腐蝕可以重復(fù)進(jìn)行(iterations) 次.對(duì)彩色圖像,每個(gè)彩色通道單獨(dú)處理。*/cvShowImage("Erode_fushi", image1);std::cout << "Erode_fushi" << std::endl;a = cvWaitKey(0);if ((char)a == 'q')break;}cvCopy(image1, image2);a = 1;while (1){cvDilate(image2, image2, 0, 1); //膨脹,填充物體內(nèi)細(xì)小物質(zhì)/*cvDilate膨脹,消除細(xì)小物質(zhì)src 輸入圖像.dst 輸出圖像.element 用于膨脹的結(jié)構(gòu)元素。若為 NULL, 則使用 3×3 長(zhǎng)方形的結(jié)構(gòu)元素iterations 膨脹的次數(shù). 膨脹可以重復(fù)進(jìn)行(iterations) 次.對(duì)彩色圖像,每個(gè)彩色通道單獨(dú)處理。*/cvShowImage("Dilate_pengzhang", image2);std::cout << "Dilate_pengzhang" << std::endl;a = cvWaitKey(0);if ((char)a == 'q')break;}//釋放窗口資源return 0; }

原圖:


腐蝕:

膨脹:




一???引言
???????數(shù)學(xué)形態(tài)學(xué)是一門建立在集論基礎(chǔ)上的學(xué)科,是幾何形態(tài)學(xué)分析和描述的有力工具。數(shù)學(xué)形態(tài)學(xué)的歷史可回溯到19世紀(jì)。1964年法國(guó)的Matheron和Serra在積分幾何的研究成果上,將數(shù)學(xué)形態(tài)學(xué)引入圖像處理領(lǐng)域,并研制了基于數(shù)學(xué)形態(tài)學(xué)的圖像處理系統(tǒng)。1982年出版的專著《ImageAnalysis and MathematicalMorphology》是數(shù)學(xué)形態(tài)學(xué)發(fā)展的重要里程碑,表明數(shù)學(xué)形態(tài)學(xué)在理論上趨于完備及應(yīng)用上不斷深入。數(shù)學(xué)形態(tài)學(xué)蓬勃發(fā)展,由于其并行快速,易于硬件實(shí)現(xiàn),已引起了人們的廣泛關(guān)注。目前,數(shù)學(xué)形態(tài)學(xué)已在計(jì)算機(jī)視覺(jué)、信號(hào)處理與圖像分析、模式識(shí)別、計(jì)算方法與數(shù)據(jù)處理等方面得到了極為廣泛的應(yīng)用。
???????數(shù)學(xué)形態(tài)學(xué)可以用來(lái)解決抑制噪聲、特征提取、邊緣檢測(cè)、圖像分割、形狀識(shí)別、紋理分析、圖像恢復(fù)與重建、圖像壓縮等圖像處理問(wèn)題。該文將主要對(duì)數(shù)學(xué)形態(tài)學(xué)的基本理論及其在圖像處理中的應(yīng)用進(jìn)行綜述。

二???數(shù)學(xué)形態(tài)學(xué)的定義和分類
???????數(shù)學(xué)形態(tài)學(xué)是以形態(tài)結(jié)構(gòu)元素為基礎(chǔ)對(duì)圖像進(jìn)行分析的數(shù)學(xué)工具。它的基本思想是用具有一定形態(tài)的結(jié)構(gòu)元素去度量和提取圖像中的對(duì)應(yīng)形狀以達(dá)到對(duì)圖像分析和識(shí)別的目的。數(shù)學(xué)形態(tài)學(xué)的應(yīng)用可以簡(jiǎn)化圖像數(shù)據(jù),保持它們基本的形狀特征,并除去不相干的結(jié)構(gòu)。數(shù)學(xué)形態(tài)學(xué)的基本運(yùn)算有4個(gè):膨脹、腐蝕、開(kāi)啟和閉合。它們?cè)诙祱D像中和灰度圖像中各有特點(diǎn)?;谶@些基本運(yùn)算還可以推導(dǎo)和組合成各種數(shù)學(xué)形態(tài)學(xué)實(shí)用算法。

(1)二值形態(tài)學(xué)
???????數(shù)學(xué)形態(tài)學(xué)中二值圖像的形態(tài)變換是一種針對(duì)集合的處理過(guò)程。其形態(tài)算子的實(shí)質(zhì)是表達(dá)物體或形狀的集合與結(jié)構(gòu)元素間的相互作用,結(jié)構(gòu)元素的形狀就決定了這種運(yùn)算所提取的信號(hào)的形狀信息。形態(tài)學(xué)圖像處理是在圖像中移動(dòng)一個(gè)結(jié)構(gòu)元素,然后將結(jié)構(gòu)元素與下面的二值圖像進(jìn)行交、并等集合運(yùn)算。
???????基本的形態(tài)運(yùn)算是腐蝕和膨脹。
???????在形態(tài)學(xué)中,結(jié)構(gòu)元素是最重要最基本的概念。結(jié)構(gòu)元素在形態(tài)變換中的作用相當(dāng)于信號(hào)處理中的“濾波窗口”。用B(x)代表結(jié)構(gòu)元素,對(duì)工作空間E中的每一點(diǎn)x,腐蝕和膨脹的定義為:
???????
???????用B(x)對(duì)E進(jìn)行腐蝕的結(jié)果就是把結(jié)構(gòu)元素B平移后使B包含于E的所有點(diǎn)構(gòu)成的集合。用B(x)對(duì)E進(jìn)行膨脹的結(jié)果就是把結(jié)構(gòu)元素B平移后使B與E的交集非空的點(diǎn)構(gòu)成的集合。先腐蝕后膨脹的過(guò)程稱為開(kāi)運(yùn)算。它具有消除細(xì)小物體,在纖細(xì)處分離物體和平滑較大物體邊界的作用。先膨脹后腐蝕的過(guò)程稱為閉運(yùn)算。它具有填充物體內(nèi)細(xì)小空洞,連接鄰近物體和平滑邊界的作用。
???????可見(jiàn),二值形態(tài)膨脹與腐蝕可轉(zhuǎn)化為集合的邏輯運(yùn)算,算法簡(jiǎn)單,適于并行處理,且易于硬件實(shí)現(xiàn),適于對(duì)二值圖像進(jìn)行圖像分割、細(xì)化、抽取骨架、邊緣提取、形狀分析。但是,在不同的應(yīng)用場(chǎng)合,結(jié)構(gòu)元素的選擇及其相應(yīng)的處理算法是不一樣的,對(duì)不同的目標(biāo)圖像需設(shè)計(jì)不同的結(jié)構(gòu)元素和不同的處理算法。結(jié)構(gòu)元素的大小、形狀選擇合適與否,將直接影響圖像的形態(tài)運(yùn)算結(jié)果。因此,很多學(xué)者結(jié)合自己的應(yīng)用實(shí)際,提出了一系列的改進(jìn)算法。如梁勇提出的用多方位形態(tài)學(xué)結(jié)構(gòu)元素進(jìn)行邊緣檢測(cè)算法既具有較好的邊緣定位能力,又具有很好的噪聲平滑能力。許超提出的以最短線段結(jié)構(gòu)元素構(gòu)造準(zhǔn)圓結(jié)構(gòu)元素或序列結(jié)構(gòu)元素生成準(zhǔn)圓結(jié)構(gòu)元素相結(jié)合的設(shè)計(jì)方法,用于骨架的提取,可大大減少形態(tài)運(yùn)算的計(jì)算量,并可同時(shí)滿足尺度、平移及旋轉(zhuǎn)相容性,適于對(duì)形狀進(jìn)行分析和描述。

(2)灰度數(shù)學(xué)形態(tài)學(xué)
???????二值數(shù)學(xué)形態(tài)學(xué)可方便地推廣到灰度圖像空間。只是灰度數(shù)學(xué)形態(tài)學(xué)的運(yùn)算對(duì)象不是集合,而是圖像函數(shù)。以下設(shè)f(x,y)是輸入圖像,b(x,y)是結(jié)構(gòu)元素。用結(jié)構(gòu)元素b對(duì)輸入圖像y進(jìn)行膨脹和腐蝕運(yùn)算分別定義為:

對(duì)灰度圖像的膨脹(或腐蝕)操作有兩類效果:
(1)如果結(jié)構(gòu)元素的值都為正的,則輸出圖像會(huì)比輸入圖像亮(或暗);
(2)根據(jù)輸入圖像中暗(或亮)細(xì)節(jié)的灰度值以及它們的形狀相對(duì)于結(jié)構(gòu)元素的關(guān)系,它們?cè)谶\(yùn)算中或被消減或被除掉?;叶葦?shù)學(xué)形態(tài)學(xué)中開(kāi)啟和閉合運(yùn)算的定義與在二值數(shù)學(xué)形態(tài)學(xué)中的定義一致。用b對(duì)f進(jìn)行開(kāi)啟和閉合運(yùn)算的定義為:

(3)模糊數(shù)學(xué)形態(tài)學(xué)
???????將模糊集合理論用于數(shù)學(xué)形態(tài)學(xué)就形成了模糊形態(tài)學(xué)。模糊算子的定義不同,相應(yīng)的模糊形態(tài)運(yùn)算的定義也不相同。在此,選用Shinba的定義方法。模糊性由結(jié)構(gòu)元素對(duì)原圖像的適應(yīng)程度來(lái)確定。用有界支撐的模糊結(jié)構(gòu)元素對(duì)模糊圖像的腐蝕和膨脹運(yùn)算按它們的隸屬函數(shù)定義為:

?

其中,x,yZ2代表空間坐標(biāo),uaub分別代表圖像和結(jié)構(gòu)元素的隸屬函數(shù)。從(7),(8)式的結(jié)果可知,經(jīng)模糊形態(tài)腐蝕膨脹運(yùn)算后的隸屬函數(shù)均落在[0,1]的區(qū)間內(nèi)。模糊形態(tài)學(xué)是傳統(tǒng)數(shù)學(xué)形態(tài)學(xué)從二值邏輯向模糊邏輯的推廣,與傳統(tǒng)數(shù)學(xué)形態(tài)學(xué)有相似的計(jì)算結(jié)果和相似的代數(shù)特性。模糊形態(tài)學(xué)重點(diǎn)研究n維空間目標(biāo)物體的形狀特征和形態(tài)變換,主要應(yīng)用于圖像處理領(lǐng)域,如模糊增強(qiáng)、模糊邊緣檢測(cè)、模糊分割等。

?

?數(shù)學(xué)形態(tài)學(xué)在圖像處理中的主要應(yīng)用

?

近年來(lái),數(shù)學(xué)形態(tài)學(xué)在圖像處理方面得到了日益廣泛的應(yīng)用。下面主要就數(shù)學(xué)形態(tài)學(xué)在邊緣檢測(cè)、圖像分割、圖像細(xì)化以及噪聲濾除等方面的應(yīng)用做簡(jiǎn)要介紹。

?

(1)???????邊緣檢測(cè)

邊緣檢測(cè)是大多數(shù)圖像處理必不可少的一步,提供了物體形狀的重要信息。對(duì)于二值圖像,邊緣檢測(cè)是求一個(gè)集合A的邊界,記為BA):

?

?

對(duì)于灰度圖像,邊緣檢測(cè)是求一幅圖像的形態(tài)學(xué)梯度,記為g

?

?

數(shù)學(xué)形態(tài)學(xué)運(yùn)算用于邊緣檢測(cè),存在著結(jié)構(gòu)元素單一的問(wèn)題。它對(duì)與結(jié)構(gòu)元素同方向的邊緣敏感,而與其不同方向的邊緣(或噪聲)會(huì)被平滑掉,即邊緣的方向可以由結(jié)構(gòu)元素的形狀確定。但如果采用對(duì)稱的結(jié)構(gòu)元素,又會(huì)減弱對(duì)圖像邊緣的方向敏感性。所以在邊緣檢測(cè)中,可以考慮用多方位的形態(tài)結(jié)構(gòu)元素,運(yùn)用不同的結(jié)構(gòu)元素的邏輯組合檢測(cè)出不同方向的邊緣。

梁勇等人構(gòu)造了8個(gè)方向的多方位形態(tài)學(xué)結(jié)構(gòu)元素,應(yīng)用基本形態(tài)運(yùn)算,得到8個(gè)方向的邊緣檢測(cè)結(jié)果,再把這些結(jié)果進(jìn)行歸一化運(yùn)算、加權(quán)求和,得到最終的圖像邊緣。該算法在保持圖像細(xì)節(jié)特征和平滑邊緣等方面,取得了較好的效果。

?

(2)???????圖像分割

基于數(shù)學(xué)形態(tài)學(xué)的圖像分割算法是利用數(shù)學(xué)形態(tài)學(xué)變換,把復(fù)雜目標(biāo)X分割成一系列互不相交的簡(jiǎn)單子集X1X2,…,XN,即:

?

對(duì)目標(biāo)X的分割過(guò)程可按下面的方法完成:首先求出X的最大內(nèi)接“圓”X1,然后將X1X中減去,再求X-X1的最大內(nèi)接“圓”X2,…,依此類推,直到最后得到的集合為空集為止。下面以二值圖像為例,介紹用數(shù)學(xué)形態(tài)學(xué)方法求解子集X1X2,…,XN的過(guò)程。

設(shè)B為結(jié)構(gòu)元素,B可以是圓、三角形、正方形等簡(jiǎn)單的幾何基元,那么“簡(jiǎn)單”形狀集合Xi可以用下面的公式來(lái)定義:

?

式中ni為一整數(shù),用上式定義Xi分割目標(biāo),有時(shí)會(huì)產(chǎn)生分割過(guò)程不唯一的現(xiàn)象。為此可采用下面公式來(lái)定義簡(jiǎn)單集合Xi

?

其中Li為一個(gè)點(diǎn)或一條線,當(dāng)Li為點(diǎn)時(shí),則與(12)式定義等價(jià)。(13)式定義的簡(jiǎn)單形狀Xi可由niB沿線Li移動(dòng)而產(chǎn)生。即將“產(chǎn)生器”niB的中心沿“脊骨”Li移動(dòng)產(chǎn)生。如果niB為圓,則得到的XiBlum帶。它具有一些特殊的性質(zhì),如Xi的邊界是光滑的,Xi的最大圓與其邊界相切,Xi的脊骨與產(chǎn)生器都是唯一的等等。

有了簡(jiǎn)單形狀集合Xi的定義,則目標(biāo)X可按下面方法分割。首先按式(14)求出X的最大內(nèi)切結(jié)構(gòu)元素Xi

?

?

數(shù)學(xué)形態(tài)學(xué)用于圖像分割的缺點(diǎn)是對(duì)邊界噪聲敏感。為了改善這一問(wèn)題,劉志敏等人提出了基于圖像最大內(nèi)切圓的數(shù)學(xué)形態(tài)學(xué)形狀描述圖像分割算法和基于目標(biāo)最小閉包結(jié)構(gòu)元素的數(shù)學(xué)形態(tài)學(xué)形狀描述圖像分割算法,并使用該算法對(duì)二值圖像進(jìn)行了分割,取得了較好的效果。鄧世偉等人提出一種基于數(shù)學(xué)形態(tài)學(xué)的深度圖像分割算法。作者首先利用形態(tài)學(xué)算子獲得分別含有階躍邊緣與屋脊邊緣的凸脊和凹谷圖像,然后利用控制區(qū)域生長(zhǎng)過(guò)程得到最終的分割結(jié)果。與傳統(tǒng)方法相比,該方法速度快,抗噪性能好。

?

(3)???????形態(tài)骨架提取

形態(tài)骨架描述了物體的形狀和方向信息。它具有平移不變性、逆擴(kuò)張性和等冪性等性質(zhì),是一種有效的形狀描述方法。二值圖像A的形態(tài)骨架可以通過(guò)選定合適的結(jié)構(gòu)元素B,對(duì)A進(jìn)行連續(xù)腐蝕和開(kāi)啟運(yùn)算來(lái)求取,設(shè)SA)代表A的骨架,定義為:

?

蔣剛毅等人運(yùn)用數(shù)學(xué)形態(tài)學(xué)方法,對(duì)交通標(biāo)志的內(nèi)核形狀提取形態(tài)骨架函數(shù),將其作為用于模式匹配的形狀特征。A的形態(tài)骨架函數(shù)SKFA)表示為:

?

SKFX)中值較大的點(diǎn)對(duì)應(yīng)大的n,并代表了形態(tài)骨架的主要成分,即表達(dá)了形狀的主體結(jié)構(gòu);而SKFX)中值較小的點(diǎn)對(duì)應(yīng)小的n,是形態(tài)骨架的細(xì)節(jié)成分,與形狀的邊緣信息相聯(lián)系。

形態(tài)骨架函數(shù)完整簡(jiǎn)潔地表達(dá)了形態(tài)骨架的所有信息,因此,根據(jù)形態(tài)骨架函數(shù)的模式匹配能夠?qū)崿F(xiàn)對(duì)不同形狀物體的識(shí)別。算法具有位移不變性,因而使識(shí)別更具穩(wěn)健性。

?

(4)???????噪聲濾除

對(duì)圖像中的噪聲進(jìn)行濾除是圖像預(yù)處理中不可缺少的操作。將開(kāi)啟和閉合運(yùn)算結(jié)合起來(lái)可構(gòu)成形態(tài)學(xué)噪聲濾除器。

對(duì)于二值圖像,噪聲表現(xiàn)為目標(biāo)周圍的噪聲塊和目標(biāo)內(nèi)部的噪聲孔。用結(jié)構(gòu)元素B對(duì)集合A進(jìn)行開(kāi)啟操作,就可以將目標(biāo)周圍的噪聲塊消除掉;用B對(duì)A進(jìn)行閉合操作,則可以將目標(biāo)內(nèi)部的噪聲孔消除掉。該方法中,對(duì)結(jié)構(gòu)元素的選取相當(dāng)重要,它應(yīng)當(dāng)比所有的噪聲孔和噪聲塊都要大。

對(duì)于灰度圖像,濾除噪聲就是進(jìn)行形態(tài)學(xué)平滑。實(shí)際中常用開(kāi)啟運(yùn)算消除與結(jié)構(gòu)元素相比尺寸較小的亮細(xì)節(jié),而保持圖像整體灰度值和大的亮區(qū)域基本不變;用閉合運(yùn)算消除與結(jié)構(gòu)元素相比尺寸較小的暗細(xì)節(jié),而保持圖像整體灰度值和大的暗區(qū)域基本不變。將這兩種操作綜合起來(lái)可達(dá)到濾除亮區(qū)和暗區(qū)中各類噪聲的效果。同樣的,結(jié)構(gòu)元素的選取也是個(gè)重要問(wèn)題。

?

?選取結(jié)構(gòu)元素的方法

分析表明,各種數(shù)學(xué)形態(tài)學(xué)算法的應(yīng)用可分解為形態(tài)學(xué)運(yùn)算和結(jié)構(gòu)元素選擇兩個(gè)基本問(wèn)題,形態(tài)學(xué)運(yùn)算的規(guī)則已由定義確定,于是形態(tài)學(xué)算法的性能就取決于結(jié)構(gòu)元素的選擇,亦即結(jié)構(gòu)元素決定著形態(tài)學(xué)算法的目的和性能。因此如何自適應(yīng)地優(yōu)化確定結(jié)構(gòu)元素,就成為形態(tài)學(xué)領(lǐng)域中人們長(zhǎng)期關(guān)注的研究熱點(diǎn)和技術(shù)難點(diǎn)。目前較多采用多個(gè)結(jié)構(gòu)元素對(duì)圖像進(jìn)行處理的方法。

?

(1)???????多結(jié)構(gòu)元素運(yùn)算

在許多形態(tài)學(xué)應(yīng)用中,往往只采用一個(gè)結(jié)構(gòu)元素,這通常不能產(chǎn)生滿意的結(jié)果。在模式識(shí)別中,如果要提取某個(gè)特定的模式,只采用一個(gè)結(jié)構(gòu)元素,那么,只有與結(jié)構(gòu)元素形狀、大小完全相同的模式才能被提取,而與此結(jié)構(gòu)元素表示的模式即使有微小差別的其他模式的信息都不能獲取。

解決此問(wèn)題的一個(gè)有效方法之一就是將形態(tài)學(xué)運(yùn)算與集合運(yùn)算結(jié)合起來(lái),同時(shí)采用多個(gè)結(jié)構(gòu)元素,分別對(duì)圖像進(jìn)行運(yùn)算,然后將運(yùn)算后的圖像合并起來(lái),即多結(jié)構(gòu)元素形態(tài)學(xué)運(yùn)算。

?

(2)???????用遺傳算法選取結(jié)構(gòu)元素

遺傳算法的思想來(lái)源于自然界物競(jìng)天擇、優(yōu)勝劣汰、適者生存的演化規(guī)律和生物進(jìn)化原理,并引用隨機(jī)統(tǒng)計(jì)理論而形成,具有高效并行全局優(yōu)化搜索能力,能有效地解決機(jī)器學(xué)習(xí)中參數(shù)的復(fù)雜優(yōu)化和組合優(yōu)化等難題。

近年來(lái)不少國(guó)外學(xué)者已進(jìn)行了這方面的探索與研究,Ehrgardt設(shè)計(jì)了形態(tài)濾波的遺傳算法,用于二值圖像的去噪和根據(jù)二值紋理特性消除預(yù)定目標(biāo);Huttumen利用遺傳算法構(gòu)造了軟式形態(tài)濾波器及其參數(shù)優(yōu)化的設(shè)計(jì)方法,以實(shí)現(xiàn)灰度圖像的降噪功能。余農(nóng)、李予蜀等人用遺傳算法在自然景象的目標(biāo)檢測(cè)與提取方面進(jìn)行了研究,通過(guò)自適應(yīng)優(yōu)化訓(xùn)練使結(jié)構(gòu)元素具有圖像目標(biāo)的形態(tài)結(jié)構(gòu)特征,從而賦予結(jié)構(gòu)元素特定的知識(shí),使形態(tài)濾波過(guò)程融入特有的智能,以實(shí)現(xiàn)對(duì)復(fù)雜變化的圖像具有良好的濾波性能和穩(wěn)健的適應(yīng)能力。其實(shí)質(zhì)是解決濾波器設(shè)計(jì)中知識(shí)獲取和知識(shí)精煉的機(jī)器學(xué)習(xí)問(wèn)題。

?

?數(shù)學(xué)形態(tài)學(xué)存在的問(wèn)題與進(jìn)一步的研究方向

數(shù)學(xué)形態(tài)學(xué)是一門建立在集論基礎(chǔ)之上的學(xué)科,是幾何形狀分析和描述的有力工具。近年來(lái),數(shù)學(xué)形態(tài)學(xué)在數(shù)字圖像處理、計(jì)算機(jī)視覺(jué)與模式識(shí)別等領(lǐng)域中得到了越來(lái)越廣泛的應(yīng)用,漸漸形成了一種新的數(shù)字圖像分析方法和理論,引起了國(guó)內(nèi)外相關(guān)領(lǐng)域研究人員的廣泛關(guān)注。目前,數(shù)學(xué)形態(tài)學(xué)存在的問(wèn)題及研究方向主要集中在以下幾個(gè)方面:

(1)????????????形態(tài)運(yùn)算實(shí)質(zhì)上是一種二維卷積運(yùn)算,當(dāng)圖像維數(shù)較大時(shí),特別是用灰度形態(tài)學(xué)、軟數(shù)學(xué)形態(tài)學(xué)、模糊形態(tài)學(xué)等方法時(shí),運(yùn)算速度很慢,因而不適于實(shí)時(shí)處理。

(2)????????????由于結(jié)構(gòu)元素對(duì)形態(tài)運(yùn)算的結(jié)果有決定性的作用,所以,需結(jié)合實(shí)際應(yīng)用背景和期望合理選擇結(jié)構(gòu)元素的大小與形狀。

(3)?????????????軟數(shù)學(xué)形態(tài)學(xué)中關(guān)于結(jié)構(gòu)元素核心、軟邊界的定義,及對(duì)加權(quán)統(tǒng)計(jì)次數(shù)*的選擇也具有較大的靈活性,應(yīng)根據(jù)圖像拓?fù)浣Y(jié)構(gòu)合理選擇,沒(méi)有統(tǒng)一的設(shè)計(jì)標(biāo)準(zhǔn)。

(4)???????????為達(dá)到最佳的濾波效果,需結(jié)合圖像的拓?fù)涮匦赃x擇形態(tài)開(kāi)、閉運(yùn)算的復(fù)合方式。

(5)????????????對(duì)模糊形態(tài)學(xué),不同的模糊算子會(huì)直接影響模糊形態(tài)學(xué)的定義及其運(yùn)算結(jié)果。

(6)???????????有待進(jìn)一步將數(shù)學(xué)形態(tài)學(xué)與神經(jīng)網(wǎng)絡(luò)、模糊數(shù)學(xué)結(jié)合研究灰度圖像、彩色圖像的處理和分析方法。

(7)????????????有待進(jìn)一步研究開(kāi)發(fā)形態(tài)運(yùn)算的光學(xué)實(shí)現(xiàn)及其它硬件實(shí)現(xiàn)方法。

(8)????????????有待將形態(tài)學(xué)與小波、分形等方法結(jié)合起來(lái)對(duì)現(xiàn)有圖像處理方法進(jìn)行改進(jìn),進(jìn)一步推廣應(yīng)用。所以如何實(shí)現(xiàn)灰度形態(tài)學(xué)、軟數(shù)學(xué)形態(tài)學(xué)、模糊軟數(shù)學(xué)形態(tài)學(xué)的快速算法,如何改善形態(tài)運(yùn)算的通用性,增強(qiáng)形態(tài)運(yùn)算的適應(yīng)性,并結(jié)合數(shù)學(xué)形態(tài)學(xué)的最新應(yīng)用進(jìn)展,將其應(yīng)用到圖像處理領(lǐng)域,豐富和發(fā)展利用數(shù)學(xué)形態(tài)學(xué)的圖像處理與分析方法,成為數(shù)學(xué)形態(tài)學(xué)今后的發(fā)展方向。

?

?結(jié)論

數(shù)學(xué)形態(tài)學(xué)對(duì)圖像的處理具有直觀上的簡(jiǎn)明性和數(shù)學(xué)上的嚴(yán)謹(jǐn)性,在定量描述圖像的形態(tài)特征上具有獨(dú)特的優(yōu)勢(shì),為基于形狀細(xì)節(jié)進(jìn)行圖像處理提供了強(qiáng)有力的手段。建立在集合理論基礎(chǔ)上的數(shù)學(xué)形態(tài)學(xué),主要通過(guò)選擇相應(yīng)的結(jié)構(gòu)元素采用膨脹、腐蝕、開(kāi)啟、閉合#種基本運(yùn)算的組合來(lái)處理圖像。數(shù)學(xué)形態(tài)學(xué)在圖像處理中的應(yīng)用廣泛,有許多實(shí)用的算法,但在每種算法中結(jié)構(gòu)元素的選取都是一個(gè)重要的問(wèn)題。


算法思路:? 腐蝕的算法: 用3x3的結(jié)構(gòu)元素,掃描圖像的每一個(gè)像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作:如果都為1,結(jié)果圖像的該像素為1。否則為0。 結(jié)果:使二值圖像減小一圈 定義:E = B ? S = { x,y | Sxy?B}膨脹的算法: 用3x3的結(jié)構(gòu)元素,掃描圖像的每一個(gè)像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作:如果都為0,結(jié)果圖像的該像素為0。否則為1 結(jié)果:使二值圖像擴(kuò)大一圈 定義:E = B ? S = { x,y | Sxy∩B ≠Ф} 代碼: VC++code? 轉(zhuǎn)自:http://blog.csdn.net/vincentzhao2009/archive/2009/10/24/4723469.aspx

?腐蝕:

?????把結(jié)構(gòu)元素S?平移x?后得到Sx?,若Sx?包含于X?,我們記下這個(gè)x?點(diǎn),所有滿足上述條件的x?點(diǎn)組成的集合稱做X?被S?腐蝕(Erosion)的結(jié)果。用公式表示為:

?????????

?????腐蝕的方法是,拿S?的原點(diǎn)和X上的點(diǎn)一個(gè)一個(gè)地對(duì)比,如果S?上的所有點(diǎn)都在X?的范圍內(nèi),則S?的原點(diǎn)對(duì)應(yīng)的點(diǎn)保留,否則將該點(diǎn)去掉。以下是詳細(xì)的代碼,并且附上測(cè)試圖片:

#include?
#include?

#include?

#include?

#include

unsigned char **get_matrix_space(int m,intn)?
{?

int i;?

unsigned char **a;?

a=(unsigned char **)calloc(m,sizeof(unsigned char*));?

for(i=0;ireturn a;?

}

main(){?
FILE *fs,*fd;?

unsigned charc1,c2,**ps,**pd,**get_matrix_space(int,int);?

int width,height,L,i,j,l,m,match;?

?
?? if((fs=fopen("sourcea.pgm","rb")) ==NULL){?
?
??????printf("can't open %s\n","source.pgm");?
?
??????exit(1);?
?
??}?
?
?? if((fd =fopen("destination.pgm","wb")) ==NULL){?
?
??????printf("can't open%s\n","destination.pgm");?
?
??????exit(1);?
?
?? }

fscanf(fs,"%c%c\n%d%d\n%d\n",&c1,&c2,&width,&height,&L);?
ps=get_matrix_space(height,width);?

pd=get_matrix_space(height,width);

for(i=0;i???for(j=0;j???????fread(&ps[i][j],sizeof(unsignedchar),1,fs);?
?
??????pd[i][j] = 0;?
?
??}?
}

///?
match = 1;?

for(i=0;i?
??for(j=0;j???????for(m=i;m???????????for(l=j;l???????????????if(ps[m][l]!=255){?
?
??????????????????match = 0;?
?
??????????????}?
?
??????????}?
?
??????}?
?
??????if(match != 0){?
?
??????????pd[i][j]=255;?
?
??????}?
?
??????match = 1;?
?
??}?
}?

//?

fprintf(fd,"%c%c\n%d%d\n%d\n",'P','5',width,height,L);?

for(i=0;i?
??for(j=0;j???????fwrite(&pd[i][j],sizeof(unsignedchar),1,fd);?
?
??}?
}?

}

?

??????膨脹:

?????把結(jié)構(gòu)元素S?平移x?后得到Sx?,若Sx?與X?相交不為空,我們記下這個(gè)x?點(diǎn),所有滿足上述條件的x?點(diǎn)組成的集合稱做X?被S?膨脹((dilation))的結(jié)果。用公式表示為:

?????

?????膨脹的方法是,拿S?的原點(diǎn)和X?上的點(diǎn)一個(gè)一個(gè)地對(duì)比,如果S?上有一個(gè)點(diǎn)落在X?的范圍內(nèi),則S?的原點(diǎn)對(duì)應(yīng)的點(diǎn)就為圖像。以下是詳細(xì)的代碼,并且附上測(cè)試圖片:

#include?
#include?

#include?

#include?

#include

unsigned char **get_matrix_space(int m,intn)?
{?

int i;?

unsigned char **a;

a=(unsigned char **)calloc(m,sizeof(unsigned char*));?
for(i=0;ireturn a;?

}

main(){?
FILE *fs,*fd;?

unsigned charc1,c2,**ps,**pd,**v,**get_matrix_space(int,int);?

intwidth,height,L,i,j,l,m,windowSize,match;?

?
?? if((fs=fopen("source.pgm","rb")) ==NULL){?
?
??????printf("can't open %s\n","source.pgm");?
?
??????exit(1);?
?
??}?
?
?? if((fd =fopen("destination.pgm","wb")) ==NULL){?
?
??????printf("can't open%s\n","destination.pgm");?
?
??????exit(1);?
?
?? }

fscanf(fs,"%c%c\n%d%d\n%d\n",&c1,&c2,&width,&height,&L);?
ps=get_matrix_space(height,width);?

pd=get_matrix_space(height,width);

for(i=0;i???for(j=0;j???????fread(&ps[i][j],sizeof(unsignedchar),1,fs);?
?
??}?
}?

match = 0;?

//?

//用2x2方塊作為膨脹的結(jié)構(gòu)元素。?

for(i=0;i?
??for(j=0;j???????for(l=i;l???????????for(m=j;m???????????????if(ps[l][m]==255){?
?
??????????????????match = 1;?
?
??????????????}?
?
??????????}?
?
??????}?
?
??????if(match == 1){?
?
??????????pd[i][j] = 255;?
?
??????????match = 0;?
?
??????}?
?
??}?
}?

//?

fprintf(fd,"%c%c\n%d%d\n%d\n",'P','5',width,height,L);?

for(i=0;i?
??for(j=0;j???????fwrite(&pd[i][j],sizeof(unsignedchar),1,fd);?
?
??}?
}?

}

?


Matlab?
originalBW =imread('f.jpg');? se=strel('line',20,0);? BW=imdilate(originalBW,se);? imshow(BW)? imwrite(BW,'腐蝕膨脹后的圖像.jpg')
一般先將處理圖像轉(zhuǎn)為整型或邏輯型再處理即可。

總結(jié)

以上是生活随笔為你收集整理的腐蚀函数cvErode 和 膨胀函数cvDilate的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。