在Reading Book Notes 2中已經(jīng)介紹的基本的操作方法,也就是點(diǎn)好火了,下面就要開始炒菜啦~
Opencv主要是針對圖像進(jìn)行處理的庫璃诀,故它能解決一些數(shù)字圖像處理中涉及到的圖像處理技術(shù)月培,同時因?yàn)橛蟹庋b好的方法,故其使用起來更方便直接夫椭,也解放了編程者對于底層的設(shè)計(jì)掸掸,使程序編寫更高效~
當(dāng)然,對于一些方法蹭秋,理解其原理對于針對不同的實(shí)際問題會帶來直接的幫助扰付,比如在使用LSD(Line Segment Detector)進(jìn)行直線檢測時,相關(guān)參數(shù)的合理設(shè)置便顯得尤為重要仁讨,而這二則需要對其原理有一定的理解羽莺,才能更好地設(shè)置其各個參數(shù)以達(dá)到所需的效果。因此洞豁,自己有另外補(bǔ)充一些數(shù)字圖像處理的相關(guān)知識盐固,加上之前有看過一些相關(guān)方面的內(nèi)容荒给,所以理解起來會稍微快一些了~在這兒附上我看的書名,《Visual C++數(shù)字圖形處理》刁卜,《基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)》志电。另外在編程的過程中還參考了《計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程——c++語言》,如果想對數(shù)字圖像處理有更細(xì)致地理解蛔趴,可以參考經(jīng)典書籍岡薩雷斯《數(shù)字圖像處理第二版中文版》對于自身而言挑辆,因?yàn)橛嗅槍唧w的實(shí)際問題,所以我采用的方法是大體通讀加深印象孝情,在具體實(shí)現(xiàn)的過程中主根據(jù)所需解決的問題之拨,想到解決方法,然后再進(jìn)行相關(guān)的查閱咧叭。因?yàn)镺penCV中很多算法都已經(jīng)進(jìn)行了封裝蚀乔,個人認(rèn)為了解了其原理,知道如何使用便可菲茬,不需要太在意其具體的實(shí)現(xiàn)算法吉挣。
下面進(jìn)入正題吧:)
圖像濾波
所謂濾波即利用一個核(kernel)對圖像進(jìn)行相應(yīng)的計(jì)算,根據(jù)計(jì)算方式的不同婉弹,最后也將得到不同的圖像輸出睬魂,一般常做的處理是平滑和銳化,前者用于降噪镀赌,后者用于突出細(xì)節(jié)氯哮。
平滑:
中值濾波——能較好地處理掉椒鹽噪聲
高斯濾波——處理后的圖片能更好地用于邊緣檢測
雙邊濾波——平滑后,能盡可能地保留邊緣信息
【Tips:在之后做項(xiàng)目的過程中商佛,接觸到一種guided image filter喉钢,其是對雙邊濾波的一種優(yōu)化,具體的可以參見論文良姆〕λ洌】
以上的濾波方法均有其實(shí)現(xiàn)了的對應(yīng)函數(shù),如圖1:
銳化:主要進(jìn)行的是一階或二階導(dǎo)的操作玛追,但具體到應(yīng)用的話税课,即不同的銳化算法,對應(yīng)不同的核(算子)痊剖,所以也就可以簡單理解~~函數(shù)調(diào)用方法如下圖2所示:
圖像金字塔:即對圖像進(jìn)行不同尺度的縮放
?????? a韩玩、高斯金字塔:其思路是將同一圖片進(jìn)行多次高斯模糊,并且向下取樣陆馁,用以產(chǎn)生不同尺寸下的圖片找颓,用來進(jìn)行后續(xù)所需的處理,如分割等氮惯。方法:首先用高斯核進(jìn)行濾波叮雳,然后刪除所有偶數(shù)行和偶數(shù)列想暗。對應(yīng)的函數(shù)如下圖3所示:
????? b妇汗、拉普拉斯金字塔:在高斯金字塔運(yùn)算過程中帘不,圖像經(jīng)過濾波和下采樣操作后會丟失掉部分高頻細(xì)節(jié)信息。為描述這些高頻信息杨箭,便定義了拉普拉斯金字塔(LP)寞焙,用高斯金字塔的每一層圖像減去其上一層圖像上采樣并高斯卷積之后的預(yù)測圖像,得到一系列的差值圖像即為LP分解圖像互婿。
注:opencv中暫時沒有該函數(shù)的實(shí)現(xiàn)捣郊,但能由高斯金字塔的方法來間接得到。
形態(tài)學(xué)變換
一開始看到形態(tài)學(xué)變化不太能從字面上理解其含義慈参,后面查閱到書籍呛牲,便有了一個直觀地認(rèn)識~~
其基本思想為:用具有一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中的對應(yīng)形狀而這樣的一種操作過程是建立在集合論的基礎(chǔ)之上,也就是對圖像的操作時間上是對集合的相應(yīng)操作驮配。但是為了明了簡單起見娘扩,也就不用集合論的方式來解釋其實(shí)現(xiàn)過程,而用代碼地實(shí)現(xiàn)原理來說明可能會更助于理解~~
注:“結(jié)構(gòu)元素”在圖像中不斷移動壮锻,可用來確定圖像之間各部分的關(guān)系琐旁,結(jié)構(gòu)元素一般是一些比較小的圖像,其尺寸要明顯小于目標(biāo)圖像的尺寸猜绣。
另外灰殴,本書中所敘述的是針對二值圖像的形態(tài)學(xué)變換,在參考其他書籍時掰邢,主要到形態(tài)學(xué)變換還可進(jìn)行基于灰度圖的形態(tài)學(xué)變換牺陶,基本的形態(tài)學(xué)變換方式相似,只是針對灰度圖時是基于數(shù)學(xué)圖像函數(shù)而非集合論辣之。
最基本的形態(tài)學(xué)變換:腐蝕义图,膨脹
腐蝕(Erode):使暗部擴(kuò)張,亮部收縮召烂。起作用是消除物體邊界點(diǎn)碱工,是邊界向內(nèi)部收縮。
操作原理:某個像素的輸出值即為結(jié)構(gòu)元素對應(yīng)下原圖范圍的局部最小值奏夫。
膨脹(dilate):使亮部擴(kuò)張怕篷,暗部收縮。將與物體接觸的所有背景點(diǎn)合并到該物體中酗昼,使邊界向外部擴(kuò)張廊谓。
操作原理:某個像素的輸出值即為結(jié)構(gòu)元素對應(yīng)下原圖范圍的局部最大值。
效果截圖如下圖4所示:
基于腐蝕麻削,膨脹的擴(kuò)展形態(tài)學(xué)操作:開運(yùn)算蒸痹,閉運(yùn)算春弥,擊中/擊不中變換,頂帽,黑帽
開運(yùn)算(open):能夠去除孤立的小點(diǎn)叠荠、毛刺以及斷開小的連通區(qū)域匿沛,去除小物體、平滑較大物體的邊界榛鼎,并不明顯改變其面積逃呼。
操作原理:使用同一個結(jié)構(gòu)元素,先對圖像進(jìn)行腐蝕者娱,再進(jìn)行膨脹操作
閉運(yùn)算(close):填充細(xì)小的空洞抡笼,連接鄰近物體,彌合較窄的間斷和細(xì)長的溝壑黄鳍,平滑其邊界推姻,不明顯改變目標(biāo)圖像的面積。
操作原理:使用同一個結(jié)構(gòu)元素框沟,先對圖像進(jìn)行膨脹藏古,再進(jìn)行腐蝕操作
注:雖然開運(yùn)算與閉運(yùn)算的操作順序相反,但兩者不具有互逆的關(guān)系街望。
Tips:開閉運(yùn)算的功能效果取決于先進(jìn)性的操作校翔,后者的操作主要是用于平滑邊界,并且都不明顯改變物體大小灾前。
擊中/擊不中變換(hit-or-miss transform防症, HMT):對于研究圖像中物體與背景之間的關(guān)系會有很好的效果,是一個基本的形狀檢測工具哎甲,其輸出結(jié)果是與模板相同的目標(biāo)圖像的位置點(diǎn)蔫敲。
操作原理:同時探測圖像的內(nèi)部和外部,判斷哪些成分在圖像內(nèi)炭玫,那些在圖像外奈嘿,從而確定圖像的結(jié)構(gòu)。
注:HMT是一種嚴(yán)格的模板匹配吞加,它不僅指出被匹配點(diǎn)所滿足的性質(zhì)(即模板的形狀)裙犹,同時也指出這些點(diǎn)所不應(yīng)滿足的性質(zhì)(即對周圍背景的要求)。應(yīng)用得不是特別廣~對于這種變換衔憨,我只是大致了解了一下叶圃,自己在實(shí)際過程中目前還未用到。
頂帽(Top-Hat):用于檢測出圖像中較尖銳的波峰践图,從較暗(亮)且變換平緩的背景中提取較亮(暗)的細(xì)節(jié)掺冠。
操原理作:使用同一個結(jié)構(gòu)元素,先對圖像進(jìn)行開運(yùn)算码党;然后求源圖像與開運(yùn)算后結(jié)果的差德崭。
黑帽(Black-Hat):突出比原圖輪廓周圍區(qū)域更暗的區(qū)域斥黑,分離比鄰點(diǎn)暗一些的斑塊
操作原理:使用同一個結(jié)構(gòu)元素,先對圖像進(jìn)行閉運(yùn)算眉厨;然后求閉運(yùn)算后結(jié)果與源圖像的差锌奴。
注:頂帽與黑帽,均是與原圖的差值缺猛,也就是看在原圖中減少或增加了怎樣的成分缨叫,便是其突出的效果椭符。
形態(tài)學(xué)梯度:可用于檢測圖像的邊緣
操作原理:用圖像膨脹的結(jié)果減去圖像腐蝕的結(jié)果即得到圖像的形態(tài)學(xué)梯度荔燎。
其函數(shù)使用可見下圖5:
對于各種操作的實(shí)際運(yùn)行效果,因?yàn)闀r間的原因销钝,在這兒我就不重新運(yùn)行展示了有咨,網(wǎng)上這個方面的內(nèi)容很全,這本書上只是大致地介紹了一下以及其使用方法蒸健,在這我把基本的操作方式在這貼上~如下圖6所示
書中還提到LUTs(Look-up tables)即先建立一張灰度值轉(zhuǎn)換表座享,然后針對一張圖上每個像素的灰度值進(jìn)行查表操作,得到最終輸出的結(jié)果似忧。
注:上面所說到的形態(tài)學(xué)變換是針對二值圖像而言渣叛,對于灰度圖像的形態(tài)學(xué)操作,其調(diào)用的函數(shù)一樣盯捌,只是其針對的是對灰度圖進(jìn)行處理淳衙。下面進(jìn)行簡要的說明。
灰度圖像的形態(tài)學(xué)操作:
【腐蝕】:因?yàn)檫吘壍幕叶戎递^大饺著,其會向灰度值高的區(qū)域內(nèi)收縮箫攀。
【膨脹】:圖像邊緣向外延伸
【開運(yùn)算】:可去除相對結(jié)構(gòu)元素較小的明亮區(qū)域細(xì)節(jié),保持整體的灰度和較大的明亮區(qū)域
【閉運(yùn)算】:可去除相對于結(jié)構(gòu)元素較小的暗細(xì)節(jié)幼衰,整體灰度和較大的暗區(qū)基本不變靴跛。
注:為了更直觀地看出變換的效果,應(yīng)該附上圖片渡嚣,但由于現(xiàn)在時間的關(guān)系梢睛,就過幾天運(yùn)行了之后在來這兒貼上吧~
由于篇幅的關(guān)系,本章中后面的內(nèi)容就放到下節(jié)筆記中啦~