各项异性扩散(Anisotropic diffusion)

各向异性扩散,也叫做P–M扩散,在图像处理和计算机视觉中广泛用于保持图像细节特征的同时减少噪声。

定义

有灰度图像I(x,y),其各向异性扩散方程如下

?I?t=div(c(x,y,t)?I)=?c?I+c(x,y,t)ΔI

其中Δ是Laplacian算子 ,?是梯度算子,div是散度,c(x,y,t)是扩散系数。控制着扩散速率,通常选取的图像梯度函数,这样在扩散时保护到图像边缘信息。这些由Perona和Malik在90年代初发现,他们提出两种扩散系数方程,也就是有名的P-M方程:

c(||?I||)=e?(||?I||/K)2

c(||?I||)=11+(||?I||K)2

常数项K用来控制对边缘的灵敏度,通常经验选取或者用图像噪声相关的函数来表示。

原理

令M表示一副图像的光滑程度,那么上面的扩散方程可以用梯度下降方程最小化如下能量函数E:M→R来表示

E[I]=12∫Ωg(||?I(x)||2)dx

这里g:R→R是一个实数函数,稍后看到它本质上就是扩散系数。

对两边求其梯度,得到下式子

?EI=?div(g′(||?I(x)||2)?I)

然后我们就可以使用梯度下降方程去降低图像的梯度,即平滑图像。

?I?t=??EI=div(g′(||?I(x)||)?I)

令c=g′我们就得到了各向异性扩散方程。

好了,原理就解释到这么多了。若是想了解更多,可以看文章后面给出的更多阅读部分。

代码

% ANISODIFF - Anisotropic diffusion.
%
% Usage:
%  diff = anisodiff(im, niter, kappa, lambda, option)
%
% Arguments:
%         im     - input image
%         niter  - number of iterations.
%         kappa  - conduction coefficient 20-100 ?
%         lambda - max value of .25 for stability
%         option - 1 Perona Malik diffusion equation No 1
%                  2 Perona Malik diffusion equation No 2
%
% Returns:
%         diff   - diffused image.
%
% kappa controls conduction as a function of gradient.  If kappa is low
% small intensity gradients are able to block conduction and hence diffusion
% across step edges.  A large value reduces the influence of intensity
% gradients on conduction.
%
% lambda controls speed of diffusion (you usually want it at a maximum of
% 0.25)
%
% Diffusion equation 1 favours high contrast edges over low contrast ones.
% Diffusion equation 2 favours wide regions over smaller ones.

% Reference:
% P. Perona and J. Malik.
% Scale-space and edge detection using ansotropic diffusion.
% IEEE Transactions on Pattern Analysis and Machine Intelligence,
% 12(7):629-639, July 1990.
%
% Peter Kovesi
% School of Computer Science & Software Engineering
% The University of Western Australia
% pk @ csse uwa edu au
% http://www.csse.uwa.edu.au
%
% June 2000  original version.
% March 2002 corrected diffusion eqn No 2.

function diff = anisodiff(im, niter, kappa, lambda, option)

if ndims(im)==3
  error(‘Anisodiff only operates on 2D grey-scale images‘);
end

im = double(im);
[rows,cols] = size(im);
diff = im;

for i = 1:niter
%  fprintf(‘\rIteration %d‘,i);

  % Construct diffl which is the same as diff but
  % has an extra padding of zeros around it.
  diffl = zeros(rows+2, cols+2);
  diffl(2:rows+1, 2:cols+1) = diff;

  % North, South, East and West differences
  deltaN = diffl(1:rows,2:cols+1)   - diff;
  deltaS = diffl(3:rows+2,2:cols+1) - diff;
  deltaE = diffl(2:rows+1,3:cols+2) - diff;
  deltaW = diffl(2:rows+1,1:cols)   - diff;

  % Conduction

  if option == 1
    cN = exp(-(deltaN/kappa).^2);
    cS = exp(-(deltaS/kappa).^2);
    cE = exp(-(deltaE/kappa).^2);
    cW = exp(-(deltaW/kappa).^2);
  elseif option == 2
    cN = 1./(1 + (deltaN/kappa).^2);
    cS = 1./(1 + (deltaS/kappa).^2);
    cE = 1./(1 + (deltaE/kappa).^2);
    cW = 1./(1 + (deltaW/kappa).^2);
  end

  diff = diff + lambda*(cN.*deltaN + cS.*deltaS + cE.*deltaE + cW.*deltaW);

%  Uncomment the following to see a progression of images
%  subplot(ceil(sqrt(niter)),ceil(sqrt(niter)), i)
%  imagesc(diff), colormap(gray), axis image

end
%fprintf(‘\n‘);

用途

感知边缘的滤波器在计算摄影学领域用途广泛,主要用于以下几个方面,仅举几例。

- 细节增强

- HDR色调映射

- 风格化

- 铅笔画

- 联合滤波

- 灰度图像彩色话等

效果

测试代码

 I = imread(‘lena.jpg‘);
 out = anisodiff(I,20,20,0.15,1);
 imshow(out/255);

参考阅读

WiKi百科英文

在图像处理中,散度 div 具体的作用是什么?

Scale-Space and Edge Detection Using Anisotropic Diffusion

转载请保留以下信息

作者 日期 联系方式
风吹夏天 2015年6月6日 [email protected]

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 05:43:24

各项异性扩散(Anisotropic diffusion)的相关文章

各项异性滤波简介Anisotropic Filtering(AF)

