精华内容
下载资源
问答
  • opencv亚像素边缘检测
    千次阅读
    2021-01-28 10:02:57

    一种新的基于 Zernike 正交矩亚像素边缘定位的直径测量方法 [J], 宋晋国; 党 宏社; 洪英; 梁勇 2.一种改进的正交 Fourier-Mellin 矩亚像素边缘检测算法 [C......

    本文提出一种新的亚像素精度的边缘检测算法 . 该方法给出了一种可修正的贝塞尔点扩...

    一种亚像素边缘检测方法_IT/计算机_专业资料。提出一种新的亚像素边缘检测方法,...

    2005 Laser 第 16 卷第 8 期 2005 年 8 月 Journal of Optoelectronics 图像的快速亚像素边缘检测方法 * 刘力双 , 张 铫 , 卢慧卿 , 赵 琳 , 王宝光 ......

    因此利用文献[ 所检测的亚像素边缘点进 。 行跟踪及后续处理 亚像素边缘点不一定位于像点中心, 即其坐 , 标不一定为整数 因此直接利用亚像素边缘点确 定后续......

    在视觉检测 系统中,亚像素边缘的检测、定位精度是其测量的关键,国 内外很多学者对该问题进行了广泛研究,已提出很多边缘检 测方法,如灰度矩法、空间矩法 [1] 、......

    通用亚像素边缘检测算法_盛遵冰_物理_自然科学_专业资料。第 41 卷第 6 期...

    基于亚像素边缘检测的二维条码识别甘摘 岚 1, 刘宁钟 2 (1.华东交通大学信...

    基于Sigmoid函数拟合的亚像素边缘检测方法_数学_自然科学_专业资料。第 3...

    (2014)02—0290.04 基于三次样条插值的亚像素边缘检测方法 孙秋成1...

    Company LOGO 基于海森矩阵的亚像素图像边缘特征提取 班级:信研1403 姓名:杨明 1 亚像素边缘检测意义 亚像素边缘检测方法 2 3 4 5 海森矩阵检测方法原理程序流程......

    摘法 要: 针对传统边缘检测算法的定位精度低 、 对噪声敏感等缺 点, 提 出基于函数 曲线拟合 的亚像素边 缘检测算 梯度方向高斯曲线拟合亚像素定位算 法。该......

    基于反正切函数拟合的亚像素边缘检测方法_电子/电路_工程科技_专业资料。数字图像...

    亚像素边缘定位算法的稳定性分析_数学_自然科学_专业资料。亚像素精度边缘检测 第...

    实验结果表明,该方法的相对定位误差小于1%. 关键词:结构光;格雷码;边缘检测;亚像素定位;拟合 中图分类号:TH471 文献标识码:A ASub-PixelStripeEdgeDetectionBased......

    然而由于各种物理条件(如摄像 机,存储器等)的限制,所获取图像分析的关键步骤,边缘的定位精度直接影响 到尺寸检测的精度。 3.1 基于曲面拟合的亚像素边缘检测方法 ......

    edu. cn 。 一种改进的灰度矩亚像素边缘检测算法罗 ,侯 ,付 钧艳丽 (...

    本文提出了一种改进的基于正交傅里叶变换的新方法,提高了部分数字图像的亚像素边缘检测的准确性。首先,使用这些矩的低径向阶和旋转不变性描述图像中的小物体,其次,......

    【期刊名称】《计量技术》 【年(卷),期】2005(000)002 【总页数】3 页(P14-16) 【关键词】边缘检测;亚像素算法;垂直占空比;计算机视觉 【作者】廖常俊;......

    为目标函数 点数m,未知数n(m>=n),得到超定方程组 BC=Y 机器视觉测量技术 2、常用拟合亚像素边缘定位法 1) 边缘灰度拟合 三次多项式拟合边缘灰度值,拐点为......

    更多相关内容
  • 利用opencv亚像素级别的边缘检测和获取,添加了原有程序的包含文件和库,可以直接调试运行,个边参数可以根据实际情形修改
  • 亚像素级别的边缘检测和获取/SubPixelEdgeDetection/aifeng.bmp亚像素级别的边缘检测和获取/SubPixelEdgeDetection/alf.bmp亚像素级别的边缘检测和获取/SubPixelEdgeDetection/b1.bmp亚像素级别的边缘检测和获取/...

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/aifeng.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/alf.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/b1.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/b2.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/b3.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/b4.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/chip-insp-82.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/chip-insp-83.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/chip-insp-86.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/chip-insp-89.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/chip-insp-95.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cv.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cv.hpp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cv.lib

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cv100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cvaux100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cvcam100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cvcompat.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cvtypes.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cvver.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxcore.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxcore.hpp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxcore.lib

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxcore100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxerror.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxts001.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/cxtypes.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug/ImProcess.obj

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug/main.obj

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug/SubPixelEdgeDetection.exe

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug/SubPixelEdgeDetection.ilk

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug/vc60.idb

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug/vc60.pdb

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/file.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/file_pat_2.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/highgui.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/highgui.lib

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/highgui100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/highgui_c.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Image05.jpg

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/img1.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/ImProcess.cpp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/ImProcess.h

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/libguide40.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/main.cpp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/ml100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/model.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/rect.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/chip-insp-95.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/cv100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/cvaux100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/cvcam100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/cxcore100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/cxts001.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/highgui100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/ImProcess.obj

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/ImProcess.sbr

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/libguide40.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/main.obj

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/main.sbr

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/ml100.dll

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/SubPixelEdgeDetection.bsc

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/SubPixelEdgeDetection.exe

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/Thumbs.db

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release/vc60.idb

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.dsp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.dsw

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.ncb

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.opt

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.plg

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.sdf

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.sln

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.suo

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.vcxproj

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.vcxproj.filters

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/SubPixelEdgeDetection.vcxproj.user

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/t3.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/t6.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/template2.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Thumbs.db

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/wafer1.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/wafer2.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/wafer3.bmp

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/wafer4.bmp

    亚像素级别的边缘检测和获取/基于亚像素的边缘提取,对于图像匹配,缺陷检测有很大帮助8SubPixelEdgeDetection.rar

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/ipch/subpixeledgedetection-24f7be1

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Debug

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/ipch

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection/Release

    亚像素级别的边缘检测和获取/SubPixelEdgeDetection

    亚像素级别的边缘检测和获取

    展开全文
  • 主要介绍了python+opencv边缘提取与各函数参数解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 本发明专利技术提供一种亚像素边缘检测方法,包括如下步骤:获取图像;图像预处理;像素计算;生成亚像素边缘。本发明专利技术采用了像素的像素处理策略,有效地摆脱了由于像素点过大造成的精度丢失问题,能找到...

    本发明专利技术提供一种亚像素边缘检测方法,包括如下步骤:获取图像;图像预处理;亚像素计算;生成亚像素边缘。本发明专利技术采用了亚像素的像素处理策略,有效地摆脱了由于像素点过大造成的精度丢失问题,能找到更为真实的图像边缘,提高了视觉测量的准确性,可作为高精度机器视觉测量的预处理步骤。

    Subpixel edge detection method

    The invention provides a sub-pixel edge detection method, which comprises the following steps of: acquiring an image; image preprocessing; sub-pixel calculation; generating sub-pixel edge. The invention adopts the pixel processing strategy of subpixel, effectively get rid of the pixels caused by excessive loss of precision, can find a real image edge, and improve the accuracy of vision measurement, can be used as a preprocessing step for high precision machine vision measurement.

    【技术实现步骤摘要】

    本专利技术涉及机器视觉

    ,具体涉及一种亚像素边缘检测方法。

    技术介绍

    边缘检测是图像处理和计算机视觉中的基本问题,其目的是标识数字图像中亮度变化明显的点,因为图像属性中的显著变化通常反映了属性的重要事件和变化。边缘检测也是高精度机器视觉测量领域对所获取的图像进行分析判别的必要预处理步骤,在边缘被提取的前提下,其他基于边缘的诸如轮廓检测、尺寸测算等步骤才能进一步展开,从而完成整个高精度机器视觉的流程。目前,流行的方法有Canny算子、Sobel算子等成熟的像素级别的边缘检测算法,但是在现今高精度视觉测量领域,像素级别的边缘检测在精度水平上已经越来越不能满足需求,因此,亚像素边缘检测应运而生。所谓亚像素,就是将原本获取的图像的基础上,将其每个像素点再度进行拆分,使之用比像素更小的“亚像素”单位来表征图像。由于亚像素的尺寸较像素尺寸小,意味着其可以表征的精度比像素要高,可以满足一些较苛刻的高精度机器视觉检测任务的需求。然而,现有的亚像素边缘检测方法,存在由于像素点过大而造成精度丢失的问题,导致图像边缘不太真实,视觉测量的准确性不太高等问题。

    技术实现思路

    本专利技术的目的是提供一种亚像素边缘检测方法,利用亚像素边缘检测的算法对获取图像进行边缘检测,能有效解决由于像素点过大而造成精度丢失的问题,并以此作为高精度机器视觉测量的预处理步骤。为了实现上述目的,本专利技术采用的技术方案如下:一种亚像素边缘检测方法,包括如下步骤:(1)、获取图像;(2)、图像预处理;(3)、亚像素计算;(4)、生成亚像素边缘。根据以上方案,所述步骤(1)包括如下具体步骤:(11)、将物体置于透明玻璃片上;(12)、用远心镜头垂直于玻璃片拍摄照片。根据以上方案,所述步骤(2)包括如下具体步骤:(21)、对获取的图像进行中值滤波;(22)、计算图像中各像素水平梯度;(23)、计算图像中各像素垂直梯度。根据以上方案,所述步骤(3)包括如下具体步骤:(31)、找出像素点中水平梯度大于a的点,该点集合记为A;(32)、找出像素点中垂直梯度大于b的点,该点集合记为B;(33)、将集合A中的水平梯度点最大值和最小值相减得到c;(34)、将集合B中的垂直梯度点最大值和最小值相减得到d。根据以上方案,所述步骤(4)包括如下具体步骤:(41)、将集合A中的水平梯度最大值与A中各个点的水平梯度相减,所得差值除以c,再将该点的横坐标与此结果相减,得到亚像素级别的横坐标;(42)、将集合B中的垂直梯度最大值与A中各个点的垂直梯度相减,所得差值除以d,再将该点的纵坐标与此结果相减,得到亚像素级别的纵坐标;(43)、将横、纵坐标合并得到最终亚像素级别边缘点的坐标。本专利技术的有益效果是:与其他亚像素边缘检测方法相比,本专利技术采用了亚像素的像素处理策略,有效地摆脱了由于像素点过大造成的精度丢失问题,能找到更为真实的图像边缘,提高了视觉测量的准确性。附图说明图1是本专利技术的总流程示意图。具体实施方式下面结合附图与实施例对本专利技术的技术方案进行说明。本专利技术提供一种亚像素边缘检测方法,包括如下具体步骤(见图1):(1)、获取图像:(11)、将物体置于透明玻璃片上;(12)、用远心镜头垂直于玻璃片拍摄照片;(2)、图像预处理:(21)、对获取的图像进行中值滤波;(22)、计算图像中各像素水平梯度;(23)、计算图像中各像素垂直梯度;(3)、亚像素计算:(31)、找出像素点中水平梯度大于a的点,该点集合记为A;(32)、找出像素点中垂直梯度大于b的点,该点集合记为B;(33)、将集合A中的水平梯度点最大值和最小值相减得到c;(34)、将集合B中的垂直梯度点最大值和最小值相减得到d;(4)、生成亚像素边缘:(41)、将集合A中的水平梯度最大值与A中各个点的水平梯度相减,所得差值除以c,再将该点的横坐标与此结果相减,得到亚像素级别的横坐标;(42)、将集合B中的垂直梯度最大值与A中各个点的垂直梯度相减,所得差值除以d,再将该点的纵坐标与此结果相减,得到亚像素级别的纵坐标;(43)、将横、纵坐标合并得到最终亚像素级别边缘点的坐标。本专利技术可应用于机器视觉

    ,作为高精度机器视觉测量的预处理步骤。以上实施例仅用以说明而非限制本专利技术的技术方案,尽管上述实施例对本专利技术进行了详细说明,本领域的相关技术人员应当理解:可以对本专利技术进行修改或者同等替换,但不脱离本专利技术精神和范围的任何修改和局部替换均应涵盖在本专利技术的权利要求范围内。本文档来自技高网...

    【技术保护点】

    一种亚像素边缘检测方法,其特征在于,包括如下步骤:(1)、获取图像;(2)、图像预处理;(3)、亚像素计算;(4)、生成亚像素边缘。

    【技术特征摘要】

    1.一种亚像素边缘检测方法,其特征在于,包括如下步骤:

    (1)、获取图像;

    (2)、图像预处理;

    (3)、亚像素计算;

    (4)、生成亚像素边缘。

    2.根据权利要求1所述的亚像素边缘检测方法,其特征在于,所述步骤

    (1)包括如下具体步骤:

    (11)、将物体置于透明玻璃片上;

    (12)、用远心镜头垂直于玻璃片拍摄照片。

    3.根据权利要求1所述的亚像素边缘检测方法,其特征在于,所述步骤

    (2)包括如下具体步骤:

    (21)、对获取的图像进行中值滤波;

    (22)、计算图像中各像素水平梯度;

    (23)、计算图像中各像素垂直梯度。

    4.根据权利要求1所述的亚像素边缘检测方法,其特征在于,所述步骤

    (3)包括如下具体步骤:

    (31)、...

    【专利技术属性】

    技术研发人员:傅之成,邵卿,李晓强,赵洋洋,

    申请(专利权)人:傅之成,

    类型:发明

    国别省市:浙江;33

    展开全文
  • 整个项目,我重新用opencv包装了,项目地址: https://github.com/fcqing/sub-pixel-edge-detect https://github.com/songyuncen/EdgesSubPix 论文《A Sub-Pixel Edge Detector: an Implementation of theCanny/...

    声明:本篇仅仅是分享网上的开源项目,算法非本人原创。转载文章:

    《A Sub-Pixel Edge Detector: an Implementation of the Canny/Devernay Algorithm》_Naruto_Q的博客-CSDN博客

    整个项目,用opencv包装了,项目地址:

    https://github.com/fcqing/sub-pixel-edge-detect

    https://github.com/CsCsongor/subPixelEdgeDetect

    GitHub - songyuncen/EdgesSubPix: Sub-Pixel Edge Detection Using OpenCV

    论文《A Sub-Pixel Edge Detector: an Implementation of theCanny/Devernay Algorithm》提出了一种基于canny算法进行亚像素级边缘提取的算法,并给出了网页测试demo,可以在上面载入图像进行边缘提取测试,效果不错。这里简要翻译一下论文的方法:

    Canny算法

    针对边缘检测算法的研究有很多,其中Canny算法在这方面具有开创性的贡献,我在之前的博客里总结过canny的原理,这里简要说明一下:

    Canny算子求边缘点具体算法步骤如下:
    1. 用高斯滤波器平滑图像.
    2. 计算梯度幅值和方向

    3. 对梯度幅值进行非极大值抑制

    非极大值抑制(Non-Maxima Suppression method)主要是为了更精确的定位某种特征,比如用梯度变化表征边缘时,梯度变化较大的区域通常比较宽,所以利用x和y方向的梯度确定一个法向arctan(y/x),然后在法向上判断当前梯度测量是否是一个峰值(或局部极大值),如果是就保留,不是极大值就抑制(如设置为0)。这样的话就能将边缘定位在1-2像素宽(相邻像素有时候求极大值的方向恰好互不干扰)。

    4. 用双阈值算法检测和连接边缘.

    5.通过滞后跟踪边缘,抑制所有弱而不强的边缘。

    Devernay亚像素校正算法

    Canny检测出的边缘是像素级别的,而有时需要精度低于一个像素,即亚像素边缘提取,Devernay【3】在Canny算法的基础上进行了拓展:将新的边缘点定义为相邻几个梯度模值差值的最大值,可以通过计算梯度方向上相邻的三点处的梯度模值的二次函数插补。如下图所示:

    上图中,||g(A,B,C)||为三个垂直于边缘方向上的梯度模值,canny算法会选择模值最大的B点作为边缘点。但是,也可能在A和C之间存在点η ,在η 点处的梯度模值大于B点及AC之间的其他点,此时,η 点能更好地表示边缘。论文[3]给出了估计η 点以及计算η 点偏移量的方法,并给出η 的亚像素位置。

    为了减少计算量,论文中只用了三点来进行二次方程拟合,并求出相对于BC向量的补偿 η :

    Devernay亚像素算法准确性

    影响Devernay算法准确性的四个误差来源:

    1.假设梯度满足二次曲线规律带来的误差;

    2.使用有限项计算梯度值带来的误差;

    3.插补计算时有些点的梯度并没有通过canny运算计算出来所带来的误差;(个人理解这里应该是说在非水平和垂直方向上)

    4.数据误差;

    以高斯边缘为例,公式:,其中是高斯核函数,Y是阶梯函数,即:

       (1)

    α 是阶梯函数的系数,下图中左是带亚像素偏移 γ 的高斯边缘特性,右图是使用抛物线估计的边缘点位置,例如途中三点abc,:(−1, a), (0, b) 和(1, c) ,边缘估计点的位置为:

              (2)

    把带偏移 γ 的高斯边缘函数带入,可以得到:

       (3)

    带入(2)式得到:

                (4)

    右图中,高斯梯度与二次方程梯度极大值点偏差为:

     ,

    文中给出了该误差的分布图5:

    当γ=0时,误差为0,因为此时边缘在网格中间位置;当γ=0.5时,误差也为0,因为此时a=b或b=c,二次曲线插补值可以给出正确的偏移;σ越小,边缘越锐利,而σ越大,边缘越模糊,误差反而越小。

    公式(4)也说明了第二种误差来源,即有限差分计算带来的误差。

    亚像素边缘算法改进

    在上面说的四种误差来源中,其中简单地使用水平和垂直方向插补可以有效去除第三种误差。Deverary使用三个点中间的插补值作为边缘, 这里进行修正:当点(x,y)处梯度满足以下条件,此时该点为水平方向的边缘点:

     , 

     ,

    类似的,垂直方向的边缘点也是可以定义出来的。当x和y方向的梯度相等时,默认为还是水平边缘点,这个影响不大。修正方法的误差分布见下图6:

    对比图5,修正方法的误差有了明显的减弱。另外,论文还对比了边缘是倾斜角度时的提取结果,见下图7:

    边缘点链(Edge Point Chaining)

    此前检测边缘点是一个独立过程,每个边缘点并不相关。后续需要将属于同一个边缘轮廓的点集归到一起--链,形成轮廓。每个边缘点对应的应是一个像素点,而不是一个5*5的区域。

    首先,被归为同一链路的像素点应该具有近似的梯度方向,以像素点A和B为例,它们的夹角应小于90度,数学表示为:g(A).g(B)>0。 另外,图像轮廓可以将亮区域和暗区域分开,所以连续的链路需要将暗区域划分到曲线的同一侧,一个简单的方法是验证从边缘点A到点B的向量与点A两个可能的梯度方向中的一个是否近似正交。有两个概念需要介绍一下:前向链路(forward chaining)和后向链路(back chaining)。当 ,其中表示向量v旋转90度,此时成为A-B的前向链路,记为:,反方向称为反向链路。

    一个边缘点至多有一个前向链路,也至多有一个后向链路,而不用有类似 Y 形状的链路。所以在确定AB是否成链前,需要检查A是否已经有前向链路和B是否已经有后向链路。此时可以通过距离来判断,如果新的链路比之前的距离短,那么之前链路就会被斩断,而增加这新的链路,经过这个步骤,边缘点的链接关系就能确定下来了。以下图8为例:

    A,B,C,D四点的距离关系满足:||A-B||>||B-C||>||C-D||,假定链路搜索顺序为:A-B-C,你会发现当我们想时,存在,而且根据CB距离小于AB,所以会被切断;同样地,由于D的存在,也会被切断,所以最后的结果只剩下:。 再假定链路搜索顺序为C-B-A,经过判断过程,剩下这条链路。 所以,最后的链路结果为:

    算法实现

    Canny/Devernay算法主要分为四部分:图像求梯度,计算边缘点,边缘点链路编码,应用canny双阈值等方法,如下图9所示:

    计算图像梯度的方法为算法2,如下图10所示,主要在水平和垂直两个方向上求取梯度:

    求取边缘点及亚像素校正过程,算法3的伪代码如下图11所示:

    可以发现,当某一点的水平方向和垂直方向梯度值相等时,该点可以被归为任意方向上的边缘,不影响结果。最后,边缘点链路编码过程算法4,如下图12所示:

    算法4中的是指边缘点的邻域集合,取5*5,括号里的数字2应该是说邻域集中上下左右不超过2个像素,最后的边缘点取其邻域水平或垂直方向上的局部最大值。当然,过程中包含前向链路和后向链路,算是的子集。

    最后,算法5描述了canny算法的应用,如下图13所示:

    测试结果

    算法中的输入参数除了被检测图像外,还有高斯函数的标准差S,canny算法的双阈值H和L,在线测试网址请点击

    可见,当S取不同值是,边缘的粗细间隔是不一样的。S越大,边缘越粗些。

    后记:第一次把英文文献翻译在CSDN上面,感慨大略看懂到能够翻译出来还是有一段距离的。

    整个项目,我重新用opencv包装了,项目地址:

    GitHub - fcqing/sub-pixel-edge-detect: this project is for searching an image's edge

    GitHub - CsCsongor/subPixelEdgeDetect: An image edge detector is described which produces chained edge points with sub-pixel accuracy.The method incorporates the main ideas of the classic Canny and Devernay algorithms. Theanalysis shows that a slight modification to the original formulation improves the sub-pixelaccuracy of the edge points.

    https://github.com/songyuncen/EdgesSubPix

    参考

    https://en.wikipedia.org/wiki/Canny_edge_detector

    http://blog.csdn.net/qq_14845119/article/details/52064928

    《A non-maxima suppression method for edge detection with sub-pixel accuracy》

    http://ipolcore.ipol.im/demo/clientApp/demo.html?id=216

    展开全文
  • 亚像素边缘提取方法总结

    万次阅读 多人点赞 2017-04-11 10:08:37
    亚像素边缘技术概述 数字图像的边缘检测是图像分割、目标识别、区域形状提取等图像处理领域的重要基础。在进行图像理解和分析时,第一步往往是边缘检测。 1965年,L.G.Roberts最早开始系统研究边缘检测。最早提出...
  • 亚像素边缘提取程序

    热门讨论 2011-09-19 16:34:23
    通过求高斯梯度的方法进行亚像素级别的图像边缘提取,效果不错,附有运行结果图。
  • OpenCV实现基于Zernike矩的亚像素边缘检测

    万次阅读 多人点赞 2017-04-09 17:17:16
    在做物体检测时,由于...从而得到像素级别的边缘点的坐标(也就是float类型的坐标),一般来说,现有的技术可以做到2细分、4细分,甚至很牛的能做到更高,通过亚像素边缘检测技术的使用,可以节约成本,提高识别精
  • 一种快速亚像素边缘检测算法的实现的理论,可以快速实现像素的算法,在时间上有一定的优势,先看理论,然后自己通过理论用C++实现
  • 使用opencv的canny算子提取图像的边缘提取出的轮廓比较清晰
  • opencv实现图像的边缘提取

    千次阅读 2020-03-11 15:20:57
    利用opencv编写实现下图的边缘提取 二、实验内容 利用opencv python实现边缘提取 (1)在python安装opencv库 如果安装了python,直接安装:pip install opencv-python 测试是否安装成功:python命令行输入import cv2...
  • 基于多项式插值的亚像素边缘定位算法

    万次阅读 多人点赞 2019-11-20 11:31:51
    基于多项式插值的亚像素边缘定位算法 OpenCV, C++, 有图有真相
  • 亚像素边缘检测源代码

    热门讨论 2010-07-29 19:08:31
    本压缩包包括一个亚像素边缘检测源代码,以及一个测试图片,从像素的角度去解决边缘检测问题,并且与Canny算子做比较,效果显著!
  • 亚像素边缘提取的例子

    万次阅读 2016-08-19 10:05:50
    求帮忙下载: ... pkma75 资源积分:1分 ...备注:pdf格式,用曲线拟合的方法计算亚像素,编程易实现,具有较强的实用价值   2.http://download.csdn.net/detail/kuailechengzi/4408229 上 传 者:kuailec
  • 实现的功能就是将彩色图片变成灰白的,并对灰度图片作边缘提取操作。下图展示的是灰度图和边缘图。 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp...
  • opencv进行图片边缘提取(roberts) roberts算法是图像边缘提取的基础算法,下边的代码是该算法的实现,能够对一张图片进行边缘提取。 # roberts边缘提取算法 #各类提取算法大同小异:sobel可控制核的大小,对于n阶...
  • """ 亚像素处理 """ root2 = np.sqrt(2.0) tri_list = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]] for i in range(kernels_Num): tri_list[0][i] = np.cos(angle_list[i] * np.pi / 180.0) # sin前面的负号非常关键, ...
  • 关注公号【开发小鸽】,获取海量计算机视觉与深度...所以我们需要进行亚像素定位:插值方法基于图像矩计算曲线拟合方法(高斯曲面,多项式,椭圆曲面)二. TermCriteria模板类先介绍一下TermCriteria模板类,这个类是...
  • 提取后的亚像素边缘散点如下: 由于亚像素级别的点太小,肉眼可能不好辨识,这边放一下局部效果图: 之后根据八邻域算法进行改进,提出了一种边缘亚像素点连线的方法: import random import cv2 from tqdm ...
  • 基于opencv亚像素级角点检测

    热门讨论 2009-12-11 16:11:48
    基于opencv亚像素级角点检测,程序通过调用opencv函数实现角点检测,有详细的注释
  • 亚像素角点 角点的定义就是在原图上很突出的点,一般意义上,这种点在两个正交方向上的梯度都很明显,所以就先将其理想为国际象棋棋盘的样子。 那么要求角点的亚像素精度的坐标,需要的就是找坐标的约束。 如上图...
  • opencv像素边缘

    2012-09-26 15:48:42
    opencv 求单像素边缘 参数包括原始二值化图像,目标边缘结果图像
  • 亚像素边缘检测算法

    2018-11-24 10:25:59
    象素边缘提取技术, 比较实用。在分析Tabatabai提出的灰度矩亚像素边缘检测算法的基础上,指出灰度矩算法存在 边缘判断条件不够完善和未能考虑模板效应的问题,提出了改进方法,考虑Tabatabai的灰度矩算 法产生很...
  • C++亚像素边缘定位算法(精度0.01)

    千次阅读 2021-11-30 21:34:44
    比如说你在亚太赛得A题这个图: 解决方案还可以采用这个热大佬得方法,并不是我写的,学一下哇。 首先,配置opencv,我写了教程: ...基于多项式的亚像素边缘定位算法 我还没测试)有空再给你们测试吧,自己试试。 ...
  • 这篇文章主要介绍了opencv python Canny边缘提取实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下Canny是边缘提取算法,在1986年提出的是一个很好的...
  • opencv_18 Sobel边缘提取

    2020-04-25 11:09:10
    //边缘像素发生阶跃的地方,使图像的显著特征之一,对图像求一阶导数,提取边缘。 //对图像求导,如下图。左边是原图像素图像,右边是像素变化率的图像。 //Sobel 算子:计算图像灰度的近似梯度。 //Sobel 算子...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,402
精华内容 4,160
关键字:

opencv亚像素边缘提取