一般情况下我们称外部的形状为父,内部的形状为子。按照这种方式分类,一幅图像中的所有轮廓之间就建立父子关系。这样我们就可以确定一个轮廓与其他轮廓是怎样连接的,它是不是某个轮廓的子轮廓,或者是父轮廓。这种关系就成为组织结构。 在这幅图像中,我给这几个形状编号为0-5。2和2a分别代表最外边矩形的外轮廓内状语从句:轮廓。 在这里边轮廓0,1,2在外
1 凸缺陷 找到凸缺陷 hull=cv2.convexHull(cnt,returnPoints=False) defects=cv2.convexityDefects(cnt,hull) 它会返回一个数组,其中每一行包含的值是【起点,终点,最远的点,到最远点的近似距离】 import cv2 import
1.1长宽比 边界矩形的宽高比 x,y,w,h=cv2.boundingRect(cnt) aspect_ratio = float(w)/h 2.Extent 轮廓面积与边界矩形面积的比 area=cv2.contourArea(cnt) x,y,w,h=cv2.boundingRect(cnt) rect_area=w
什么是轮廓 轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 ·为了准确,要使用二值化图像。需要进行阀值化处理或者Canny边界检测。 ·查找轮廓的函数会修改原始图像。如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。 ·在OpenCV中,查找轮廓就像在黑色背景中超
1.原理 一般情况下,我们要处理是一副具有固定分辨率的图像。但是特别情况下我们需要对同一个图像的不同分辨率的子图像进行处理,如查找图像中的某个目标,如人脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔。就是同一图像的不同分辨率的子图集合。我们把最大的图像放在底部,最小的放在顶部,看起来就像
首先: Canny边缘检测:cv2.Canny() 任务1:原理 步骤1.1 噪音去除 由于边缘检测很容易受到噪音影响,所以第一步是使用5x5的高斯滤波器去除噪音。 步骤1.2 计算图像梯度 对平滑后的图像使用Sobel算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx和Gy)。根据得到的这两幅梯度图找到边界的梯度和方向。公式如下
事先说明 图像梯度原理:简单来说就是求导 OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Laplacian。Sobel和Scharr是求一阶或二阶导数。Scharr是对Sobel(使用小的卷积核求解梯度角度时)的优化,Laplacian是求二阶导数。 任务1:Sobel算子和Scharr算子
本文主要介绍OpenCv对图像的一些基本处理。包括图片、视频读取,读取感兴趣窗口,通道分离与合并,边界填充,直接对像素点进行操作,以及两张图片的融合。 图片的读取 读取图片是OpenCv最基本的功能,实现起来也比较简单,调用cv2.imread()函数即可实现: import cv2 import matplotlib.pyplo
本节主要目的是介绍图像分割的一些基本概念。来源于东北大学 魏颖教授的数字图像课程笔记。 本节重点:1)图像分割的基本概念及图像分割分类的基础;2)边缘分割法;3)阈值分割法;4)区域分割法。 图像分割概述 人类视觉在观察和分析一幅图像时,总是首先将注意力集中在图像中的感兴趣的物体或区域,即将其从其他景物中分离开来,然后对其进
准备了半年多的博士考试终于结束了!现在开始整理半年来没来得及发的一些技术总结。 “C/C++ 图像处理”系列文章是随着本人做东西的先后写成的,文章的前后关系可能不太明显,在这里先跟关注专栏的各位老哥说声抱歉,在“深度学习”系列文章中会尽量改掉这个较为随意的风格,让文章更具可读性。 之前做的项目有关于“图像细化”方面的应用,因此研究了ZhangSuen细化算法,在这里总结
双目相机计算稠密深度点云 1、ZED相机驱动包 2、校准ZED相机 3、运行ELAS 参考资料 接着上一篇的文章实现利用真实的相机计算3D点云,实验中我们使用的是ZED的相机。 1、ZED相机驱动包
本节主要目的是介绍图像压缩的一些基本概念,主要包括图像压缩的基本概念、PCM编码、无损压缩、有损压缩、压缩标准。来源于东北大学 魏颖教授的数字图像课程笔记。 图像压缩的基本概念 数据冗余:表示图像需要大量的数据,例如 512×512×8bit×3色的电视图像,用56k波特在电话线上传输,单幅图像传输需要2分钟左右,这通常是不能接受的。但图像数据是高度
本节主要目的是介绍图像复原一些基本概念,如图像退化/复原过程的模型,图像复原的滤波方法,包括非约束复原(逆滤波)、有约束复原(维纳滤波)、非线性约束还原(最大熵),还有几何失真复原,来源于东北大学 魏颖教授的数字图像课程笔记。 图像退化/复原过程的模型 在图像退化/复原建模之前先得知道什么是图像退化?图像的质量变坏叫做退化。退化的形式有图像模糊、图像有干
在我们进行机械臂抓取实验时候,总是少不了相机的标定环节。我认为相机标定可以分为两个部分。 一个部分是相机外参的标定,也就是获得相机坐标系与世界坐标系的关系,在我们的系统中,世界坐标系是可以自定义的。其中眼在手上的标定,不变的是相机与机械臂末端的坐标转换。通过手眼标定获得这两者的转换,结合机械臂TF树,便可以相机坐标与机械臂基座标的变换,进而获得相机坐标与世界坐标系的变换。而眼在手外的相机标定可以
本节主要目的是介绍图像增强的一些基本概念。来源于东北大学 魏颖教授的数字图像课程笔记。 本节要点 直方图均衡 直方图的基本概念 将图像中像素亮度(灰度级别)看成是一个随机变量, 则其分布情况反映了图像的统计特性,这可用Probability Density Functio
本节主要目的是介绍本书所用到的数字图像的变换,方便之后的处理。来源于东北大学 魏颖教授的数字图像课程笔记。 傅里叶变换 信号处理方法有:时域分析法和频域分析法。 频率通常是指某个一维物理量随时间变化快慢程度的度量。 图像是二维信号,其坐标轴是二维空间坐标轴,图像本身所在的域称为空间域(Space Dom
涉及函数 cv2.erode(),cv2.dilate(),cv2.morphotogyEx() 首先 首先我们看下原始图像: 形态学转换原理: 一般情况下对二值化图像进行操作。需要两个参数,一个是原始图像,第二个被称为结构化元素或者核(kernel),它是用来决定操作的性质的。基本操作为腐蚀和膨胀,他们的变体构成了开运
本节主要目的是介绍本书所用到的数字图像处理的一些基本概念。来源于东北大学 魏颖教授的数字图像课程笔记。 图像的数字化 上一节中获取图像的方式有很多种,大部分是从感知数据生成数字图像。多数传感器的输出是连续的电压波形,我们需要把连续的感知数据转换为数字形式。这种转换包括两种处理:取样和量化。 该式的两边以等效的方式定量的表示了一副数字图像,右边是一个实数矩阵,该矩阵中的每个元素称为
事先准备 使用工具:Python3.5 使用库:cv2,numpy 任务1:2D卷积 同一维信号一样,可以对2D图像实施低通滤波(LPF)和高通滤波(HPF)。LPF用于去除噪音,模糊图像,HPF用于找到图像的边缘。 OpenCV提供的函数cv.filter2D()可以对一幅图像进行卷积操作。练习一幅图像使用平均滤波器。举例下面是一个5X5的平均滤波器核: &n
事前准备 使用工具:Python3.5 使用库:cv2,numpy 原始图像 任务1:简单阀值 涉及函数: cv2.threshold() 当像素值高于阀值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是cv2.threshold()。这个函数
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信