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

    文章

    117

    浏览量

    25148
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40786
  • 图像边缘检测

    关注

    0

    文章

    6

    浏览量

    6527

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    labview对图像边缘的检测

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

    数字图像处理的时候,二值化是边缘是断开的??

    我在做数字图像处理的时候,二值化是边缘是断开的,我怎么帮边缘链接成封闭的。。。。。
    发表于 08-26 14:08

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

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

    图像边缘

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

    图像边缘检测算法体验步骤(Photoshop,Matlab)

    图像边缘检测算法体验步骤(Photoshop,Matlab)1. 确定你的电脑上已经安装了Photoshop和Matlab2. 使用手机或其他任何方式,获得一张彩色图像(任何格式),建议图像
    发表于 03-06 10:51

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

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

    源码交流=图像处理 实现图像去噪、滤波、锐化、边缘检测

    均衡化、锐化、边缘检测【处理效果】NO.1:原图NO.2:去噪之后的图像NO.3:锐化之后的图像NO.4:直方图均衡之后的图像NO.5:Prewitt
    发表于 04-01 19:03

    Labview图像处理——边缘检测

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

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

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

    基于FPGA的图像边缘检测

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

    红外图像边缘提取

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

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

    提出了一种新的横向和纵向模板算法,通过仿真实验,获得了优于梯度算子提取图像边缘的结果。并对以上算法进行改进,在边缘图像信息衰减微小的情况下,有效地改善了
    发表于 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>检测

    如何同时使用Canny和 Sobel边缘检测器检测图像中的边缘

    图像中,边缘是一条曲线,其走势与图像中强度快速变化的路径一致。边缘通常与场景中目标的边界相关联。边缘检测用于确定
    的头像 发表于 11-18 14:24 841次阅读