Scale-Space and Edge Detection Using Anisotropic Diffusion

文章目录

  • Scale-Space and Edge Detection Using Anisotropic Diffusion
    • Physical background of diffusion processes
    • Linear diffusion filtering
    • Nonlinear Diffusion Filtering

Physical background of diffusion processes

当物质浓度、热量等物理量uuu存在较大差异时,倾向于通过扩散过程来达到平衡,即Fick’s law
j=−D.∇u(1)j=-D.\nabla u\tag{1} j=−D.∇u(1)
其中jjj为扩散通量(Diffusion Flux),表示单位时间内通过垂直于扩散方向的单位截面积的扩散物理流量,与该界面处的扩散物理量的梯度成正比,梯度越大,扩散通量越大,如果是单方向扩散过程DDD表示扩散方向(Diffusion Factor),为正,如果是多方向扩散过程DDD表示扩散张量(Diffusion Tensor),为正定对称阵,−-−号表示扩散方向为梯度的反方向。
参见顾樵.《数学物理方法》中对散度的定义即是单位面积的通量,因此可以将上式表示为:
∂tu=−divj=div(D.∇u)=Δu(2)\partial _{t}u=-div j=div(D.\nabla u)=\Delta u\tag{2} ∂t​u=−divj=div(D.∇u)=Δu(2)
其中$\nabla 为梯度算法,为梯度算法,为梯度算法,\Delta为拉普拉斯算子,为拉普拉斯算子,为拉普拉斯算子,div为散度算子,为散度算子,为散度算子,t表示时间,当表示时间,当表示时间,当u表示热量时,即为热方程,当表示热量时,即为热方程,当表示热量时,即为热方程,当u表示图像灰度值时,如果扩散张量表示图像灰度值时,如果扩散张量表示图像灰度值时,如果扩散张量D保持全图一致,则称此时的图像滤波器为线性滤波器,如果扩散张量保持全图一致,则称此时的图像滤波器为线性滤波器,如果扩散张量保持全图一致,则称此时的图像滤波器为线性滤波器,如果扩散张量D$随图像某维度信息的变化而变化的话,则称此时的图像滤波器为非线性滤波器。

注:拉普拉斯算子即是梯度的散度

Linear diffusion filtering

