目录

1、数学基础

2、图像微分知识

3、滤波器

4、微分算子

4.1、一阶微分算子

4.1.1、Sobel算子

4.1.2、scharr算子

4.1.3、 Roberts交叉梯度算子

4.1.4、Prewitt算子

4.1.5、 Isotropic Sobel算子

1、数学基础

函数一阶导数对应的微分称为一阶微分;
一阶微分的微分称为二阶微分;
二阶微分及以上的微分称为高阶微分

首先,图像是离散的数据,若求其导数就要用差分的方法,常用的差分方法是前向差分(forward differencing)与中心差分(central differencing)。一阶导本质上求的是斜率,二阶导求的是拐点。

2、图像微分知识

一阶导数:

图像梯度:

  二阶导数:

3、滤波器

平滑滤波器(低通滤波器),是用来平滑图像和抑制噪声的;而锐化空间滤波器恰恰相反,主要用来增强图像的突变信息,图像的细节和边缘信息。平滑滤波器主要是使用邻域的均值(或者中值)来代替模板中心的像素,消弱和邻域间的差别,以达到平滑图像和抑制噪声的目的;相反,锐化滤波器则使用邻域的微分作为算子,增大邻域间像素的差值,使图像的突变部分变的更加明显。

4、微分算子

不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。

4.1、一阶微分算子

对于一阶微分的任何定义都必须保证以下几点:

  • (1)在恒定灰度区域的微分值为0;
  • (2)在灰度台阶或斜坡的起点处微分值不为0;
  • (3)沿着斜坡的微分值非0;

4.1.1、Sobel算子

其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值, Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。

Sobel算子是计算不同方向的梯度,比如说计算x方向的梯度,我们使用下方的卷积核(用卷积核与原始图像相乘操作):(中间的这一行离P5特别近所以给他加了一个系数2)

水平方向的梯度:就是右边一列的值减去左边一列的值,再乘以适当的系数,就可以计算出p5这一点他到底有没有差值,差值越大,那就意味着p5这一点是边界。

上述计算的是P5这一个点X方向或者水平方向这一个点的梯度(简单说就是从右边向左边有没有边界)。(挨个点都用卷积核去计算)

垂直方向的梯度:下边减去上边的值。(中间的这一列离P5特别近所以给他加了一个系数2)

如果计算的梯度值很大,那么它很可能就是一个边界。

整个图像两个方向的梯度就是:

故,P5点的Sobel的边界值或者梯度值

每一个点都是这样去算的,然后就把整个图像的梯度值计算出来了。(记得边界补充的方法)

Sobel算子的函数:

dst:是梯度图像,就是计算结果。

ddepth: 是处理结果图像深度。通常情况下可以将该参数的值设为1,让处理结果与原始图像保持一致。

dx:表示计算x轴方向的梯度(或者说X轴上的边界)。(计算X方向的梯度,我们就让dx=1,dy=0)

dy:表示我计算y轴上的边界。(计算Y轴方向的梯度,我们就让dx=0,dy=1)

ksize:这个参数一般不用(默认为3,表示3行3列);如果使用的话设置为奇数。

                  

左图为:水平方向(梯度);                                               右图为:垂直方向(梯度) ;

(1)第一种处理模式:直接处理左边界处理为0 (计算出来为负数直接处理为0),那就是没有这个边界了,0梯度没有梯度。

(2)第二种处理模式:取绝对值(计算为负数,我们取绝对值)这样边界就出来了。一般是采用这种处理方式,计算结果为负值的话,取他的绝对值。

PS:OpenCV官网:计算水平方向的梯度值,给出来的是垂直方向的,(这是因为我们考虑的是某一点,很多个水平方向的梯度值组成一条线,刚好是一个垂直线。)

所以为了既能处理正数又能处理负数,在ddepth这个参数的时候,我们没有使用默认的-1,而是使用的是cv2.CV_64F,就表明我们要使用他那个负数的值:

