当自变量从x变到x+1时,函数y=y(x)一阶差分的差分
注意这的几个因变量对应的自变量之间均分别相差1
其实这里应该先了解一阶差分的概念由于比较简单这里不多赘述
2.理解一阶微分的含义
如果我们把自变量之间的间距表示为△x=(x-x0)
这里的dx就是一阶微分的通常表达形式
3.理解二阶微分的含义
当我们把二阶差分里的间距从1缩小到dx时就形成了二阶微分
一阶微分通常记作df(x)
对于二阶微分通常记作d^2f(x)
注意:因为接下来讨论的导数必须涉及所求点的函数值所以这里把中间点定为f(x)
5.熟记二阶导数的定义
6.推导二阶导数的微分形式
不难看出式中的分子就是f(x)的二阶微分而分母就是x一阶微分的平方
由前面的 2 和 3 可得分子分母分别可以表示为d^2f(x)和dx^2
计算机视觉,我们前期文章分享了很多关于类似这方面的文章,包括人脸识别三部曲,目标检测,目标追踪等,本期文章,我们介绍一下如何使用opencv来进行条形码的检测,毕竟超市里面的物品都是有价格条形码,如何进行opencv条形码的检测,便成了无人超市需要重点关注并需要解决的问题
首先我们导入需要进行检测的图片,并把RGB颜色空间的图片转换成灰度照片
然后,我们使用cv.sobel算子进行图片的X Y 轴的边缘检测,并使用cv2.subtract(gradX, gradY)计算图片的梯度,以Sobel算子计算x,y方向上的梯度,之后在x方向上减去y方向上的梯度,通过这个减法,我们留下具有高水平梯度和低垂直梯度的图像区域,然后cv2.convertScaleAbs返回图片的unit8格式,参考图片如下。
高水平梯度和低垂直梯度的图像区域
1. src – 需要处理的图像
2. ddepth – 图像的深度,-1表示采用的是与原图像相同的深度。目标图像的深度必须大于等于原图像的深度
3. dx – 对x轴方向求导的阶数,一般为0、1、2,其中0表示这个方向上没有求导
4. dy – 对y轴方向求导的阶数,一般为0、1、2,其中0表示这个方向上没有求导
7. scale – 缩放导数的比例常数,默认情况下没有伸缩系数
8. delta – 可选增量, 将会加到最终的dst中,同样,默认情况下没有额外的值加到dst中
在经过处理后,需要用convertScaleAbs()函数将其转回原来的uint8形式,否则将无法显示图像,而只是一副灰色的窗口。
其中可选参数alpha是伸缩系数,beta是加到结果上的一个值,结果返回uint8类型的图片在图像的读取中,会存在一些噪噪声点,如一些白噪声,因此我们需要进行去噪操作
参数说明:img表示输入的图片, (3, 3) 表示进行均值滤波的方框大小 表示对加和后的结果不进行平均操作,大于255的使用255表示 参数说明: 1表示σ, x表示与当前值得距离,计算出的G(x)表示权重值 参数说明:img表示当前的图片,3表示当前的方框尺寸 src:源图片,必须是单通道 type:阈值类型,具体见下表通过以上操作,我们已经检测到了条形码的大致位置,然后使用内核函数获取图片外形的形态学,并分别执行4次形态学腐蚀与膨胀,获取更精确的图片形状位置
第二和第三个参数分别是内核的尺寸以及锚点的位置。一般在调用erode以及dilate函数之前,先定义一个Mat类型的变量来获得
getStructuringElement函数的返回值: 对于锚点的位置,有默认值Point(-1,-1),表示锚点位于中心点。element形状唯一依赖锚点位置,其他情况下,锚点只是影响了形态学运算结果的偏移。
kernel表示方框的大小 2.op = cv2.MORPH_OPEN 进行开运算,指的是先进行腐蚀操作,再进行膨胀操作 开运算:表示的是先进行腐蚀,再进行膨胀操作 闭运算:表示先进行膨胀操作,再进行腐蚀操作形态学图片转换完成后,进行图片的腐蚀与膨胀,这里主要是获取更精确的外形。
腐蚀与膨胀属于形态学操作,所谓的形态学,就是改变物体的形状,形象理解一些:腐蚀=变瘦 膨胀=变胖,主要是采用 cv2.erode() 和 cv2.dilate(),需要注意一点的是,腐蚀和膨胀主要针对二值化图像的白色部分
我们通过以上的步骤,已经成功锁定图片条形码的位置,然后使用cv2.findContours函数找到图片的外形,并画出图片的外形。
然后对找到的所有轮廓点进行重新排序
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,
指定可迭代对象中的一个元素来进行排序。
而minAreaRect就是求出在上述点集下的最小面积矩形
rect[0]返回矩形的中心点,(x,y),实际上为y行x列的像素点 rect[1]返回矩形的长和宽 rect[2]返回矩形的旋转角度
有了box的外形4个图形点,便可以使用cv2.drawContours函数把4个点连接起来,形成一个矩形轮廓,最后显示图片