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