前面我们介绍过了图像的梯度,以及图像的几个梯度算子。

这些本质上都是一阶导数,或一阶微分。就是求图像灰度变化的导数,能够突出图像中的对象边缘。那有一阶导数,有没有二阶导数呢?求导数的导数,这对灰度变化强烈的地方会更敏感。

在微积分中,一维函数的一阶微分的基本定义是这样的:
dfdx=lim⁡ϵ→0f(x+ϵ)−f(x)ϵ\frac{df}{dx}=\lim_{\epsilon\rightarrow 0 }{\frac{f(x+\epsilon )-f(x)}{\epsilon }} dxdf​=ϵ→0lim​ϵf(x+ϵ)−f(x)​

那么,二阶微分的基本定义就是这样的:
d2fdx2=lim⁡ϵ→0f′(x+ϵ)−f′(x)ϵ\frac{d^2f}{dx^2}=\lim_{\epsilon\rightarrow 0 }{\frac{f'(x+\epsilon )-f'(x)}{\epsilon }} dx2d2f​=ϵ→0lim​ϵf′(x+ϵ)−f′(x)​

而图像是一个二维函数f(x,y),其二阶微分当然就是二阶偏微分。但为推导简单起见,我们先按x方向的一维函数来推导:
∂f∂x=lim⁡ϵ→0f(x+ϵ)−f(x)ϵ\frac{\partial f}{\partial x}=\lim_{\epsilon\rightarrow 0 }{\frac{f(x+\epsilon )-f(x)}{\epsilon }} ∂x∂f​=ϵ→0lim​ϵf(x+ϵ)−f(x)​

图像是按照像素来离散的,最小的ϵϵϵ就是1像素。因此有:
∂f∂x=f′(x)=f(x+1)−f(x)\frac{\partial f}{\partial x}=f'(x)=f(x+1)-f(x) ∂x∂f​=f′(x)=f(x+1)−f(x)

那么二阶微分就是:
∂2f∂x2=∂f′(x)dx2=f′(x+1)−f′(x)\frac{\partial^2f}{\partial x ^2}=\frac{\partial f'(x)}{dx^2}=f'(x+1)-f'(x) ∂x2∂2f​=dx2∂f′(x)​=f′(x+1)−f′(x)

根据上面的一阶微分,则:
∂2f∂x2=∂f′(x)dx2=f′(x+1)−f′(x)=f((x+1)+1)−f((x+1))−(f(x+1)−f(x))=f(x+2)−f(x+1)−f(x+1)+f(x)=f(x+2)−2f(x+1)+f(x)\begin{aligned} \frac{\partial^2f}{\partial x ^2}&=\frac{\partial f'(x)}{dx^2}=f'(x+1)-f'(x) \\ &=f((x+1)+1)-f((x+1))-(f(x+1)-f(x)) \\ &=f(x+2)-f(x+1)-f(x+1)+f(x) \\ &=f(x+2)-2f(x+1)+f(x) \\ \end{aligned} ∂x2∂2f​​=dx2∂f′(x)​=f′(x+1)−f′(x)=f((x+1)+1)−f((x+1))−(f(x+1)−f(x))=f(x+2)−f(x+1)−f(x+1)+f(x)=f(x+2)−2f(x+1)+f(x)​

令x=x−1x=x-1x=x−1,则:
∂2f∂x2=f(x+1)+f(x−1)−2f(x)\frac{\partial^2f}{\partial x ^2}=f(x+1)+f(x-1)-2f(x) ∂x2∂2f​=f(x+1)+f(x−1)−2f(x)

于是,在x和y方向上,有:
∂2f∂x2=f(x+1,y)+f(x−1,y)−2f(x,y)\frac{\partial^2f}{\partial x ^2}=f(x+1,y)+f(x-1,y)-2f(x,y) ∂x2∂2f​=f(x+1,y)+f(x−1,y)−2f(x,y)
∂2f∂y2=f(x,y+1)+f(x,y−1)−2f(x,y)\frac{\partial^2f}{\partial y ^2}=f(x,y+1)+f(x,y-1)-2f(x,y) ∂y2∂2f​=f(x,y+1)+f(x,y−1)−2f(x,y)

我们把x方向和y方向的二阶导数结合在一起:

∂2f∂x2+∂2f∂y2=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)\frac{\partial^2f}{\partial x ^2}+\frac{\partial^2f}{\partial y ^2}=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y) ∂x2∂2f​+∂y2∂2f​=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)
这实质上就是著名的拉普拉斯二阶微分算子(Laplacian)。我们看一下实际效果。

import cv2
import numpy as npmoon = cv2.imread("moon.tif", 0)
row, column = moon.shape
moon_f = np.copy(moon)
moon_f = moon_f.astype("float")two = np.zeros((row, column))for x in range(1, row - 1):for y in range(1, column - 1):two[x, y] = moon_f[x + 1, y] \+ moon_f[x - 1, y] \+ moon_f[x, y + 1] \+ moon_f[x, y - 1] \- 4 * moon_f[x, y]sharp = moon_f - two
sharp = np.where(sharp < 0, 0, np.where(sharp > 255, 255, sharp))
sharp = sharp.astype("uint8")cv2.imshow("moon", moon)
cv2.imshow("sharp", sharp)
cv2.waitKey()

输出结果:


我们可以看到,图像增强的效果比前几篇文章介绍的一阶微分要好很多。