所以进一步的如果我们出现了负数,在256色位图中要怎么办呢?必须通过下边的函数,表示把我们的负数的值取绝对值:

alpha是他的系数;beta是他的修正值。

虽然上面的公式中用到了系数和修正值来计算即下图左边的方法;但是一般在计算时我们没有这么的复杂而是使用下图右边的方式,直接输入的是图像。

------------------上面是对于ddepth参数的解释(不能直接设置为-1,因为边界会丢失)-----------------

在计算梯度的时候:

计算方式分为两种:第一种一起计算;第二种分开计算再求和。下图是计算Sobel的两种方式:

但是第一种方式不太严谨,更多的时候使用的是第二种方式。 第二种方式为了确保在相加时比如我们我们两个方向上计算结果都很大,超过了255,他就会溢出,所以把每一个都乘以一个系数,这个系数一般是0.5,最后得到一个比较不错的图像。

针对于上述的第二种必须要我们自己去加计算,CV里边提供了一个函数如下:

上述函数的关系就是:

原图像1乘上他的系数+原图像2乘上他的系数,最后再加上修正值,最后得到一个目标图像。

下面是Sobel算子CV代码的使用:

下面参数设置为-1只取到了右侧边界,因为左侧边界为负数,将其强制置为0。

下面这个虽然改变了参数不是-1了,你把它的范围扩大了,但是在运算的时候还是它的负数仍然设置为0了,所以还是只有右侧边界:

下边如果让左边界出现,必须调用函数,添加一行代码就会出现左边界:

接下来再求Y方向的梯度:

 

PS:减法的顺序和我们检测出来的边缘信息是正交的。

把X轴和Y轴的梯度一块计算出来:

 

下面再进行调整把dx和dy都设置为1:

 直接计算两者的方式并没有把边界找出来或者即使找出来效果也不好,所以为了更好地找出边界,我们一般是使用分开计算,然后求和的方式来计算。

4.1.2、scharr算子

Scharr作为一阶微分算子被提出的原因,因为我们在使用3x3的Sobel算子的时候,可能会出现不太精准的情况,就是计算出来的梯度可能不太精确,导致边缘不是很精准,Scharr算子效果更好,他的卷积核如下:

计算方法和Sobel算子一样,在水平方向仍然是左侧的像素减去右侧的像素,在垂直方向是下边的像素值减去上边的像素值,只是系数不一样。离中心点稍微远一点的系数是3,近一点的系数值是10。 Scharr和Sobel从运算量上来说两者的运算量是一样的,只是 Scharr的准确率更高,他可以说是我们对Sobel算子的一种改进,所以一般计算梯度的时候经常使用的是 Scharr算子。

Scharr算子在OpenCV中的使用:

在参数设置上和Sobel一样,一般处理深度不使用-1。

 

Scharr算子计算水平方向的梯度:

 

计算垂直方向的梯度:

计算两个方向上的提顿:

 

Sobel算子与Scharr 比较:

(1)大小一样,意味着计算起来计算量是一样的。

(2)计算的准确度不同,Scharr算子更高(更够计算出相邻像素更小的细小差异)。(精确度体现在系数差别上)

4.1.3、 Roberts交叉梯度算子

4.1.4、Prewitt算子

4.1.5、 Isotropic Sobel算子

上述几个暂时未使用到。

