实现option上下移动_Perona-Malik方程(各向同性非线性扩散实现图像滤波)
1. Perona-Malik方程
之前所使用的線性擴(kuò)散圖像濾波會(huì)對(duì)整幅圖像“一視同仁”,不管是邊緣紋理還是其他結(jié)構(gòu)都會(huì)等同于噪聲一起濾除。這會(huì)使圖像過(guò)于平滑而且丟失很多高頻信息。如果我們使用非線性擴(kuò)散的方法,即:傳導(dǎo)系數(shù)會(huì)隨著圖像的局部特征改變而改變,例如在圖像平滑區(qū)域傳導(dǎo)系數(shù)自適應(yīng)增大可以更好的濾除噪聲,在圖像的邊緣紋理區(qū)域系數(shù)自適應(yīng)減小可以更好的保存圖像邊緣。
首先,PM擴(kuò)散方程為:它的來(lái)源是將梯度的模值信息融合到傳輸系數(shù)中,并帶入公式(5)可得:
其中
為梯度的模值: , 為邊緣函數(shù),或者邊緣停止函數(shù)。常用的邊緣函數(shù)比如:這里K是選定的常數(shù),作用是控制g的下降速率。下圖為p=1的條件下K=10, 20的下降曲線。
由于在圖像的邊緣中梯度的模值
取得極大值,而優(yōu)化公式整體是求極小值的,為了避免在優(yōu)化公式中引入負(fù)號(hào),因此要引入一個(gè)單調(diào)遞減而且是非負(fù)的邊緣函數(shù) ,它可以保證在 取得極大值時(shí), 取得局部極小值。它最早在圖像分割和邊緣檢測(cè)問(wèn)題中被提出,由于該函數(shù)的性質(zhì)是可以將方程的解向著梯度變大的方向移動(dòng),最終停止在圖像的邊緣上,因此也被稱為邊緣停止函數(shù)。2. P-M方程行為分析
首先將P-M方程簡(jiǎn)化為一維的情況分析:
其中
的下角標(biāo)表示對(duì)某個(gè)變量求導(dǎo)。 稱之為影響函數(shù)。將(11)式中的g(-)函數(shù)帶入可得:下面是
的函數(shù)曲線圖:在后面二維P-M方程的分析中,可以得出結(jié)論:當(dāng)選用合適的邊緣函數(shù)g時(shí),P-M方程可以自適應(yīng)的實(shí)現(xiàn)圖像去噪和邊緣增強(qiáng)的效果。
3. P-M方程的病態(tài)性質(zhì)
數(shù)學(xué)研究表示(1)式給出的初值的P-M方程極有可能是病態(tài)的。如果定義下面這個(gè)能量泛函:
其中
是一個(gè)非負(fù)函數(shù)而且在0處取得的值為0。那么依據(jù)變分原理,最小化該能量泛函對(duì)應(yīng)的梯度下降流為:如果將
改寫(xiě)為: ,那么(5)式就和(1)式完全一致。也就是說(shuō)P-M方程可以看做是(4)式能量泛函的梯度下降流。其邊緣函數(shù)g由(4)式中的 函數(shù)決定。再與式(3)做比較可得函數(shù)的 的導(dǎo)數(shù)就是前面所定義的 :4. P-M方程的正則化
一般來(lái)說(shuō),病態(tài)問(wèn)題都是一個(gè)方程對(duì)應(yīng)著多個(gè)解,因此需要用正則化的方法使它變成一個(gè)適定問(wèn)題(well-posed)。有研究者提出一種新的改進(jìn)方案為:
其中
表示方差為 的Gaussian函數(shù),(7)式稱之為正則化的P-M方程,或者叫CLMC模型。5.P-M方程求解代碼
搬運(yùn)自:數(shù)字圖像處理,基于PM和Catte模型各向異性擴(kuò)散的C++實(shí)現(xiàn)_EbowTang的練習(xí)場(chǎng)-CSDN博客?blog.csdn.net公式分析參考:各向異性擴(kuò)散PM模型原理與C++實(shí)現(xiàn)_cyh706510441的專欄-CSDN博客?blog.csdn.netfunction diff_im = anisodiff2D(im, num_iter, delta_t, kappa, option) %ANISODIFF2D 經(jīng)典PM模型的各向異性擴(kuò)散 % DIFF_IM = ANISODIFF2D(IM, NUM_ITER, DELTA_T, KAPPA, OPTION) % 該函數(shù)執(zhí)行灰度圖像上的各向異性擴(kuò)散(經(jīng)典PM模型),被認(rèn)為是一個(gè)二維的網(wǎng)絡(luò)結(jié)構(gòu)的8個(gè)相鄰節(jié)點(diǎn)的擴(kuò)散傳導(dǎo)。 % % 參數(shù)描述: % IM - 灰度圖 (MxN). % NUM_ITER - 迭代次數(shù) % DELTA_T - 積分常數(shù) (0 <= delta_t <= 1/7).通常情況下,由于數(shù)值穩(wěn)定性,此參數(shù)設(shè)置為它的最大值。 % KAPPA - 控制傳導(dǎo)的梯度模閾值。控制平滑。 % OPTION - 傳導(dǎo)系數(shù)函數(shù)選擇(Perona & Malik提出): % 1 - c(x,y,t) = exp(-(nablaI/kappa).^2), % privileges high-contrast edges over low-contrast ones. % 2 - c(x,y,t) = 1./(1 + (nablaI/kappa).^2), % privileges wide regions over smaller ones. % % 輸出描述: % DIFF_IM - 具有最大尺度空間參數(shù)的(擴(kuò)散)圖像。 % % 使用例子: % ------------- % s = phantom(512) + randn(512); % num_iter = 15; % delta_t = 1/7;%越大越平滑 % kappa = 30;%越大越平滑 % option = 2; % ad = anisodiff2D(s,num_iter,delta_t,kappa,option); % figure, subplot 121, imshow(s,[]), subplot 122, imshow(ad,[]);% 轉(zhuǎn)換輸入圖像類型為double. im = double(im);% PDE(偏微分方程)的初始條件。 diff_im = im;% 中心像素距離。 dx = 1; dy = 1; dd = sqrt(2);% 二維卷積掩模-8個(gè)方向上的梯度差分。 hN = [0 1 0; 0 -1 0; 0 0 0]; hS = [0 0 0; 0 -1 0; 0 1 0]; hE = [0 0 0; 0 -1 1; 0 0 0]; hW = [0 0 0; 1 -1 0; 0 0 0]; hNE = [0 0 1; 0 -1 0; 0 0 0]; hSE = [0 0 0; 0 -1 0; 0 0 1]; hSW = [0 0 0; 0 -1 0; 1 0 0]; hNW = [1 0 0; 0 -1 0; 0 0 0];% 各向異性擴(kuò)散 for t = 1:num_iter% 8個(gè)方向梯度差分. [imfilter(.,.,'conv') 也可以使用 conv2(.,.,'same')]nablaN = imfilter(diff_im,hN,'conv');nablaS = imfilter(diff_im,hS,'conv'); nablaW = imfilter(diff_im,hW,'conv');nablaE = imfilter(diff_im,hE,'conv'); nablaNE = imfilter(diff_im,hNE,'conv');nablaSE = imfilter(diff_im,hSE,'conv'); nablaSW = imfilter(diff_im,hSW,'conv');nablaNW = imfilter(diff_im,hNW,'conv'); % 擴(kuò)散函數(shù)if option == 1cN = exp(-(nablaN/kappa).^2);cS = exp(-(nablaS/kappa).^2);cW = exp(-(nablaW/kappa).^2);cE = exp(-(nablaE/kappa).^2);cNE = exp(-(nablaNE/kappa).^2);cSE = exp(-(nablaSE/kappa).^2);cSW = exp(-(nablaSW/kappa).^2);cNW = exp(-(nablaNW/kappa).^2);elseif option == 2cN = 1./(1 + (nablaN/kappa).^2);cS = 1./(1 + (nablaS/kappa).^2);cW = 1./(1 + (nablaW/kappa).^2);cE = 1./(1 + (nablaE/kappa).^2);cNE = 1./(1 + (nablaNE/kappa).^2);cSE = 1./(1 + (nablaSE/kappa).^2);cSW = 1./(1 + (nablaSW/kappa).^2);cNW = 1./(1 + (nablaNW/kappa).^2);end% 離散偏微分方程的解決方案diff_im = diff_im + ...delta_t*(...(1/(dy^2))*cN.*nablaN + (1/(dy^2))*cS.*nablaS + ...(1/(dx^2))*cW.*nablaW + (1/(dx^2))*cE.*nablaE + ...(1/(dd^2))*cNE.*nablaNE + (1/(dd^2))*cSE.*nablaSE + ...(1/(dd^2))*cSW.*nablaSW + (1/(dd^2))*cNW.*nablaNW );% 迭代的警告fprintf('rIteration %dn',t); end總結(jié)
以上是生活随笔為你收集整理的实现option上下移动_Perona-Malik方程(各向同性非线性扩散实现图像滤波)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 插入模板_现场组装楼梯踏步模板施工支设细
- 下一篇: bootstrap的td可以增加titl