需要注意,将原图像与拉普拉斯二阶导数图像合并的时候,必须考虑符号上的差别。注意上面的代码中用的是减号,而不是一阶导数中用的加号。到底用加号还是减号,与中心点f(x,y)f(x,y)f(x,y)的系数有关,这个定义的拉普拉斯二阶导数中,f(x,y)f(x,y)f(x,y)的系数是-4,是负的,原图像就要减去拉普拉斯二阶导数图像;拉普拉斯二阶导数还有其它的形式,例如:
Laplacian=4f(x,y)−f(x+1,y)−f(x−1,y)−f(x,y+1)−f(x,y−1)Laplacian = 4f(x,y)-f(x+1,y)-f(x-1,y)-f(x,y+1)-f(x,y-1) Laplacian=4f(x,y)−f(x+1,y)−f(x−1,y)−f(x,y+1)−f(x,y−1)

这时f(x,y)f(x,y)f(x,y)的系数是正的,原图像就要加上拉普拉斯二阶导数图像。

到这里,我们已经注意到,前面介绍图像一阶导数时,用的是绝对值,而二阶导数就没有使用绝对值,且需要考虑系数的正负符号问题,才能决定最后的图像合并是用原图像加上还是减去二阶导数图像,为什么是这样?这个下一篇再探讨。

转载自:https://blog.csdn.net/saltriver/article/details/78990520

数字图像处理--图像二阶导数的推导相关推荐

  1. 数字图像处理--图像二阶导数的本质

    前面我们介绍过了图像的二阶导数,并且指出,二阶导数比一阶导数有更好的细节增强表现.那么,其原理是什么呢? 我们仍然简化问题,考虑下x方向,选取某个像素,如下图所示: 可以看出,在图中标红色框框的像素附 ...

  2. 数字图像处理--图像旋转变换的推导

    前面我们提到了图像的缩放变换,可以用矩阵乘法的形式来表达变换后的像素位置映射关系. 那么,对于旋转变换呢?我们可以同样将其想象成二维平面上矢量的旋转.如下图所示,矢量[x1,y1][x_1,y_1][ ...

  3. 数字图像处理图像反转的实现_使用8086微处理器反转16位数字

    数字图像处理图像反转的实现 Problem statement: 问题陈述: Write an assembly language program in 8086 microprocessor to ...

  4. 数字图像处理图像反转的实现_反转8位数字| 8085微处理器

    数字图像处理图像反转的实现 Problem statement: 问题陈述: To reverse 8 bits number using 8085 microprocessors. 使用8085微处 ...

  5. 数字图像处理课设图像的锐化_数字图像处理图像锐化处理.ppt

    数字图像处理图像锐化处理 4.7.2 灰度级到彩色转换 灰度级到彩色转换(例) 在HSI彩色空间的直方图均衡强度均衡处理没有改变图像的色调和饱和度值,但它的确影响了整体图像的彩色感观. 向量分量可以用 ...

  6. matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法

    [实例简介] 数字图像处理图像的骨架生成和提取(Matlab),有三种方法,推荐给大家! [实例截图] [核心代码] Programe ├── Programe1 │   ├── 00.JPG │   ...

  7. Matlab数字图像处理——图像的空间变换

    Matlab空间变换函数 imtransform Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移.旋转.剪切.缩放).投影变换, 该函数可与 maketform 配合 ...

  8. 计算机图像进行滤波的函数,数字图像处理图像滤波.ppt

    数字图像处理图像滤波 图像滤波 图像处理中所用到的图像往往含有噪声,需要用图像滤波的方法去除噪声. 内容框架 像素基础知识介绍 算术和逻辑运算 直方图 直方图均衡算法,用于图像锐化. 图像增强基本方法 ...

  9. 《opencv 数字图像处理 图像基础》

    <opencv 数字图像处理 图像基础> 矩阵 通道分离和合并 彩色图像转灰度图像 灰度图转二值化图像 图像运算 矩阵 定义一个显示图像的函数,对于灰度图,里面添加了vmin=0,vmax ...

最新文章

  1. sftp工具都有哪些_色彩校正的工具都有哪些?
  2. nginx 停止服务方法
  3. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
  4. Spring常用注解总结
  5. Redis实现求交集操作结果缓存的设计方案
  6. python网页爬取方法_Python爬取网页的三种方法
  7. SINOCES 2011
  8. P3857-[TJOI2008]彩灯【线性基】
  9. android 多个复选框,Android UI控件之CheckBox(复选框、多选框)
  10. matlab 获取视频图像的信息
  11. 最全BAT数据库面试89题:mysql、大数据、redis
  12. CentOS服务器上搭建Gitlab安装步骤、中文汉化详细步骤、日常管理以及异常故障排查
  13. 正则匹配字符串无匹配不到_10. 正则表达式匹配
  14. 前嗅ForeSpider教程:采集新浪新闻
  15. MSN在线代码|QQ在线客服代码|SKYPE 贸易通在线代码
  16. android访问win10共享文件夹,用手机es文件浏览器访问win10系统共享文件的方法
  17. 如何编写一份完整的软件测试报告?(进阶版)
  18. 连入网络中的计算机必须都是,12计算机网络判断题.doc
  19. java开发用i5还是i7,办公用i5还是i7
  20. OpenText文件管理

热门文章

  1. NGINX内容缓存配置
  2. Docker教程(三) Docker网络访问和数据管理
  3. C语言,利用一维数组交换法排序,使学生成绩高低排序(要求输入为负值时输入结束)
  4. C#开发笔记之18-如何用C#模拟(传统方法)发送Post请求或Get请求?
  5. C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)
  6. C#LeetCode刷题之#463-岛屿的周长​​​​​​​(Island Perimeter)
  7. 智慧教室解决方案和移动授课概念说明
  8. 该错误是如何发生的? Git一分为二进行营救!
  9. 用python可以画的可爱的图形_利用Python绘制诱人的桑基图
  10. PyTorch入门-深度学习回顾和PyTorch简介