我是靠谱客的博主 笑点低黑猫,最近开发中收集的这篇文章主要介绍【图像特征提取(一)边缘特征之Sobel】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是图像特征:

图像特征 :个人觉得能够刻画从一副图像的大致内容信息的图像中的一部分就是图像的特征。比如:
亮度,纹理,边缘,角点,特征描述子和区域等等都可以作为描述图像信息的一部分。


图像边缘
物体的边界,表面方向的改变,不同的颜色,光照明暗的变化。
在这里插入图片描述
在这里插入图片描述


图像微分算子

一阶微分算子(梯度算子):Roberts,Prewitt,,Sobel。

  • 检测极大值
    一阶算子通常是通过计算返回水平Gx和垂直Gy方向的一阶导数值,由此便可以确定像素点的梯度G(x,y)和方向θ 。

二阶微分算子:Laplacian

  • 检测过零点
    二阶算子通常是计算零点,证明其存在边缘(之后根据实际情况进行边缘取舍)。
    几种算子对比
Roberts算子

斜向偏差分的梯度计算方法,梯度幅值大小代表边缘的强度,梯度的方向与边缘方向垂直,实际上是求旋转±45°方向上两个微分值的和。
两个卷积核:
G x = ⌊ 1 0 0 − 1 ⌋ G y = ⌊ 0 1 − 1 0 ⌋ {G_x} = leftlfloor begin{array}{l} {rm{1}}{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0\ 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} - 1 end{array} rightrfloor {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {G_y}{rm{ = }}leftlfloor begin{array}{l} {rm{0}}{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{1}}\ {rm{ - 1}}{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{0}} end{array} rightrfloor {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} Gx=1001Gy=0110

梯度幅值与方向:
G ( x , y ) = G x 2 + G y 2 θ = arctan ⁡ ( G y / G y ) begin{array}{l} G(x,y) = sqrt {G_x^2 + G_y^2} \ theta = arctan ({G_y}/Gy) end{array} G(x,y)=Gx2+Gy2 θ=arctan(Gy/Gy)

通常将幅值近似: ∣ G ( x , y ) ∣ = ∣ G x ∣ + ∣ G y ∣ |G(x,y)| = {rm{|}}{{rm{G}}_{rm{x}}}{rm{| + |}}{{rm{G}}_{rm{y}}}{rm{|}} G(x,y)=Gx+Gy

Prewitt算子

两个卷积核:权重相同的算子

G x = ⌊ − 1 0 1 − 1 0 1 − 1 0 1 ⌋ G y = ⌊ 1 1 1 0 0 0 − 1 − 1 − 1 ⌋ {G_x} = leftlfloor begin{array}{l} - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 1\- 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 1\ {kern 1pt} - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 1 end{array} rightrfloor {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {G_y}{rm{ = }}leftlfloor begin{array}{l} 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{1}}\ 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{0}}{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{0}}\ - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} - 1 end{array} rightrfloor {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} Gx=101101101Gy=111000111
梯度幅值:
G ( x , y ) ≈ max ⁡ ( ∣ G x ∣ , ∣ G y ∣ ) G(x,y) approx max ({rm{|}}{{rm{G}}_{rm{x}}}{rm{|,|}}{{rm{G}}_{rm{y}}}{rm{|}}) G(x,y)max(Gx,Gy)

Sobel算子

这个著名的Sobel边缘算子是一组方向算子,从不同的方向检测边缘。当年作者并没有公开发表过论文,仅仅是在一次博士生课题讨论会(1968)上提出(“A 3x3 Isotropic Gradient Operator for Image Processing”),后在1973年出版的一本专著(“Pattern Classification and Scene Analysis”)的脚注里作为注释出现和公开的。Sobel算子不是简单的求平均差分,而是加强中心像素上下左右四个方向的权重,运算结果是一幅边缘图像。

G x = ⌊ − 1 0 1 − 2 0 2 − 1 0 1 ⌋ G y = ⌊ 1 2 1 0 0 0 − 1 − 2 − 1 ⌋ {G_x} = leftlfloor begin{array}{l} - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 1\- 2{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 2\ {kern 1pt} - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 1 end{array} rightrfloor {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {G_y}{rm{ = }}leftlfloor begin{array}{l} 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} 2{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{1}}\ 0{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{0}}{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {rm{0}}\ - 1{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} - 2{kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} - 1 end{array} rightrfloor {kern 1pt} {kern 1pt} Gx=101202101Gy=121000121

  • 注:Gx水平算子,实际检测垂直方向上的边缘;Gy为垂直算子,实际检测水平方向的边缘。
  • Sobel算子方向
    Sobel算子方向

在这里插入图片描述
梯度幅值与方向:
G ( x , y ) = G x 2 + G y 2 θ = arctan ⁡ ( G y / G y ) begin{array}{l} G(x,y) = sqrt {G_x^2 + G_y^2} \ theta = arctan ({G_y}/Gy) end{array} G(x,y)=Gx2+Gy2 θ=arctan(Gy/Gy)
通常将幅值近似: ∣ G ( x , y ) ∣ = ∣ G x ∣ + ∣ G y ∣ |G(x,y) |= {rm{|}}{{rm{G}}_{rm{x}}}{rm{| + |}}{{rm{G}}_{rm{y}}}{rm{|}} G(x,y)=Gx+Gy

若图像中一个3x3的窗口为A,要计算梯度的像素点为P,则和Sobel算子进行卷积之后,像素点P在x和y方向的梯度值分别为:











参考博客: https://www.cnblogs.com/techyan1990/p/7291771.html

最后

以上就是笑点低黑猫为你收集整理的【图像特征提取(一)边缘特征之Sobel】的全部内容,希望文章能够帮你解决【图像特征提取(一)边缘特征之Sobel】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部