数字图像处理:(3)一阶微分算子在图像处理中的应用相关推荐

  1. 数字图像处理技术在TWaver可视化中的应用

    数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.常用的图像处理方法有图像增强.复原.编码.压缩等,数 ...

  2. 数字图像处理之位图在计算机中的存储结构

    位图是windows中广泛应用的一种图像格式,其后缀名为.bmp.位图也称为位映射图片. 一张位图包含了许许多多的像素点,每个像素点有不同的颜色.由此构成了五彩斑斓的位图图像, 然而正是因为由像素点这 ...

  3. 计算机对医学影像学的作用,医学影像技术中数字图像处理的重要性

    摘    要: 目的:本文深入探讨了数字图像处理在医学影像方面的应用.方法:挑选了8例肺癌患者, 对所有患者均进行CT检查以及PET全身影像, 经过ps软件处理, 最终进行图像的输出, 获得的PET和 ...

  4. matlab moveverage,MATLAB在数字图像处理课程教学中的应用

    ISSN1672-4305 CN12-1352/N 实 验 室 科 学 LABORATORY SC I ENCE 第14卷 第1期 2011年2月 Vol 14 N o 1 Feb 2011 MATL ...

  5. 【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯 ...

  6. 正交db小波 图像处理 matlab,基于matlab小波工具箱的数字图像处理及小波分析

    基于matlab小波工具箱的数字图像处理及小波分析 基于 Matlab 小波工具箱的数字图像处理摘要:小波分析在图像处理中有非常重要的应用,包括图像压缩.去噪.分解和增强等.运用多分辨率分析可以将信号 ...

  7. 用计算机处理图像属于啥技术,计算机图像处理技术在网页设计中的应用

    谭昊琳 摘要:网页设计中图像的处理越来越重要.网页设计中的图像计算机处理进行了概念的介绍,对计算机图像处理的重要性也进行了分析.为了给网页设计中的图像处理更好,提高浏览量,提出了网页设计中的计算机图像 ...

  8. 计算机在水产养殖学中的应用,计算机图像处理技术在水产养殖业中的应用

    摘  要: 利用计算机图像处理技术在水产养殖业中实现对鱼类生长的监控. 关键词: 数字图像处理  水产养殖  Matlab 近年来,随着经济的发展及人们生活水平的日益提高,对水产品需求量也越来越大.因 ...

  9. 数字图像处理Matlab

    前言:本文类似于学习笔记,所以有疑问或者有什么宝贵的建议欢迎在下方留言.(注:本文代码大部分可从<数字图像处理 第三版>中找到) 使用软件:MATLAB R2018a 参考资料:<数 ...

最新文章

  1. JavaScript学习一
  2. 面向对象程序中的常量
  3. c#保存数据格式为.cvs_C#读取csv格式文件的方法
  4. oracle idm_批准Oracle IDM中的特定Web服务
  5. 文件的输入和输出:流和缓冲区的概念和文件操作函数总结
  6. 动态规划---背包问题分析
  7. 如何在网中使用百度地图API自定义个性化地图
  8. Failed to create the part‘s controls解决方法
  9. 零基础带你学习MySQL—查询数据库(二)
  10. 夺命雷公狗—angularjs—15—内置封装好的计时器$interval和$timeout
  11. spring管理bean容器(笔记)[继]
  12. shell 查某个字符串_Shell脚本编程04——Shell编程之sed与awk
  13. 计算机科学导论填空题,计算机科学导论习题
  14. delphi madExcept使用指南
  15. c语言贪吃蛇程序设计报告蚂蚁文库,贪吃蛇游戏C程序设计报告
  16. 低代码平台集成方案,打通企业内部业务管理系统
  17. mysql查询重复名字的数据都查出来_mysql 查询重复字段 内容
  18. Ubuntu登陆不进去输入密码后黑屏又返回登陆界面
  19. 公司网盘间的风云变幻PK赛
  20. 读书百客:《嘲鲁儒》赏析

热门文章

  1. 2021年大数据Hadoop(八):HDFS的Shell命令行使用
  2. [JAVA EE] JPA 查询用法:自定义查询,分页查询
  3. 微信小程序地图上图片放到下面
  4. 源程序,解释器,编译器
  5. Java 运算符 和 运算符
  6. mybatis中![CDATA[]]的作用
  7. mysql数据没有真正提交,转MySQL 批量提交优化
  8. Go 学习笔记(18)— 函数(04)[闭包定义、闭包修改变量、闭包记忆效应、闭包实现生成器、闭包复制原对象指针]
  9. Go 学习笔记(2)— 安装目录、工作区、源码文件和标准命令
  10. 最新手机号段归属地数据库(2017年4月16日版)免费下载