zoukankan      html  css  js  c++  java
  • 拉普拉斯锐化(Laplacian sharpening)

    前言

      在图像增强中,平滑是为了消除图像中噪声的干扰,或者降低对比度,与之相反,有时为了强调图像的边缘和细节,需要对图像进行锐化,提高对比度
    图的边缘是指在局部不连续的特征。
    原理
      拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。我们知道,一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。那么据此我们可以猜测出依据二阶微分能够找到图像的色素的过渡程度,例如白色到黑色的过渡就是比较急剧的。
      或者用官方点的话说:当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。
    应用
      运用拉普拉斯可以增强图像的细节,找到图像的边缘。但是有时候会把噪音也给增强了,那么可以在锐化前对图像进行平滑处理。
      下面我们来推导二阶微分与像素的关系:
      先看一阶偏微分和推出的二元函数微分:

      $\begin{array}{l}&\frac{\partial f}{\partial x}=f(x, y)-f(x-1, y) \\&\frac{\partial f}{\partial y}=f(x, y)-f(x, y-1) \\&\nabla \mathrm{f}=\frac{\partial f}{\partial x}+\frac{\partial f}{\partial y}=2 f(x, y)-f(x-1, y)-f(x, y-1)\end{array}$

      一阶微分法能够用来检测边缘是否存在。

      那么二阶微分法,也就是拉普拉斯算子就可以确定边缘的位置。(有的文章中称下式为拉普拉斯掩膜中心系数

        $\nabla^{2} \mathrm{f}=4 f(x, y)-f(x-1, y)-f(x, y+1)-f(x+1, y)-f(x, y-1)$

      这样可以找到一个模板矩阵:

        $\begin{array}{ccc}0 & -1 & 0 \\-1 & 4 & -1 \\0 & -1 & 0\end{array}$

      这个成为四邻域也就是上面的二阶微分法

        $\begin{array}{ccc}-1 & -1 & -1 \\-1 & 8 & -1 \\-1 & -1 & -1\end{array}$

      这个是八邻域。

      【注】从上面的两种模板中就可以看出,如果一个黑色平面中有一个白点,那么模板矩阵可以使这个白点更亮。由于图像边缘就是灰度发生跳变的区域,所以拉普拉斯模板对边缘检测很有用。

      八邻域的表示法为:

        $\begin{array}{r}\nabla^{2} \mathrm{f}=8 f(x, y)-f(x-1, y-1)-f(x-1, y)-f(x-1, y+1)-f(x, y-1) \\-f(x, y+1)-f(x+1, y-1)+f(x+1, y)-f(x+1, y+1)\end{array}$

      将算得的值替换原  $(x,y)$  处的像素值,可以得到类似边界的地方,然后根据下式得到锐化图像:

        $\mathrm{g}(\mathrm{x})=\left\{\begin{array}{ll}\mathrm{f}(\mathrm{x}, \mathrm{y})-\nabla^{2} f(x, y), & \nabla^{2} f(x, y)<0 \\\mathrm{f}(\mathrm{x}, \mathrm{y})+\nabla^{2} f(x, y), & \nabla^{2} f(x, y) \geq 0\end{array}\right.$

    因上求缘,果上努力~~~~ 作者:反差萌er,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/15803431.html

  • 相关阅读:
    21、Java并发性和多线程-Java中的锁
    20、Java并发性和多线程-Slipped Conditions
    19、Java并发性和多线程-嵌套管程锁死
    Java 架构师眼中的 HTTP 协议
    MonolithFirst
    【SpringMVC】从Fastjson迁移到Jackson,以及对技术选型的反思
    SpringMVC接口测试异常:Can not deserialize instance of int out of START_OBJECT token
    请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用
    Android Fragment中调用getActivity为null的问题
    Android 那些年,处理getActivity()为null的日子
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/15803431.html
Copyright © 2011-2022 走看看