各向异性扩散滤波_原理与算法
生活随笔
收集整理的這篇文章主要介紹了
各向异性扩散滤波_原理与算法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.原理簡(jiǎn)述
各向異性擴(kuò)散濾波主要是用來平滑圖像的,克服了高斯模糊的缺陷,各向異性擴(kuò)散在平滑圖像時(shí)是保留圖像邊緣的,和雙邊濾波很像。 通常我們有將圖像看作矩陣的,看作圖的,看作隨機(jī)過程的,記得過去還有看作力場(chǎng)的。這次新鮮,將圖像看作熱量場(chǎng)了。每個(gè)像素看作熱流,根據(jù)當(dāng)前像素和周圍像素的關(guān)系,來確定是否要向周圍擴(kuò)散。比如某個(gè)鄰域像素和當(dāng)前像素差別較大,則代表這個(gè)鄰域像素很可能是個(gè)邊界,那么當(dāng)前像素就不向這個(gè)方向擴(kuò)散了,這個(gè)邊界也就得到保留了。 具體的推導(dǎo)公式都是熱學(xué)上的,自己也不太熟悉,感興趣的可以去看原論文,引用量超7000吶。我這里只介紹一下最終結(jié)論用到的公式。主要迭代方程如下:
I就是圖像了,因?yàn)槭莻€(gè)迭代公式,所以有迭代次數(shù)t。
四個(gè)散度公式是在四個(gè)方向上對(duì)當(dāng)前像素求偏導(dǎo),news就是東南西北嘛,公式如下:
而cN/cS/cE/cW則代表四個(gè)方向上的導(dǎo)熱系數(shù),邊界的導(dǎo)熱系數(shù)都是小的。公式如下:
最后整個(gè)公式需要先前設(shè)置的參數(shù)主要有三個(gè),迭代次數(shù)t,根據(jù)情況設(shè)置;導(dǎo)熱系數(shù)相關(guān)的k,取值越大越平滑,越不易保留邊緣;lambda同樣也是取值越大越平滑。
2.MATLAB仿真代碼
clear all; close all; clc;k=15; %導(dǎo)熱系數(shù),控制平滑 lambda=0.15; %控制平滑 N=20; %迭代次數(shù) img=double(imread('lena.jpg')); imshow(img,[]); [m n]=size(img);imgn=zeros(m,n); for i=1:Nfor p=2:m-1for q=2:n-1%當(dāng)前像素的散度,對(duì)四個(gè)方向分別求偏導(dǎo),局部不同方向上的變化量,%如果變化較多,就證明是邊界,想方法保留邊界NI=img(p-1,q)-img(p,q);SI=img(p+1,q)-img(p,q);EI=img(p,q-1)-img(p,q);WI=img(p,q+1)-img(p,q);%四個(gè)方向上的導(dǎo)熱系數(shù),該方向變化越大,求得的值越小,從而達(dá)到保留邊界的目的cN=exp(-NI^2/(k*k));cS=exp(-SI^2/(k*k));cE=exp(-EI^2/(k*k));cW=exp(-WI^2/(k*k));imgn(p,q)=img(p,q)+lambda*(cN*NI+cS*SI+cE*EI+cW*WI); %擴(kuò)散后的新值 endendimg=imgn; %整個(gè)圖像擴(kuò)散完畢,用已擴(kuò)散圖像的重新擴(kuò)散。 endfigure; imshow(imgn,[]);
3.運(yùn)行結(jié)果及分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(處理圖像) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(原圖)各向異性濾波方法確實(shí)在保持邊緣和圖像平滑方面進(jìn)行了很好的嘗試,其結(jié)果和雙邊濾波有很大的相似性。
總結(jié)
以上是生活随笔為你收集整理的各向异性扩散滤波_原理与算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 细谈Web框架设计与实现
- 下一篇: 什么C++程序员,什么Java程序员