日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现option上下移动_Perona-Malik方程(各向同性非线性扩散实现图像滤波)

發布時間:2024/1/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现option上下移动_Perona-Malik方程(各向同性非线性扩散实现图像滤波) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Perona-Malik方程

之前所使用的線性擴散圖像濾波會對整幅圖像“一視同仁”,不管是邊緣紋理還是其他結構都會等同于噪聲一起濾除。這會使圖像過于平滑而且丟失很多高頻信息。如果我們使用非線性擴散的方法,即:傳導系數會隨著圖像的局部特征改變而改變,例如在圖像平滑區域傳導系數自適應增大可以更好的濾除噪聲,在圖像的邊緣紋理區域系數自適應減小可以更好的保存圖像邊緣。

首先,PM擴散方程為:它的來源是將梯度的模值信息融合到傳輸系數中,并帶入公式(5)可得:

其中

為梯度的模值: , 為邊緣函數,或者邊緣停止函數。常用的邊緣函數比如:

這里K是選定的常數,作用是控制g的下降速率。下圖為p=1的條件下K=10, 20的下降曲線。

由于在圖像的邊緣中梯度的模值

取得極大值,而優化公式整體是求極小值的,為了避免在優化公式中引入負號,因此要引入一個單調遞減而且是非負的邊緣函數 ,它可以保證在 取得極大值時, 取得局部極小值。它最早在圖像分割和邊緣檢測問題中被提出,由于該函數的性質是可以將方程的解向著梯度變大的方向移動,最終停止在圖像的邊緣上,因此也被稱為邊緣停止函數。

2. P-M方程行為分析

首先將P-M方程簡化為一維的情況分析:

其中

的下角標表示對某個變量求導。 稱之為影響函數。將(11)式中的g(-)函數帶入可得:

下面是

的函數曲線圖:

  • 當p=1時, 從最大值1單調遞減到0,而且始終保持正值,因此這種情況下的(12)式總保持正向擴散。
  • 當p=2時, 這個不等式說明在梯度較小的圖像平滑區域,即: 時,導數大于0為正向擴散。在梯度較大的邊緣紋理區域,導數小于0為反向擴散。反向擴散的含義是:雜質將從濃度低的地方流向濃度高的地方,這意味著圖像邊緣的銳化。
  • 在后面二維P-M方程的分析中,可以得出結論:當選用合適的邊緣函數g時,P-M方程可以自適應的實現圖像去噪和邊緣增強的效果。

    3. P-M方程的病態性質

    數學研究表示(1)式給出的初值的P-M方程極有可能是病態的。如果定義下面這個能量泛函:

    其中

    是一個非負函數而且在0處取得的值為0。那么依據變分原理,最小化該能量泛函對應的梯度下降流為:

    如果將

    改寫為: ,那么(5)式就和(1)式完全一致。也就是說P-M方程可以看做是(4)式能量泛函的梯度下降流。其邊緣函數g由(4)式中的 函數決定。再與式(3)做比較可得函數的 的導數就是前面所定義的 :

    4. P-M方程的正則化

    一般來說,病態問題都是一個方程對應著多個解,因此需要用正則化的方法使它變成一個適定問題(well-posed)。有研究者提出一種新的改進方案為:

    其中

    表示方差為 的Gaussian函數,(7)式稱之為正則化的P-M方程,或者叫CLMC模型。

    5.P-M方程求解代碼

    搬運自:數字圖像處理,基于PM和Catte模型各向異性擴散的C++實現_EbowTang的練習場-CSDN博客?blog.csdn.net公式分析參考:各向異性擴散PM模型原理與C++實現_cyh706510441的專欄-CSDN博客?blog.csdn.netfunction diff_im = anisodiff2D(im, num_iter, delta_t, kappa, option) %ANISODIFF2D 經典PM模型的各向異性擴散 % DIFF_IM = ANISODIFF2D(IM, NUM_ITER, DELTA_T, KAPPA, OPTION) % 該函數執行灰度圖像上的各向異性擴散(經典PM模型),被認為是一個二維的網絡結構的8個相鄰節點的擴散傳導。 % % 參數描述: % IM - 灰度圖 (MxN). % NUM_ITER - 迭代次數 % DELTA_T - 積分常數 (0 <= delta_t <= 1/7).通常情況下,由于數值穩定性,此參數設置為它的最大值。 % KAPPA - 控制傳導的梯度模閾值。控制平滑。 % OPTION - 傳導系數函數選擇(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 - 具有最大尺度空間參數的(擴散)圖像。 % % 使用例子: % ------------- % 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,[]);% 轉換輸入圖像類型為double. im = double(im);% PDE(偏微分方程)的初始條件。 diff_im = im;% 中心像素距離。 dx = 1; dy = 1; dd = sqrt(2);% 二維卷積掩模-8個方向上的梯度差分。 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];% 各向異性擴散 for t = 1:num_iter% 8個方向梯度差分. [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'); % 擴散函數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

    總結

    以上是生活随笔為你收集整理的实现option上下移动_Perona-Malik方程(各向同性非线性扩散实现图像滤波)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。