图像轮廓之轮廓拟合

您所在的位置:网站首页 opencv轮廓拟合 图像轮廓之轮廓拟合

图像轮廓之轮廓拟合

2023-05-29 23:29| 来源: 网络整理| 查看: 265

  在计算轮廓时,可能并不需要实际的轮廓,而仅需要一个接近于轮廓的近似多边形。OpenCV提供了多种计算轮廓近似多边形的方法。

  函数cv2boundingRect()能够绘制轮廓的矩形边界。该函数的语法格式为:

式中:

这里的4个返回值分别表示:

函数cv2minAreaRect()能够绘制轮廓的最小包围矩形框,其语法格式为:

式中:

函数cv2minEnclosingCircle()通过迭代算法构造一个对象的面积最小包围圆形。该函数的语法格式为:

式中:

在OpenCV中,函数cv2fitEllipse()可以用来构造最优拟合椭圆。该函数的语法格式是:

式中:

在OpenCV中,函数cv2fitLine()用来构造最优拟合直线,该函数的语法格式为:

式中line为返回值,是返回的最优拟合直线参数。 式中的参数如下:

在OpenCV中,函数cv2minEnclosingTriangle()用来构造最小外包三角形。该函数的语法格式为:

式中有两个返回值:

函数cv2approxPolyDP()用来构造指定精度的逼近多边形曲线。该函数的语法格式为:

式中,返回值approxCurve为逼近多边形的点集。 式中的参数如下:

例1216使用函数cv2fitEllipse()构造最优拟合椭圆。

制作的时候出了问题。7nm 制程工艺中各特征尺寸是如何通过光刻技术实现作说明,而对于7nm 制程工艺中其他的应变硅技术(strained silicon)、HKMG技术等不作讨论。首先我们看一下7nm 工艺制程的特征尺寸和工艺参数,找出其中最小的特征尺寸,比如 fin width 6nm, fin pitch 27/30nm,gate length 8/10nm,minimum metal pitch 36/40nm,gate pitch 54/57nm,我们需要考虑的问题就是如何通过光刻工艺来实现这些特征尺寸。7nm Node目前可以实现7nm 制程的只有台积电和三星两家,三星是从一开始就使用EUV光刻机来实现,而台积电则是从DUV开始实现,然后再转向EUV 。也就是说,目前7nm 制程工艺使用DUV 和 EUV 都是可以实现的,下面就DUV 和 EUV 两种设备的实现方法分别说明。关于光刻机的分辨率不再作过多介绍,DUV设备以可以实现最高分辨率的是 ASML 193nm DUV光源、 NA 135的浸入式光刻机(immersion),设备型号一般是从NXT1950到 NXT2000。对于这一特征波长和NA的光刻机,能够实现的分辨率极限就是38nm,单次曝光形成的图形是不可能小于这个极限值的。ASML NXT光刻机那么如何使用分辨率极限为38nm 的光刻机来实现7nm 制程工艺呢?最主要的两种方法就是双重曝光技术(double exposure,DE) 和自对准双重成像技术 (self-aligned double patterning, SADP)。双重曝光就是采用两次分别曝光不同图形,两次曝光图形的叠加来实现更小的分辨率,当然必要的时候也可以三重甚至是更多重图形的叠加来实现更小的分辨率。双重曝光的缺点是增加了光刻工艺的使用,并且对每次光刻图形之间的套刻误差(overlay)也有更高的要求,因此增加了工艺的复杂度和成本。相比较而言, SADP 技术就要简单得多,SADP 技术可以相对轻松地实现光刻图形尺寸减缩小一倍,也就是说使用上述DUV 光刻机结合SADP 技术是可以实现20nm 的图形。上文中7nm 工艺参数中的 DP(193i) 指的就是使用193nm immersion 光刻机和SADP 技术。我们找到了台积电7nm 的Design Rules, 可以看到7nm 制程工艺总共用到了13个金属互联层,M0~M12,其中Fin是最小尺寸(6nm),使用了SAQP技术(后续介绍);然后是Poly ,也就是多晶硅 Gate 工艺 ,以及前端的几个线宽比较小的金属互联工艺 M0~M4 都使用到了SADP 技术。

