精华内容
下载资源
问答
  • Python+OpenCV图像处理之边缘提取

    千次阅读 2020-04-23 11:25:09
    在图像处理中,边缘提取是一种基础的图像处理算法,常用于图像识别以及跟踪领域,为进一步分析和理解图像做准备,下面介绍两种不同的图像边缘检测方法。 二、边缘检测方法 本文介绍的边缘检测方法包括直接使用高斯...

    一、简介

    在图像处理中,边缘提取是一种基础的图像处理算法,常用于图像识别以及跟踪领域,为进一步分析和理解图像做准备,下面介绍两种不同的图像边缘检测方法。

    二、边缘检测方法

    本文介绍的边缘检测方法包括直接使用高斯滤波器检测和Canny边缘检测两种方法。

    1.高斯滤波器提取边缘特征

    高斯滤波是一种线性平滑滤波,可以用于消除图像中的高斯噪声。简言之,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。下面用代码显示一下处理效果:

    import cv2
    img = cv2.imread("gaosi.jpg",0)
    blurred = cv2.GaussianBlur(img,(11,11),0) #高斯矩阵的长与宽都是11,标准差为0
    gaussImg = img - blurred
    cv2.imshow("Image",gaussImg)
    cv2.waitKey(0)
    

    原图:

    处理后:
    在这里插入图片描述

    2.Canny边缘特征提取

    Canny边缘检测是一种非常流行的边缘检测算法,是由John F.Canny 在1986 年提出的,Canny边缘检测算法被很多人推崇为当今最优秀的边缘检测算法,关键步骤有两步,即图像去噪和设置阈值来确定边界。
    图像去噪:由于边缘检测很容易受到噪声的影响,所以首先要使用高斯滤波器来去除噪声;
    设置阈值:对于边界的确定需要我们来设置两个阈值,minv和maxv,当图像的灰度梯度高于maxv时,被认定为真的边界,图像的灰度小于minv时,则被舍弃,倘若灰度梯度介于两者之间,要看这个点是否与某个被认定为真的边界点相连,如果是,就被认为是真的边界点,反之则舍弃。如下图所示,A点高于阈值maxv,所以直接被认定真的边界点,B点和C点虽然都介于minv和maxv之间,但是C点与A点相连,所以也被看作是边界点,B点不与边界点相连,所以被舍弃。
    在这里插入图片描述

    下面是Canny边缘检测代码:

    import cv2
    img = cv2.imread("z2.jpg",0)
    blurred = cv2.GaussianBlur(img,(11,11),0)
    gaussImg = cv2.Canny(blurred, 10, 70)
    cv2.imshow("Img",gaussImg)
    cv2.waitKey(0)
    

    原图:
    在这里插入图片描述
    处理后:
    在这里插入图片描述
    以上就是文章的所有内容,如果本文对你有帮助,可以给我点个赞,加个关注,谢谢!

    展开全文
  •  3,卷积图片所有的像素后,把新的矩阵数据类型转化为uint8 注意:  必须对求得的卷积和的值求绝对值;矩阵数据类型进行转化。 完整代码: import cv2 import numpy as np # robert 算子[[-1,-1],[1,1]] def ...
  • Canny 的目标是找到一个...(3)检测点与边缘点一一对应:算子检测的边缘点与实际边缘点应该是一一对应 Canny边缘检测算法可以分为以下5个步骤: 应用高斯滤波来平滑图像,目的是去除噪声 找寻图像的强度梯度(intensity

    Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:
    (1)最优检测:算法能够尽可能多地标识出图像中的实际边缘,漏检真实边缘的概率和误检非边缘的概率都尽可能小;
    (2)最优定位准则:检测到的边缘点的位置距离实际边缘点的位置最近,或者是由于噪声影响引起检测出的边缘偏离物体的真实边缘的程度最小;
    (3)检测点与边缘点一一对应:算子检测的边缘点与实际边缘点应该是一一对应
    Canny边缘检测算法可以分为以下5个步骤:
    应用高斯滤波来平滑图像,目的是去除噪声
    找寻图像的强度梯度(intensity gradients)
    应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)
    应用双阈值的方法来决定可能的(潜在的)边界
    利用滞后技术来跟踪边界
    python实现源码如下:

    import cv2
    
    def edge_demo(image):
        blurred = cv2.GaussianBlur(image, (3, 3), 0)
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        xgrad = cv2.Sobel(gray, cv2.CV_16SC1, 1, 0)
        ygrad = cv2.Sobel(gray, cv2.CV_16SC1, 1, 0)
        # edge_output = cv2.Canny(xgrad, ygrad, 50, 150)
        # cv2.imshow("Vannt_edge",edge_output)
        edge_output = cv2.Canny(gray, 50, 150)
        cv2.imshow("canny edge", edge_output)
        dst = cv2.bitwise_and(image, image, mask=edge_output)
        cv2.imshow("color edge", dst)
    
    
    if __name__ == "__main__":
        img = cv2.imread("image/img5.jpg")
        cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
        cv2.imshow("input image", img)
        edge_demo(img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    

    直接调用Canny算法在单通道图像中查找边缘

    cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges

    参数:image-8位输入图像

    threshold1-设置的低阈值

    threshold2-设置的高阈值,一般高低阈值的比例为3:1或者2:1

    运行结果如下
    在这里插入图片描述
    如果使用带自定义图像渐变的Canny算法在图像中查找边缘

    cv2.Canny(dx, dy, threshold1, threshold2[, edges[, L2gradient]]) -> edges

    参数:dx-输入图像的x导数(x导数满足16位,选择CV_16SC1或CV_16SC3)

    dy-输入图像的y导数(y导数满足16位,选择CV_16SC1或CV_16SC3)

    threshold1-设置的低阈值

    threshold2-设置的高阈值,一般高低阈值的比例为3:1或者2:1

    运行结果如下:
    在这里插入图片描述
    转载自:https://www.cnblogs.com/qianxia/p/11097342.html

    展开全文
  • 拉普拉斯算子是二阶微分,由于图像是坐标系中离散的,微分方程如下: 对应的算子矩阵如下: 那就尝试一下,cv库有自带的拉普拉斯函数 cv2.Laplacian,此处自写,加强理解。 import numpy import cv2 def ...

    两年的研究僧图像处理经验告诉我,微分锐化,积分平滑,至于为什么,仔细想想微分和积分的曲线图就知道了。

    拉普拉斯算子是二阶微分,由于图像是坐标系中离散的点,微分方程如下:

    二阶微分推导过程如下:

    对应的算子矩阵如下:

    那就尝试一下,cv库有自带的拉普拉斯函数 cv2.Laplacian,此处自写,加强理解。

    import numpy
    import cv2
    
    def laplace2(img):
        g = numpy.array(((0, 1, 0), (1, -4, 1), (0, 1, 0)))
       # g = numpy.array(((1, 1, 1), (1, -8, 1), (1, 1, 1)))
        re = numpy.zeros_like(img)    #生成与img相同shape的全0数组
        for i in range(1, img.shape[0] - 1):
            for j in range(1, img.shape[1] - 1):
                re[i, j] = (img[i-1 : i+2, j-1 : j+2] * g).sum()#+img[i,j]
        cv2.imwrite('./'+'1.jpg',re)
        return re
    
    img=cv2.imread('demo.jpg')
    img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
    laplace2(img)

    背景噪声还是很多的,所以通常先用高斯滤波消除噪声,本博客只是一个简单粗暴的实验,图片禁止盗取~ 

    由此延伸,拉普拉斯算子是图像的二阶导,可以检测图像灰度值的快速变化,拉普拉斯算子经常用于图像的边缘检测。正常图像中边界清晰,经拉普拉斯计算后方差较大;模糊图像边界信息少,方差小。所以,可以利用拉普拉斯算子做图像的模糊检测。

    一句代码搞定,cv2.Laplacian(image, cv2.CV_64F).var()。然后根据样本设置合适的阈值。

     

    展开全文
  • 图像边缘检测的原理是检测出图像中所有灰度值变化较大的,而且这些连接起来就构成了若干线条,这些线条就可以称为图像边缘。 二、canny 算法五步骤 高斯模糊 灰度转换 计算梯度 非最大信号抑制 高低...

    一、什么是边缘检测

    图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。


    二、canny 算法五步骤

    1. 高斯模糊
    2. 灰度转换
    3. 计算梯度
    4. 非最大信号抑制
    5. 高低阈值输出二值图像

    三、示例代码

     

    import cv2 as cv
    import numpy as np
    
    
    def edge(img):
        #高斯模糊,降低噪声
        blurred = cv.GaussianBlur(img,(3,3),0)
        #灰度图像
        gray=cv.cvtColor(blurred,cv.COLOR_RGB2GRAY)
        #图像梯度
        xgrad=cv.Sobel(gray,cv.CV_16SC1,1,0)
        ygrad=cv.Sobel(gray,cv.CV_16SC1,0,1)
        #计算边缘
        #50和150参数必须符合1:3或者1:2
        edge_output=cv.Canny(xgrad,ygrad,50,150)
        #图一
        cv.imshow("edge",edge_output)
    
        dst=cv.bitwise_and(img,img,mask=edge_output)
        #图二(彩色)
        cv.imshow('cedge',dst)
    
    src=cv.imread('15.jpg')
    #图三(原图)
    cv.imshow('def',src)
    edge(src)
    cv.waitKey(0)
    cv.destroyAllWindows()
    
    图一

     

    图二

    图三

    觉得不错打赏一下

     

    展开全文
  •  3,卷积图片所有的像素后,把新的矩阵数据类型转化为uint8 注意:  必须对求得的卷积和的值求绝对值;矩阵数据类型进行转化。 完整代码: import cv2 import numpy as np # robert 算子[[-1...
  • Canny是边缘检测算法,是一个很好的边缘检测器,很常用也很实用。...非最大信号抑制通俗意义上是指寻找像素局部最大值,将非极大值所对应的灰度值置为0,这样可以提出一大部分非边缘。 ...
  • Python 使用cv2.canny 进行图像边缘检测

    千次阅读 2020-12-16 10:01:41
    CV2提供了提取图像边缘的函数canny。其算法思想如下: 1. 使用高斯模糊,去除噪音(cv2.GaussianBlur) 2. 灰度转换(cv2.cvtColor) 3. 使用sobel算子,计算出每个的梯度大小和梯度方向 4. 使用非极大值...
  • python+OpenCV图像处理(八)边缘检测

    万次阅读 多人点赞 2018-08-08 00:25:13
    图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于查找一类和基于零穿越的一类。基于查找的方法通过寻找...
  • 在进行实战项目之前,我们先来学习一个知识:连通域的外界矩形 寻找外接矩形有两种策略: 一种是寻找轮廓边缘的部分, 找到最外面的那个外接矩形, 为了区分, 我们称之为正外接矩形 boundingRect, 如下图绿色矩形...
  • img: 待检测的图像。 threshold: 阈值,可先项,默认为10 line_length: 检测的最短线条长度,默认为50 line_gap: 线条间的最大间隙。...下面,我们用canny算子提取边缘,然后检测哪些边缘是直线? ...
  • 在进行实战项目之前,我们先来学习一个知识:连通域的外界矩形 寻找外接矩形有两种策略: 一种是寻找轮廓边缘的部分, 找到最外面的那个外接矩形, 为了区分, 我们称之为正外接矩形 boundingRect, 如下图绿色矩形...
  • 边缘检测是图像处理和计算机视觉的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的,图像属性中的...图像边缘检测大幅度的减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。 ...
  • 概述 卷积 从公式可以看出来对原函数平移并与核相乘,就是...sobel算子是一种经典的边缘提取算子,以sobel为例进行卷积运算。 代码 # -*- coding: utf-8 -*- """ Created on Fri Apr 26 03:01:26 2019 sobel ...
  • 文章目录gradients and edge detection梯度和边缘检测1 laplacian拉普拉斯算子2 sobel算子3 canny edge detector边缘探测contours轮廓1 counting coins数...边缘检测,就是用数学方法找出一幅图像中像素值突变的...
  • Python+OpenCV实现sobel边缘检测

    千次阅读 2019-04-05 21:45:00
    sobel边缘检测即实现对图像边缘提取,输入为一幅图像,输出为图像轮廓。 sobel算法步骤: (1)将输入图像转为灰度图; (2)对灰度图进行二值化处理(此过程采用otsu二值化算法,具体otsu算法参看上一篇博客); ...
  • 文章目录问题背景图像的匹配特征提取主要算法Harris角检测基本原理实现过程结果描述子原理实现结果SIFT(尺度不变特征变换)特征提取特征描述兴趣原理实现过程描述子原理实现过程匹配地理标记图像 问题背景 图像...
  • 其基本思想是:在图像中设计一个局部检测窗口,当该窗口沿各个方向做微小移动时,考察窗口的平均能量变化,当该能量变化超过设定的阈值时,就将窗口的中心像素点提取为角点。 在角点处,任意方向移动,窗口灰度值均...
  • 使用OpenCV-python提取图片中的硬币

    千次阅读 2019-10-04 15:32:21
    大致思路如下 对图片做降噪滤波处理 ...使用canny算子进行边缘查找,并使用findContours方法提取边缘坐标。 使用boundingRect方法找出硬币所在的矩形进行裁切,使用minEnclosingCircle找出包络圆作为蒙...
  • 图中(a)显示了从图中(b)中的一段中提取出来的一幅图像。图中(b)显示了一条水平灰度剖面线。该图形还显示了灰度剖面的一阶导数和二阶导数。当沿着灰度剖面从左到右移动时,我们注意到,在斜坡的开始处和在斜坡上的...
  • 我们将专注于可在第2卷中训练这些功能的学习算法,其应用包括应用各种滤波器,执行边缘检测,阈值处理,图像处理和变换技术,使用斑点/轮廓和图像分割技术。 下一部分将介绍将计算机视觉技术与机器学习相结合的应用...
  • 目录 一:SIFT算法的特征原理描述 1.尺度空间的搭建 ​2....3. 对上一过程中得出的候选极值进行筛选,去除边缘响应,...二:分别运用SIFT和Harris算法,实现图像的特征提取 三:对两张图片进行SIFT特征匹配...
  • 撰写本文的主要目的是,在使用PYTHONPYTHON强制执行的图像中,检测出更多具有良好强度,良好对比度和较少噪点的边缘。对获得的结果进行了研究,从而进行了提及,突出了技术的性能。 因此,本文采用现有技术,对...
  • 一.局部图像描述子 1.Harris角检测 角特征: 1.轮廓之间的交点。 2.对于同一场景,即使视角发生变化,通常具备稳定性质的特征。...Harris 算子是一种简单的特征提取算子,这种算子受信号处...
  • 深度学习提取的特征信息不能直接使用,采用传统图像处理的方式对直线特征进行聚类与拟合。 端到端的深度学习的方法 直接从输入图像中学习到车道线特征,无需复杂的预处理、手工特征提取和后处理,并结合车道线的...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

python图像边缘点提取

python 订阅