0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

图像边缘原理介绍

OpenCV学堂 来源: Java与Android技术栈 2023-11-30 10:40 次阅读

Part11. 图像的边缘

灰度图像的分割算法大多都基于两个性质:灰度的不连续性和灰度的相似性

对于不连续性的灰度,可以以灰度突变为基础分割一幅图像,比如通过图像的边缘,基于边缘进行图像分割。对于相似的灰度,可以通过区域进行图像分割。本文主要介绍图像边缘相关的内容和原理。

图像的边缘是图像中亮度变化比较大的点。图像边缘点的出现一般是由于深度的不连续、物体表面方向的变换、物体属性变化或者场景照明变化引起。

边缘是连通的边缘像素集合。

常见的边缘类型有三种:

阶梯形边缘:即从一个灰度到比它高好多的另一个灰度。

屋顶形边缘:它的灰度是慢慢增加到一定程度,然后慢慢减少。

线性边缘:它的灰度从一个级别跳到另一个灰度级别之后然后回来。

5ebcc372-8ead-11ee-939d-92fbcf53809c.jpg常见的边缘类型.PNG

真实的图像边缘可能含有噪声,不一定符合上述理想的边缘模型。

Part22. 图像的梯度

图像可以看成是一个二维离散函数,为了衡量图像灰度的变化率,可以对二维离散函数进行求导(连续的函数可以直接求导,离散的函数只能通过一些方法来近似)。一阶或二阶导数都可以检测局部灰度突变。

12.1 差分

差分,又名差分函数差分运算,一般是指有限差分,是数学中的一个概念,将原函数 f(x) 映射到 f(x+a) - f(x+b) 。

差分运算,相应于微分运算,是微积分中重要的一个概念。差分对应离散,微分对应连续。

差分可分为前向差分、反向差分中心差分。

2.1.1 前向差分

当自变量从变到时,函数的改变量,称为函数 f(x) 在点的步长为 的一阶(前向)差分。

通常记为,,其中为差分算子。

同理,为 处的二阶差分。

为 处的 n 阶差分。

2.1.2 反向差分

一阶反向差分为:

2.1.3 中心差分

一阶中心差分为:

22.2 导数

数字函数的导数可用有限差分定义。

首先,将 展开为 x 的泰勒级数,我们可以得到一维函数 f(x) 在任意点 x 处的一阶导数的近似:

则:

当 时

对于一阶导数,我们只使用线性项,可得:

由此,用前向差分得到灰度差:

当 时

对于一阶导数,我们同样只使用线性项,可得:

由此,用反向差分得到灰度差:

使用(2)式-(3)式,用中心差分可得:

中心差分的误差较小,导数通常表示为中心差分。基于中心差分的二阶导数,使用(2)式+(3)式,可得:

即:

通常,一阶导数和二阶导数对分析边缘有以下的结论:

一阶导数通常在图像中产生较粗的边缘;

二阶导数对精细细节,如细线、孤立点和噪声有较强的响应;

二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应;

二阶导数的符号可用于确定边缘的过渡是从亮到暗还是从暗到亮。

计算图像中每个像素位置的一阶导数和二阶导数的方法是空间卷积

当我们把图像看做是一个二维离散函数时,通过上述方式可得 x、y 方向的二阶导数:

以及

根据拉普拉斯算子,图像可以定义为

由(5)式+(6)式,可得:

(7)式可写成如下 filter mask 的形式 :

5ed6d62c-8ead-11ee-939d-92fbcf53809c.jpglaplace核.png

拉普拉斯可以对图像进行锐化,利用下面的公式:

其中,f(x,y) 表示原图,g(x,y) 表示锐化后的图像,c = -1,则

对于不同的拉普拉斯核,c 可能会取不同的值。

下面的代码,展示了对灰度图像进行锐化以及对灰度图像的拉普拉斯变换:

#include
#include
#include

usingnamespacestd;
usingnamespacecv;

intmain(intargc,char*argv[])
{
Matsrc=imread(".../girl.jpg");
imshow("src",src);

Matgray;
cvtColor(src,gray,COLOR_BGR2GRAY);
imshow("gray",gray);

Matdst,laplace;

dst.create(src.size(),CV_8UC1);
laplace.create(src.size(),CV_8UC1);

intheight=gray.rows;
intwidth=gray.cols;

for(inti=1;i< height-1; i++)
    {
        for (int j = 1; j < width-1; j++)
        {
            dst.at(i,j)=saturate_cast(5*gray.at(i,j)-gray.at(i+1,j)-gray.at(i-1,j)-gray.at(i,j+1)-gray.at(i,j-1));
laplace.at(i,j)=saturate_cast(gray.at(i+1,j)+gray.at(i-1,j)+gray.at(i,j+1)+gray.at(i,j-1)-4*gray.at(i,j));
}
}
imshow("dst",dst);
imshow("laplace",laplace);

waitKey(0);
return0;
}

除此之外,还有一些其他的拉普拉斯核:

5f36615a-8ead-11ee-939d-92fbcf53809c.jpg其他的拉普拉斯核.png

后续的文章会详细介绍拉普拉斯相关的内容,以及如何在 OpenCV 中如何使用相关的函数,它的主要用途包括:

图像锐化

边缘检测

模糊检测

32.3 图像的梯度及其性质

梯度是一个有大小有方向的向量。梯度的方向是函数变化最快的方向。

图像梯度是指图像某个像素在 x 和 y 两个方向上的变化率(与相邻像素比较),它是一个二维向量,由 X 轴的变化、Y 轴的变化这2个分量组成。