边缘检测虽然能够检测出边缘,但是边缘不是连续的,检测到的边缘不是一个整体。 图像轮廓是指将边缘连接起来形成一个整体

cv2RETR_LIST:对检测到的轮廓不建立等级关系

cv2RETR_EXTERNAL:只检测外轮廓

cv2RETE_CCOMP:检测所有轮廓并组织成两级层次结构,上面一层为外边界,下面一层为内控的边界 (注:当含有多个层次结构时,其也只会得到两层的层次结构,而TREE会得到多层)

cv2RETR_TREE:建立一个等级树结构的轮廓

如何表达轮廓

cv2CHAIN_APPROX_SIMPLE :压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点元素

cv2CHAIN_APPROX_NONE:存储所有轮廓点

返回值image:绘制了轮廓的图像 参数: image:待绘制轮廓的图像,会在image上直接绘制,后续如果image原始图像有用,需要先复制备份 contours:需要绘制的轮廓 contourIdx:一个整数或者0,表示对应的索引号;-1表示绘制全部轮廓

thickness:-1,表示绘制实心轮廓

绘制一副图像中的所有轮廓

逐个显示一幅图像中的边缘信息

使用轮廓绘制功能,提取前景图像

比较两个轮廓最简单的方法是比较二者的轮廓矩。 轮廓矩代表了一个轮廓,一幅图像,一组点集的全部特征 ,矩信息包含了对应对象的不同类型的几何特征,例如大小,位置,角度,形状等。如果两个轮廓的矩一致,那么这两个轮廓就是一致的。

矩特征被广泛应用在 模式识别 和 图像识别 方面

空间矩(m00表示轮廓的面积) 中心矩(比较不同位置上两个对象的一致性) 归一化中心矩(不仅具有平移不变性,还具有缩放不变性)

array:可以是点集,灰度图像,二值图像 binaryImage: 该参数为True时 ,arry内所有的非零值被处理为1, 也就是二值化 , 仅在array为图像时有效

oriented: True,返回值包含正负号,用来表示轮廓是顺时针还是逆时针 False,表示返回的retval是一个绝对值

closed: True,轮廓封闭 False,轮廓不封闭

Hu矩是归一化中心矩的线性组合。 Hu矩在图像旋转,平移,缩放等 *** 作后,仍能保持矩的不变性 ,所以经常拿Hu矩作为识别图像的特征

其中,hu是表示返回的Hu矩值,m是由参数cv2moments()计算得到的矩特征值

由于Hu矩的值本身就非常的小,因此这里没有发现两个对象的Hu矩差值的特殊意义

通过Hu矩来判断两个对象的一致性

其中 retval返回左上角顶点的x,y以及宽和高(x,y,w,h)

采用cv2boundingRect()和cv2rectangle()绘制矩形包围框

此处返回的[最小外接矩形中心,(宽,高),旋转角度],必须经过下面函数

此处的points值再经过npint0()取整,可以应用于cv2drawContours()

retval:最小外包三角形的面积 triangle:最小外包三角形的三个顶点集

注意:三个顶点集的坐标必须转化为整数

返回值:逼近多边形的点集 参数:轮廓,原始轮廓边界点与逼近多边形边界之间的最大距离,True:封闭;False不封闭

DP算法:该算法首先从轮廓中找到距离最远的两个点,并且将两点相连。接下来在轮廓上找到一个距离当前直线最远的点,并且将该点与原有直线连成一个封闭多边形,上述过程不断迭代,将新的找到的距离当前多边形最远的点加入到结果中。当轮廓上所有的点到当前多边形的距离都小于函数cv2approxPolyDP()的参数epsilon的值时,就停止迭代

构造不同精度的逼近多边形

#include #include #include using namespace std;int main(int argc, char argv[]){vector vec1(1, "C++"), vec2(1); // 要给vec2初始化空间,不然你用vec2[index]就取到非法内存地址了for (vector::size_type index=0; index!=vec1size(); ++index){vec2[index] = vec1[index];cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3