本文主要整理简绍来自互联网的各项异性滤波的知识. 原文链接:http://www.linuxgraphics.cn/graphics/using_anisotropic_texture_filtering_in_opengl.html 基本的纹理过滤 纹理是数据的简单矩阵排列--例如,颜色数据.亮度数据或者颜色和alpha(透明度)数据.纹理数组中的每一个独立的数值通常称为一个纹理单元.纹理映射是一种将纹理图像应用于物体表面的技术(就是把图像贴到构成物体表面的多边形上去),就像该图像是一种贴画纸

各向异性扩散滤波器(anisotropic diffusion filter)

各向异性扩散,也叫做P–M扩散,在图像处理和计算机视觉中广泛用于保持图像细节特征的同时减少噪声. 定义 有灰度图像I(x,y),其各向异性扩散方程如下 ?I?t=div(c(x,y,t)?I)=?c?I+c(x,y,t)ΔI 其中Δ是Laplacian算子 ,?是梯度算子,div是散度,c(x,y,t)是扩散系数.控制着扩散速率,通常选取的图像梯度函数,这样在扩散时保护到图像边缘信息.这些由Perona和Malik在90年代初发现,他们提出两种扩散系数方程,也就是有名的P-M方程: c(||?I

各项异性滤波简单介绍Anisotropic Filtering(AF)

本文主要整理简绍来自互联网的各项异性滤波的知识. 原文链接:http://www.linuxgraphics.cn/graphics/using_anisotropic_texture_filtering_in_opengl.html 主要的纹理过滤 纹理是数据的简单矩阵排列--比如.颜色数据.亮度数据或者颜色和alpha(透明度)数据.纹理数组中的每个独立的数值通常称为一个纹理单元. 纹理映射是一种将纹理图像应用于物体表面的技术(就是把图像贴到构成物体表面的多边形上去),就像该图像是一种贴画纸

扩散(diffusion)和弥散(dispersion)有什么区别

作者:谢易正链接:https://www.zhihu.com/question/23914350/answer/177359196来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 通常在微观层面,物质的传递可以由三种机制构成: 扩散(Diffusion)+移流(advection)+弥散(dispersion).dispersion(弥散)是在有advection(移流)存在的情况下发生的,是由于流体流动时溶质的流动速度不均匀而引起的一种对扩散现象(diffusio

癌症和反衰老未来产业研究----老年认知

癌症和反衰老未来产业研究----老年认知 作者:刘安奇 文章来源:水木峰.等(百度知道) 大脑结构 摘 要: 了解年老过程中大脑在细胞水平上发生的变化对于揭示老年人认知功能下降的原因具有重要的意义. 2.白质是神经系统的三个重要组成元素之一.过去由于缺乏有效的研究工具,神经科学领域中的研究主要集中在灰质和神经元的研究上,而对于白质的研究则相对较少. 有一套书叫<基础神经科学系列> 分为五部分: 1.细胞和分子神经科学 2.神经系统发育 3.感觉和运动系统 4.调节系统 5.行为和认知神经科学

OpenGL蓝宝书第五章5.4Tunnuel 纹理映射和过滤:较好的可读性代码

主要处理了纹理贴图和顶点映射的关系.根据法线先确认环绕方向.然后根据绘制的primitive_type完成纹理顶点直接的映射. 哪里来,哪里回:根据法线来确认逆时针方向.strip的画法要熟悉,从其实的两个顶点开始已折线的形式前进 GL_TRIANGLES_STRIP是常用的绘制方式,在循环代码中使用四个顶点+循环控制量能完成大量的几何图形绘制.这里我犯了个错误,没意识到折线的的前进方向问题,导致纹理映射出现了偏差,一度去怀疑modelViewMatrix的配置是否正确.但是我发现原书中的代码没

第4章 传感器相关的技术

传感器相应技术 4.1 传感器 4.1.1感知能力与传感器的发展 人的感知能力 眼.耳.鼻.舌.皮肤是人类感知外部物理世界的重要感官.我们用手接触物体来知道物体时热是凉:用手提起一个物体来判断出他大概有多重:用眼睛可以快速的从教室的很多学生中找出班长:用舌头可以尝出实物的酸甜苦辣:用鼻子可以闻出各种气味.人类史通过视觉.味觉.听觉.嗅觉.触觉五大感官来感知周围的环境,这是人类认识世界的基本途径.人类具有非常智慧的感知能力.我们可以综合视觉.味觉.听觉.嗅觉.触觉等多种手段感知的信息,来判断我们周

Unity_二维纹理 Texture 2D_4_总结细节

Supported Formats 支持的格式 Unity支持下面的文件格式:PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT.应注意,Unity可以导入多层PSD和TIFF文件,在导入时,层将自动被塌陷,因此你不必浪费时间,直接使用源文件类型.这点很重要,允许只有一个纹理拷贝,使用从Photoshop,三维建模程序导入到Unity. Texture Sizes 纹理大小 这些尺寸如下:2, 4, 8, 16, 32, 64, 128, 256, 512

23333

<崩坏3>上架以来,我们看到了卡通渲染技术在游戏领域的高品质画面表现力,米哈游对这种技术恰到好处的运用也让<崩坏3>受到了广大玩家的喜爱,以及业内诸多从业人士的认可. 事实上,米哈游在制作这款游戏的过程中,也经历了反复的尝试和探索.同时,为了让卡通渲染技术有更好的表现力,他们也利用了Unity 5引擎,探索了次世代卡通渲染技术用法. 2016年11月,米哈游在B站投稿了"琪亚娜·极乐净土"的视频,短时间内成为B站最热门的视频之一,目前已经积累了近230w次的播放