向量的幅度(长度)

幅度由 M(x,y) 表示,根据欧几里得范数(L2 范数)可得:

其中, M(x,y) 是与原图像大小相同的图像,它是 x 和 y 在 f 的所有像素位置上变化时产生的,也被称为梯度图像

求梯度的幅度时,由于公式(8)的计算量比较大,可以用 L1 范数来近似梯度的幅度:

梯度的方向角

经典的图像梯度算法是考虑图像的每个像素的某个邻域内的灰度变化,利用边缘临近的一阶或二阶导数变化规律,对原始图像中像素某个邻域设置梯度算子(例如 Sobel 算子、Roberts 算子、Robinson 算子、Laplace 算子等等),通过图像卷积实现对图像两个方向上梯度的计算。

Part33. 总结

本文介绍了图像边缘的含义,通过图像边缘引出图像的梯度的概念。用数学的方式推导出图像梯度并介绍了其相关的性质。梯度是一个基础且重要的概念,遍布机器学习深度学习的领域。

介绍它们是为了后续介绍各种图像边缘检测算法做准备的,毕竟边缘检测是传统的图像分割算法。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测算法
    +关注

    关注

    0

    文章

    119

    浏览量

    25220
  • OpenCV
    +关注

    关注

    31

    文章

    635

    浏览量

    41343
  • 图像边缘检测

    关注

    0

    文章

    7

    浏览量

    6543

原文标题:OpenCV 笔记(8):图像的边缘和梯度

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    摘要 :本文设计了一种 基于 FPGA 的实时边缘检测系统 ,使用OV5640 摄像头模块获取实时的视频图像数据,提取图像边缘信息并通过 VGA显示。FPGA 内部使用流水线设计和 并
    发表于 05-24 07:45

    基于Canny边缘检测算子的图像检索算法

    【摘要】:针对依赖传统Canny算子的基于边缘图像检索系统所存在的不足,提出一种基于Canny边缘检测的图像检索算法。使用改进的Canny算子提取
    发表于 04-24 10:03

    labview对图像边缘的检测

    图像如:人,将人的边缘轮廓提取出来!急急急急。。。。有这方面材料的兄弟救救急啊啊啊啊啊啊
    发表于 03-04 12:53

    机器视觉 --检测图像边缘小程序

    机器视觉 --检测图像边缘小程序
    发表于 08-23 21:35

    图像边缘

    图像边缘
    发表于 11-01 09:38

    如何利用FPGA实现Laplacian图像边缘检测器的研究?

    引言边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本的特征,是图像分析识别前必不可少的环节,是一种重要的图像预处理技术。
    发表于 07-31 06:38

    Labview图像处理——边缘检测

    `一、labview直方图程序介绍1、前面板2、程序框图3、图片二、基本概念介绍边缘图像的基本特征,具有灰度值不连续的性质,即不同灰度值的相邻区域之间。
    发表于 12-01 12:16

    基于FPGA的实时图像边缘检测系统设计(附代码)

    ;阐述了图像信息的捕获原理;详细介绍图像边缘检测部分各模块的功能;重点介绍了具有去噪功能的中值滤波模块的设计;简单描述了
    发表于 06-21 18:47

    基于FPGA的图像边缘检测

    基于FPGA的图像边缘检测 引言     图像边缘检测是图像处理的一项基本技术,在工业、医学、航天和军事等领域有着广
    发表于 01-14 11:07 1874次阅读
    基于FPGA的<b class='flag-5'>图像</b><b class='flag-5'>边缘</b>检测

    红外图像边缘提取

    红外图像受噪声污染严重,边缘模糊,应用传统的边缘提取算法提取边缘较为困难。本文根据人眼微动视觉成像的基本原理,结合红外图像的特点进行了
    发表于 07-09 17:15 1274次阅读

    基于SoPC的边缘图像连通区域标记的算法

    本文所标记的图像是经过边缘检测得的二值边缘图像。相对于原始图像(或其二值图像),
    发表于 11-10 11:38 1872次阅读
    基于SoPC的<b class='flag-5'>边缘</b><b class='flag-5'>图像</b>连通区域标记的算法

    新模板的图像边缘提取方法

    提出了一种新的横向和纵向模板算法,通过仿真实验,获得了优于梯度算子提取图像边缘的结果。并对以上算法进行改进,在边缘图像信息衰减微小的情况下,有效地改善了
    发表于 11-11 14:26 19次下载
    新模板的<b class='flag-5'>图像</b><b class='flag-5'>边缘</b>提取方法

    基于草地图像边缘检测

    图像是客观对象的一种相似性描述,边缘图像中的重要特征,边缘检测是基于灰度突变来分割图像的最常用的方法,包含着许多重要信息。本文
    发表于 11-29 11:39 1次下载
    基于草地<b class='flag-5'>图像</b><b class='flag-5'>边缘</b>检测

    利用边缘检查的尺寸检查图像传感器

    尺寸测量/边缘检测 利用边缘检查的尺寸检查是图像传感器的最新应用趋势。图像传感器可以将检查对象在平面上表现出来,通过边缘检测,测算位置、宽度
    的头像 发表于 10-31 10:57 2037次阅读
    利用<b class='flag-5'>边缘</b>检查的尺寸检查<b class='flag-5'>图像</b>传感器

    图像边缘检测系统的设计流程

    图像边缘检测系统的设计流程是一个涉及多个步骤的复杂过程,它旨在从图像中提取出重要的结构信息,如边界、轮廓等。这些边缘信息对于图像分析、机器视
    的头像 发表于 07-17 16:39 352次阅读