码迷,mamicode.com
首页 > 其他好文 > 详细

sobel算子原理与实现

时间:2020-01-22 13:13:08      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:运算   csdn   pen   方法   简介   abs   div   像素   atp   

简介

  sobel算子是图像边缘检测的最重要的算子之一,在机器学习,数字媒体、计算机视觉等领域起着重要作用。本文主要介绍sobel算子的计算过程。python实现过程和python中相关函数的介绍。方便读者实际中使用。

原理

  边缘是指在图像上像素灰度变化最显著的地方,边缘检测算子则利用图像边缘灰度的突变来检测边缘。Sobel算子包含两组3X3的滤波器,分别对水平和垂直方向上的边缘敏感。

技术图片

  让两个方向模板分别沿着X轴、Y轴与图像做卷积,方向是从上到下和从左到右。将模板的中心和图像上的某个像素重合,并将该像素周围的点与模板上的系数相乘,如(3)和(4)所示,其中G(x)和G(y)分别表示横向及纵向边缘检测的图像梯度值。

         G(X) = (X+ 2X+ X9)-(X+ 2X+ X7)

         G(Y) =   (X1 +2X2 +X3) - (X7 + 2X8 + X9)  

  图像上每个像素点的横向及纵向梯度值通过如下公式结合,来计算该点梯度值G的大小:

               G = √Gx2+Gy2  

        为了减少运算时间,提高运算效率,可以使用绝对值求和近似的方法代替开平方:

    G = ¦Gx¦ + ¦Gy ¦

  最后选取合适的阈值,将像素点的灰度值与阈值进行比较,若大于阈值,则改点为图像的边缘点。由于Sobel算子对于像素的位置影响做了加权,可以降低边缘模糊程度,与Prewitt算子,Roberts相比效果更好。

python实现
 sobel算子在python中的实现有两种途径:opencv和skimage。全部代码如下:

from skimage import data,filters,img_as_ubyte
import matplotlib.pyplot as plt
import cv2

# 图像读取
img = data.camera()
plt.imshow(img,plt.cm.gray)

‘‘‘**********skimage*************‘‘‘
# sobel边缘检测
edges = filters.sobel(img)
# 浮点型转成uint8型
edges = img_as_ubyte(edges)
# 显示图像
plt.figure()
plt.imshow(edges,plt.cm.gray)

# sobel 水平方向边缘检测
edgesh = filters.sobel_h(img)
edgesh = img_as_ubyte(edgesh)
plt.figure()
plt.imshow(edgesh,plt.cm.gray)

# sobel 竖直方向边缘检测
edgesv = filters.sobel_v(img)
edgesv = img_as_ubyte(edgesv)
plt.figure()
plt.imshow(edgesv,plt.cm.gray)

‘‘‘**********opencv*************‘‘‘
# sobel边缘检测
edges = cv2.Sobel(img,cv2.CV_16S,1,1) 
# 浮点型转成uint8型
edges = cv2.convertScaleAbs(edges) 
plt.figure()
plt.imshow(edges,plt.cm.gray)

# sobel 水平方向边缘检测
edges = cv2.Sobel(img,cv2.CV_16S,1,0) 
edgesh = cv2.convertScaleAbs(edgesh) 
plt.figure()
plt.imshow(edgesh,plt.cm.gray)

# sobel 竖直方向边缘检测
edges = cv2.Sobel(img,cv2.CV_16S,0,1) 
edgesv = cv2.convertScaleAbs(edgesv) 
plt.figure()
plt.imshow(edgesv,plt.cm.gray) 

  

————————————————
原文链接:https://blog.csdn.net/weixin_41500849/article/details/80611263

sobel算子原理与实现

标签:运算   csdn   pen   方法   简介   abs   div   像素   atp   

原文地址:https://www.cnblogs.com/hujingquan/p/12228246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!