电脑用虚拟机做网站,秦皇岛酒店网站设计,静态网站建设,网上购物网站制作#x1f4a5;#x1f4a5;#x1f49e;#x1f49e;欢迎来到本博客❤️❤️#x1f4a5;#x1f4a5; #x1f3c6;博主优势#xff1a;#x1f31e;#x1f31e;#x1f31e;博客内容尽量做到思维缜密#xff0c;逻辑清晰#xff0c;为了方便读者。 ⛳️座右铭欢迎来到本博客❤️❤️ 博主优势博客内容尽量做到思维缜密逻辑清晰为了方便读者。 ⛳️座右铭行百里者半于九十。 本文目录如下 目录 1 概述 2 运行结果 2.1 non_aniso 2.2 inhomo_iso 2.3 heat_imp 2.4 heat_explicit 3 参考文献 4 Matlab代码实现 1 概述
【图像去噪的扩散滤波】图像线性扩散滤波、边缘增强线性和非线性各向异性滤波
各种基于扩散的图像滤波方法 1.使用热方程的线性扩散滤波 - 使用隐式和显式欧拉方法求解。 2. 边缘增强线性各向异性扩散滤波。 3. 边缘增强非线性各向异性扩散滤波。
在图像处理领域去除图像中的噪点和提升细节是非常重要的任务。为此发展了各种基于扩散的图像滤波方法旨在改善图像质量和增强图像特征。以下是其中几种常见的滤波方法
1. 线性扩散滤波使用热方程模型来进行线性扩散滤波。这种方法可以使用隐式和显式欧拉方法来求解以改善图像的平滑度和减少噪声。线性扩散滤波能够通过自适应地调整邻域像素的亮度值实现图像的去噪和平滑。
2. 边缘增强线性各向异性扩散滤波这种方法结合了线性扩散滤波和各向异性过滤的思想在保持图像平滑的同时突出了图像中的边缘特征。通过对邻域像素的梯度进行加权处理边缘增强线性各向异性扩散滤波能够有效地提升图像的边缘细节使图像更加清晰和锐利。
3. 边缘增强非线性各向异性扩散滤波与线性滤波相比非线性滤波方法在处理图像时更加灵活和精确。边缘增强非线性各向异性扩散滤波通过考虑像素之间的非线性关系使得处理后的图像在细节和边缘保留方面更具优势。这种方法能够在去除噪点的同时保持图像的细节和纹理信息。
这些基于扩散的图像滤波方法为图像去噪和增强提供了强大的工具。根据不同的应用需求和图像特征选择合适的滤波方法能够显著改善图像质量并提高图像的可视化效果。无论是在科学研究、医学影像还是图形设计领域这些滤波方法都发挥着重要作用为用户带来更好的图像处理体验。
2 运行结果
2.1 non_aniso 2.2 inhomo_iso 2.3 heat_imp 2.4 heat_explicit 部分代码
% set up finite difference parameters
alpha .5;
k 1;
h 1;lambda (alpha^2)*(k/(h^2));[m n] size(w);
%stick image into a vector
w_vec reshape(w,n*n,1);
w_old w;
w_new w;%smooth the image
im_smth filter_function(w,1);
im_smth im_smth;
% required for g() calculation
[dx_im_smth dy_im_smth] gradient(im_smth);
gr_im_smth dx_im_smth.^2 dy_im_smth.^2;[mmm nnn] size(gr_im_smth);
% g() calculation
for i1:mmmfor j1:nnng(i,j) 1/(1(gr_im_smth(i,j)/32));end
end
%g g;
jj1;[im_sx im_sy] gradient(im_smth);
% diffusion tensor D is preconputed here
D zeros(n*n,2,2);
for i1:n*nrow ceil(i/n);col i - (row-1) * n;% if((col 1) (col n) (row 1) (row n))% choose eigenvector parallel and perpendicular to gradienteigen_vec [im_sx(row,col) im_sy(row,col); im_sy(row,col) -im_sx(row,col) ];%choose eigenvalueseigen_vec(:,1) eigen_vec(:,1) ./ norm(eigen_vec(:,1));eigen_vec(:,2) eigen_vec(:,2) ./ norm(eigen_vec(:,2));eigen_val [g(row,col) 0;0 1];% form diffusion tensorD(i,:,:) eigen_vec * eigen_val * (eigen_vec); % end
endfigure;
for k1:400 % for each iterationfor i1:n*n % solve using Jacobi iterations schemerow ceil(i/n); %compute what row this pixel belongs to in original imagecol i - (row-1) * n; % compute cols similarly%different if conditions handles pixels at different location in%the image as depending on their location they may or may not have%all their neighbor pixels which will be required for finite%differencesif((col 1) (col n) (row 1) (row n))s -lambda * ((D(i,1,1) * w_old(i-1)) ((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ...(D(i,2,2) * w_old(i-n)) ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in))) ((D(i,1,2) D(i,2,1)) * w_old(in1)));w_new(i) (-s w_old(i))/(1 lambda * (2 * D(i,1,1) 2 * D(i,2,2) - D(i,1,2) - D(i,2,1)));elseif((row 1) (col 1) (col n))s -lambda * ((D(i,1,1) * w_old(i-1)) ((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ...((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in))) ((D(i,1,2) D(i,2,1)) * w_old(in1)));%s -(lambda) * (w_old(i1) w_old(i-1) w_old(in));w_new(i) (-s w_old(i))/(14*lambda);elseif((row n) (col 1) (col n))s -lambda * ((D(i,1,1) * w_old(i-1)) ((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ...(D(i,2,2) * w_old(i-n)));%s -(lambda) * (w_old(i1) w_old(i-1) w_old(i-n));w_new(i) (-s w_old(i))/(14*lambda);elseif((col 1) (row 1) (row n))s -lambda * (((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ...(D(i,2,2) * w_old(i-n)) ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in))) ((D(i,1,2) D(i,2,1)) * w_old(in1)));%s -(lambda) * (w_old(i1) w_old(in) w_old(i-n));w_new(i) (-s w_old(i))/(14*lambda);elseif((col n) (row 1) (row n))s -lambda * ((D(i,1,1) * w_old(i-1)) ...(D(i,2,2) * w_old(i-n)) ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in)))); %s -(lambda) * (w_old(i-1) w_old(in) w_old(i-n));w_new(i) (-s w_old(i))/(14*lambda);elseif((col1) (row1))
% set up finite difference parameters alpha .5; k 1; h 1;
lambda (alpha^2)*(k/(h^2));
[m n] size(w); %stick image into a vector w_vec reshape(w,n*n,1); w_old w; w_new w;
%smooth the image im_smth filter_function(w,1); im_smth im_smth; % required for g() calculation [dx_im_smth dy_im_smth] gradient(im_smth); gr_im_smth dx_im_smth.^2 dy_im_smth.^2;
[mmm nnn] size(gr_im_smth); % g() calculation for i1:mmm for j1:nnn g(i,j) 1/(1(gr_im_smth(i,j)/32)); end end %g g; jj1;
[im_sx im_sy] gradient(im_smth); % diffusion tensor D is preconputed here D zeros(n*n,2,2); for i1:n*n row ceil(i/n); col i - (row-1) * n; % if((col 1) (col n) (row 1) (row n)) % choose eigenvector parallel and perpendicular to gradient eigen_vec [im_sx(row,col) im_sy(row,col); im_sy(row,col) -im_sx(row,col) ]; %choose eigenvalues eigen_vec(:,1) eigen_vec(:,1) ./ norm(eigen_vec(:,1)); eigen_vec(:,2) eigen_vec(:,2) ./ norm(eigen_vec(:,2)); eigen_val [g(row,col) 0;0 1]; % form diffusion tensor D(i,:,:) eigen_vec * eigen_val * (eigen_vec); % end end
figure; for k1:400 % for each iteration for i1:n*n % solve using Jacobi iterations scheme row ceil(i/n); %compute what row this pixel belongs to in original image col i - (row-1) * n; % compute cols similarly %different if conditions handles pixels at different location in %the image as depending on their location they may or may not have %all their neighbor pixels which will be required for finite %differences if((col 1) (col n) (row 1) (row n)) s -lambda * ((D(i,1,1) * w_old(i-1)) ((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ... (D(i,2,2) * w_old(i-n)) ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in))) ((D(i,1,2) D(i,2,1)) * w_old(in1))); w_new(i) (-s w_old(i))/(1 lambda * (2 * D(i,1,1) 2 * D(i,2,2) - D(i,1,2) - D(i,2,1))); elseif((row 1) (col 1) (col n)) s -lambda * ((D(i,1,1) * w_old(i-1)) ((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ... ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in))) ((D(i,1,2) D(i,2,1)) * w_old(in1))); %s -(lambda) * (w_old(i1) w_old(i-1) w_old(in)); w_new(i) (-s w_old(i))/(14*lambda); elseif((row n) (col 1) (col n)) s -lambda * ((D(i,1,1) * w_old(i-1)) ((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ... (D(i,2,2) * w_old(i-n))); %s -(lambda) * (w_old(i1) w_old(i-1) w_old(i-n)); w_new(i) (-s w_old(i))/(14*lambda); elseif((col 1) (row 1) (row n)) s -lambda * (((D(i,1,1) - D(i,1,2) - D(i,2,1)) * (w_old(i1))) ... (D(i,2,2) * w_old(i-n)) ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in))) ((D(i,1,2) D(i,2,1)) * w_old(in1))); %s -(lambda) * (w_old(i1) w_old(in) w_old(i-n)); w_new(i) (-s w_old(i))/(14*lambda); elseif((col n) (row 1) (row n)) s -lambda * ((D(i,1,1) * w_old(i-1)) ... (D(i,2,2) * w_old(i-n)) ((D(i,2,2) - D(i,1,2) - D(i,2,1)) * (w_old(in)))); %s -(lambda) * (w_old(i-1) w_old(in) w_old(i-n)); w_new(i) (-s w_old(i))/(14*lambda); elseif((col1) (row1)) 3 参考文献 文章中一些内容引自网络会注明出处或引用为参考文献难免有未尽之处如有不妥请随时联系删除。 [1]张建伟,王译禾,陈允杰.基于非线性扩散滤波结构信息的图像去噪方法[J].计算机工程与设计, 2016, 37(11):8.DOI:10.16208/j.issn1000-7024.2016.11.021.
[2]文武,苗放.复数域非线性扩散滤波在图像处理中的应用[J].微电子学与计算机, 2012.DOI:CNKI:SUN:WXYJ.0.2012-06-015.
[3]傅艳莉,李超,陈浩,等.各向异性扩散滤波远探测声波测井图像降噪方法[J].应用声学, 2022, 41(4):10.
[4]许韬.非线性扩散图像混合滤波去噪方法研究[J].计算机仿真, 2020, 037(012):460-464.
[5]李志伟,冯象初.维纳滤波和非线性扩散相结合的图像去噪[J].电子科技, 2007(9):4.DOI:10.3969/j.issn.1007-7820.2007.09.016.
4 Matlab代码实现