基于小波变换的图像边缘检测(matlab祖传代码注释)
基于小波變換的圖像邊緣提取應(yīng)用展示
上圖為針對png格式無背景原圖的邊緣檢測,對比各種邊緣檢測算子,小波變化的優(yōu)勢體現(xiàn)并不明顯。
上圖為針對含背景圖片的邊緣檢測,小波變化的優(yōu)勢這里體現(xiàn)的比較明顯。
matlab祖?zhèn)鞔a注釋
相信看到這篇文章的小伙伴一定已經(jīng)搜索了“小波變換 邊緣檢測”這樣的關(guān)鍵詞很多次了,但是得到的代碼好像只有那一個,哈哈哈,我當時也是只發(fā)現(xiàn)了這一個代碼,在查閱了一些文獻后對代碼思路有一些理解,在這里和大家分享~
廢話不多說,先放一張流程圖便于大家理解代碼。下面為加了一些注釋的祖?zhèn)鞔a。
噪點濾波作用如下圖所示
大家看到這里可能對每一行代碼大概知道時什么意思了,但是整個代碼段的邏輯結(jié)構(gòu)可能還不清楚。就比如說,我現(xiàn)在去買菜,我知道了現(xiàn)在是我在給他錢,下一步是他找我錢,但是,我為毛要去買菜啊!這是個問題。
代碼思路
小波變換與尺度函數(shù)
時間多的,或者想融匯貫通這段代碼的,點開上面這個鏈接,仔細看完,相信對你有很多幫助。我也是看了這篇文章對小波變換才知一二,沒時間的,或者喜歡我的(哈哈哈)可以看我接下來的總結(jié)(扯淡)。
首先,小波變換分為連續(xù)小波變換和離散小波變換,由于我們用于計算的信號都是經(jīng)過采樣后的,所以接下來我們講離散小波變化,同樣代碼里用的也是離散小波變換,這里可能有同學(xué)就要問了,為什么不用連續(xù)小波變換?是不是瞧不起我!
那么這里簡單說一下,首先你怎么在代碼里實現(xiàn)積分?如果有寫過PID算法的同學(xué)可能知道,PID公式里也有積分,但是在代碼里我們把他轉(zhuǎn)變成了累加,這同時也是積分的意義,將坐標軸分成無限小的小段。。。扯遠了
好的,現(xiàn)在我們確定使用離散小波變換了。
大家可以看到上圖中信號輸出 f(t) 等于后面的一串式子,那么我們怎么計算f(t)呢?
很簡單,第一種方式,就按表達式算。那么我們是不是要有尺度函數(shù)和小波函數(shù)?那從哪得到呢?萬能的淘寶也沒有,需要自己構(gòu)建,怎么構(gòu)建呢?小波變換與尺度函數(shù) 這個鏈接又來啦,詳見里面所述。總之就是太麻煩了,所以代碼里采用第二種方式。
第二種方式,設(shè)計低通濾波器h(k),利用魚骨型算法迭代計算。這個 h(k) 是什么呢?
h = [0.125,0.375,0.375,0.125];
沒錯,就是代碼里這個參數(shù),代表尺度向量,至于參數(shù)初始值為什么是這個,則需要根據(jù)尺度函數(shù)需要滿足的3個條件來進行計算。
有了h和g后我們利用下面這個公式就可以一層層進行計算小波函數(shù)系數(shù)和尺度函數(shù)系數(shù)。
同樣這兩個公式在代碼里也有體現(xiàn)。分解尺度 j 也就是我們代碼里的循環(huán)次數(shù)。
到這里大家可能知道一些代碼為什么是這樣寫了,知道我們原來買菜是為了做飯,那又為什么要做飯呢?這個問題還得大家一起去探討。這里放幾個我在學(xué)習(xí)小波變換的邊緣檢測中遇到的好文章,共享。
文章1 這篇文章就是文中放過的
文章2 這篇文章在講相關(guān)參數(shù) 更深一點
文章3 這篇文章的5.2也有將代碼思路
————————20200206分割線———————
這篇文章是2019年10月6號寫的,也是我在CSDN上寫的第一篇文章,貢獻了博客一半的訪問量,今天是2020年2月6 號,這4個月期間也有斷斷續(xù)續(xù)了解一些小波變換邊緣檢測的新知識,比如說:
代碼思路部分:祖?zhèn)鞔a不完整,其輸出是整個圖像中每個像素點的模值,之后還要加一個尋找模極大值的部分,這樣輸出的模極大值才是圖像邊緣。
代碼參數(shù)部分:濾波器的參數(shù)好像是B樣條小波,那么整個小波變換所使用的小波基函數(shù)也就是B樣條小波函數(shù)了。
有時候想重新寫一篇博客,把現(xiàn)在的見解完整的寫一遍,但是會發(fā)現(xiàn)不了解的東西還很多,小波變換比較新,雖然現(xiàn)在各行業(yè)應(yīng)用的比較廣泛,但是感覺教程不是很多,就像小波變換邊緣檢測全網(wǎng)好像就這一份代碼。
努力吧,也不知道我什么時候可以摸透小波變換邊緣檢測,沖沖沖,也歡迎大家來找我交流,答疑和外包也可以。
個人QQ:1356580910,圖像處理探索群:913931535 備注:CSDN
現(xiàn)在基于祖?zhèn)鞔a加入了兩種模極大值計算方法,一種需要手動調(diào)參,一種全自動計算。放一張現(xiàn)在的效果圖吧(好像還可以)
最后,希望趕快戰(zhàn)勝疫情,我想上學(xué)了。
總結(jié)
以上是生活随笔為你收集整理的基于小波变换的图像边缘检测(matlab祖传代码注释)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】数组索引到底怎么整?
- 下一篇: 第七节:ES6为数值做了哪些扩展?