偏微分方程在图像滤波过程中最简单、研究最为深入的就是线性扩散滤波,最值得关注的一点是线性扩散滤波与高斯卷积之间的联系。首先一个基本的结论是线性扩散滤波,也即是线性各向同性扩散,等价于高斯卷积。
定义f∈R2f\in R^2f∈R2为灰度图像,绝对可积,最常用来对fff进行平滑的方式即是用高斯滤波核Kσ(x,y)K_{\sigma}(x,y)Kσ​(x,y)与图像fff进行卷积:
(Kσ∗f)(x):=∫R2Kσ(x−y)f(y)dyKσ(x):=12πσ2⋅exp⁡(−∣x∣22σ2)(3)\begin{aligned} \left(K_{\sigma} * f\right)(x)&:=\int_{\mathbb{R}^{2}} K_{\sigma}(x-y) f(y) d y\\ K_{\sigma}(x)&:=\frac{1}{2 \pi \sigma^{2}} \cdot \exp \left(-\frac{|x|^{2}}{2 \sigma^{2}}\right) \end{aligned}\tag{3} (Kσ​∗f)(x)Kσ​(x)​:=∫R2​Kσ​(x−y)f(y)dy:=2πσ21​⋅exp(−2σ2∣x∣2​)​(3)
由于fff是绝对可积的,那么我们转到频域中来观测上面的高斯卷积到底对图像带来了什么样的影响:
(Ff)(ω):=∫R2f(x)exp⁡(−i⟨ω,x⟩)dx(4)(\mathcal{F} f)(\omega):=\int_{\mathbb{R}^{2}} f(x) \exp (-i\langle\omega, x\rangle) d x\tag{4} (Ff)(ω):=∫R2​f(x)exp(−i⟨ω,x⟩)dx(4)
由卷积定理:
(F(Kσ∗f))(ω)=(FKσ)(ω)⋅(Ff)(ω)(FKσ)(ω)=exp⁡(−∣ω∣22/σ2)(5)\begin{aligned} &\left(\mathcal{F}\left(K_{\sigma} * f\right)\right)(\omega)=\left(\mathcal{F} K_{\sigma}\right)(\omega) \cdot(\mathcal{F} f)(\omega)\\ &\left(\mathcal{F} K_{\sigma}\right)(\omega)=\exp \left(-\frac{|\omega|^{2}}{2 / \sigma^{2}}\right) \end{aligned}\tag{5} ​(F(Kσ​∗f))(ω)=(FKσ​)(ω)⋅(Ff)(ω)(FKσ​)(ω)=exp(−2/σ2∣ω∣2​)​(5)
即在空域内用高斯滤波核对图像进行卷积相当于频域内用高斯函数作为传递函数对高频信号进行衰减。
对于任意有界图像,定义线性扩散过程:
∂tu=Δuu(x,0)=f(x)(6)\begin{aligned} \partial_{t} u &=\Delta u \\ u(x, 0) &=f(x) \end{aligned}\tag{6} ∂t​uu(x,0)​=Δu=f(x)​(6)
式的解即为:
u(x,t)={f(x)(t=0)(K2t∗f)(x)(t>0)(7)u(x, t)=\left\{\begin{array}{ll} f(x) & (t=0) \\ \left(K_{\sqrt{2 t}} * f\right)(x) & (t>0) \end{array}\right.\tag{7} u(x,t)={f(x)(K2t​​∗f)(x)​(t=0)(t>0)​(7)
注:此方程的求解过程借助傅里叶变换,将线性偏微分方程转化为常微分方程,具体推导可以参考《Anisotropic Diffusion in Image Processing》

Nonlinear Diffusion Filtering

高斯卷积的计算简单,但存在模糊图像边缘、纹理等细节信息的缺点,为了更好的保留图像的结构信息,Perona-Malik提出了一种各向异性扩散,降低跨边缘位置的扩散率,将扩散过程定义为:
∂tu=div⁡(g(∣∇u∣)∇u)(8)\partial_{t} u=\operatorname{div}\left(g\left(|\nabla u|\right) \nabla u\right)\tag{8} ∂t​u=div(g(∣∇u∣)∇u)(8)
其中g(∣∇u∣)g(|\nabla u|)g(∣∇u∣)为扩散系数,也称边缘停止函数(Edge-Stopping Function),是梯度的单调递减函数,常用的扩散系数有:
g(∣∇u∣)=e−∇uk2g(∣∇u∣)=11+∇uk2g(|\nabla u|) = e^{-\frac{\nabla u}{k}^2}\\ g(|\nabla u|) = \frac{1}{1+\frac{\nabla u}{k}^2} g(∣∇u∣)=e−k∇u​2g(∣∇u∣)=1+k∇u​21​
离散图像中拉普拉斯算子可以近似表示为:
Δu=uxx+uyy≈Ul−1,mn−2Ul,mn+Ul+1,mn(Δx)2+Ul,m−1n−2Ul,mn+Ul,m+1n(Δy)2(9)\Delta u=u_{x x}+u_{y y} \approx \frac{U_{l-1, m}^{n}-2 U_{l, m}^{n}+U_{l+1, m}^{n}}{(\Delta x)^{2}}+\frac{U_{l, m-1}^{n}-2 U_{l, m}^{n}+U_{l, m+1}^{n}}{(\Delta y)^{2}}\tag{9} Δu=uxx​+uyy​≈(Δx)2Ul−1,mn​−2Ul,mn​+Ul+1,mn​​+(Δy)2Ul,m−1n​−2Ul,mn​+Ul,m+1n​​(9)
图像当中Δx=Δy=1\Delta x = \Delta y = 1Δx=Δy=1,因此上式化简为:
Δu≈(Ul−1,mn−Ul,mn)+(Ul+1,mn−Ul,mn)+(Ul,m−1n−Ul,mn)+(Ul,m+1n−Ul,mn)(10)\Delta u \approx\left(U_{l-1, m}^{n}-U_{l, m}^{n}\right)+\left(U_{l+1, m}^{n}-U_{l, m}^{n}\right)+\left(U_{l, m-1}^{n}-U_{l, m}^{n}\right)+\left(U_{l, m+1}^{n}-U_{l, m}^{n}\right)\tag{10} Δu≈(Ul−1,mn​−Ul,mn​)+(Ul+1,mn​−Ul,mn​)+(Ul,m−1n​−Ul,mn​)+(Ul,m+1n​−Ul,mn​)(10)
对于连续信号u(x,y,t)u(x,y,t)u(x,y,t)表示图像点(x,y)(x,y)(x,y)处的像素值随时间ttt的变化,对于离散信号u(x,y,t)u(x,y,t)u(x,y,t)表示图像点(x,y)(x,y)(x,y)处的像素值随迭代次数ttt的变化,用麦克劳林展开对u(x,y,t)u(x,y,t)u(x,y,t)进行线性近似:
u(x,y,t)=u(x,y,t−1)+(∂u∂t)+Rn(t)(11)u(x,y,t) = u(x,y,t-1) + (\frac{\partial u}{\partial t})+R_{n}(t)\tag{11} u(x,y,t)=u(x,y,t−1)+(∂t∂u​)+Rn​(t)(11)
将式(10)代入式(11)即有:
Ul,mn+1=Ul,mn+λ(g(∣Ul−1,mn−Ul,mn∣)(Ul−1,mn−Ul,mn)+g(∣Ul+1,mn−Ul,mn∣)(Ul+1,mn−Ul,mn)+g(∣Ul,m−1n−Ul,mn∣)(Ul,m−1n−Ul,mn)+g(∣Ul,m+1n−Ul,mn∣)(Ul,m+1n−Ul,mn)(12)\begin{aligned} U_{l, m}^{n+1}=U_{l, m}^{n}+\lambda &\left(g\left(\left|U_{l-1, m}^{n}-U_{l, m}^{n}\right|\right)\left(U_{l-1, m}^{n}-U_{l, m}^{n}\right)\right.\\ &+g\left(\left|U_{l+1, m}^{n}-U_{l, m}^{n}\right|\right)\left(U_{l+1, m}^{n}-U_{l, m}^{n}\right) \\ &+g\left(\left|U_{l, m-1}^{n}-U_{l, m}^{n}\right|\right)\left(U_{l, m-1}^{n}-U_{l, m}^{n}\right) \\ &+g\left(\left|U_{l, m+1}^{n}-U_{l, m}^{n}\right|\right)\left(U_{l, m+1}^{n}-U_{l, m}^{n}\right) \end{aligned}\tag{12} Ul,mn+1​=Ul,mn​+λ​(g(∣∣​Ul−1,mn​−Ul,mn​∣∣​)(Ul−1,mn​−Ul,mn​)+g(∣∣​Ul+1,mn​−Ul,mn​∣∣​)(Ul+1,mn​−Ul,mn​)+g(∣∣​Ul,m−1n​−Ul,mn​∣∣​)(Ul,m−1n​−Ul,mn​)+g(∣∣​Ul,m+1n​−Ul,mn​∣∣​)(Ul,m+1n​−Ul,mn​)​(12)
其中λ\lambdaλ为平滑速率,取值越大图像越平滑,一般取0<λ<1/40<\lambda<1/40<λ<1/4,与最终滤波结果相关的参数有λ、σ、iteration\lambda、\sigma、iterationλ、σ、iteration,σ\sigmaσ越大、iterationiterationiteration越大图像越平滑

图像降噪:Scale-Space and Edge Detection Using Anisotropic Diffusion相关推荐

  1. python怎么计算图像梯度_Opencv-Python学习笔记十——图像梯度、边缘检测 Gradient, Edge Detection...

    图像梯度 边缘检测 图像梯度,图像边界 使用到的函数有: cv2.Sobel(), cv2.Schar(), cv2.Laplacian() 梯度简单来说就是求导,OpenCV 提供了三种不同的梯度滤 ...

  2. 图像保边滤波器集锦---各向异性扩散滤波(Anisotropic Filter)算法与实现

    本篇集锦要介绍的是各向异性扩散滤波,也叫Anisotropic filter,它克服了高斯模糊的缺陷,具有保留图像边缘细节同时减少噪声的作用,因此,也是可以做人像美颜磨皮算法的: 首先,我们来了解一下 ...

  3. 目标检测中的尺度--An Analysis of Scale Invariance in Object Detection – SNIP

    An Analysis of Scale Invariance in Object Detection – SNIP Code will be made available at http://bit ...

  4. Richer Convolutional Features for Edge Detection(RCF论文学习笔记)

    介绍: 做边缘检测(edge detection)的网络,实质上来讲,应该算是HED网络的改进 作者提出RCF,将所有卷积特征封装成更具鉴别性的表示,很好地利用了丰富的特征层次结构,并且可以通过反向传 ...

  5. HED边缘检测:Holistically-nested Edge Detection 解读

    Holistically-nested Edge Detection (以下简称HED) HED通过深度学习网络实现边缘检测,网络主要有以下两个特点 Holistically:指端到端(end-to- ...

  6. 边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection

    边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection Source code and paper address Abstrac ...

  7. 关于边缘检测任务Edge Detection任务评价指标中ODS-F/OIS-F的理解

    Intro 目前在做边缘检测,关于评估方法里面的指标ODS-F/OIS-F理解一直比较模糊,网上搜索相关解析也不太明白,这段时间恰好看了一下文献,加深了一下理解,故写本文分享一下,错误之处还烦请批评指 ...

  8. 视觉进阶 | 用于图像降噪的卷积自编码器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:磐创AI 作者|Dataman 编译|Arno 来源|A ...

  9. CNN边缘检测--Richer Convolutional Features for Edge Detection

    Richer Convolutional Features for Edge Detection CVPR2017 Caffe:https://github.com/yun-liu/rcf 本文针对边 ...

  10. 人脸检测--Recurrent Scale Approximation for Object Detection in CNN

    Recurrent Scale Approximation for Object Detection in CNN ICCV2017 https://github.com/sciencefans/RS ...

最新文章

  1. Windows系统内存分析工具的介绍
  2. 【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书
  3. 自己对Delphi中使用正则表达式的研究心得
  4. 如何从Fiori launchpad发出的请求判断出后台是哪个网关系统在响应
  5. python startswitch_使用python esl 实现FreeSWITCH自动外呼
  6. kaffe java_Java虚拟机Kaffe的研究与实现
  7. 什么是冷区热区_火灾热区冷区
  8. JEECG框架的入门学习
  9. 怎么手动修改域名服务器地址,如何修改域名dns服务器地址
  10. 读养生四要有感《慎动篇》
  11. android手机存储全面解析汇总
  12. 题目1035:找出直系亲属 树
  13. 2021-04-19 一万小时定律
  14. java实现牛牛游戏源代码
  15. apipost中文版
  16. 涨姿势!摹客切图小技巧
  17. fuchsia appmgr分析
  18. 从CTF比赛真题中学习压缩包伪加密与图片隐写术【文中工具已打包】
  19. Linux作业 使用make命令和分析makefile文件
  20. 前后端交互,密码加密,RSA 实现前端 js 加密,后端 go 解密

热门文章

  1. 基于Access的学生信息管理系统设计(下):窗体设计
  2. Oracle报998,无法加载oracle in oradb10g_home2 odbc驱动程序,系统错误代码998解决方法(转载+部分原创)...
  3. 中国传统节日端午节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成品下载 DW春节节日网页作业代码下载
  4. 多尺度图像增强Retinex相关算法学习及实现
  5. JAVA UDP 发送和接收数据
  6. 步进电机 迷你L298N 2路直流电机驱动模块 正反转 PWM调速 双H桥
  7. 测试用例管理工具-TestLink
  8. 谢菲尔德遗传算法工具箱
  9. CSS实现半透明边框
  10. 个人笔记-C#txt文本分割器