CN117197072B - 基于机器视觉的物体自动计数方法 - Google Patents
基于机器视觉的物体自动计数方法 Download PDFInfo
- Publication number
- CN117197072B CN117197072B CN202311151318.5A CN202311151318A CN117197072B CN 117197072 B CN117197072 B CN 117197072B CN 202311151318 A CN202311151318 A CN 202311151318A CN 117197072 B CN117197072 B CN 117197072B
- Authority
- CN
- China
- Prior art keywords
- image
- img
- objects
- rectangular
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000009466 transformation Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000003708 edge detection Methods 0.000 claims abstract description 10
- 238000007781 pre-processing Methods 0.000 claims abstract description 5
- 230000008859 change Effects 0.000 claims abstract description 4
- 230000002708 enhancing effect Effects 0.000 claims abstract description 4
- 230000009467 reduction Effects 0.000 claims abstract description 4
- 238000005260 corrosion Methods 0.000 claims description 9
- 230000007797 corrosion Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims description 9
- 230000003044 adaptive effect Effects 0.000 claims description 7
- 239000011159 matrix material Substances 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000003628 erosive effect Effects 0.000 claims description 4
- 230000002146 bilateral effect Effects 0.000 claims description 3
- 230000010339 dilation Effects 0.000 claims description 3
- 230000001174 ascending effect Effects 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000003014 reinforcing effect Effects 0.000 claims 1
- 238000004519 manufacturing process Methods 0.000 abstract description 2
- 230000006872 improvement Effects 0.000 abstract 1
- 239000013598 vector Substances 0.000 description 10
- 230000001186 cumulative effect Effects 0.000 description 5
- 230000000877 morphologic effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005315 distribution function Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000005530 etching Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Abstract
本发明公开了一种基于机器视觉的物体自动计数方法,涉及机器视觉技术领域。所述方法包括如下步骤:图像采集:首先对物体端面进行拍照,然后将图片保存;图像背景去除:对图像预处理后转入HSV空间去除背景;物体形状判断:基于机器边缘检测以及霍夫变换,对物体进行形状判断;物体计数:对于圆形物体:图像处理进行霍夫圆变化函数检测圆形特征,绘制质心并计算数量;对于矩形物体:图像降噪加强待计数物体轮廓,使用霍夫变换拟合物体纵向的轮廓,计算每行待计数物体个数绘制质心并计数。所述方法具有计数效率高且准确率高,可以减少人力成本,提高生产效率等优点。
Description
技术领域
本发明涉及机器视觉计数技术领域,尤其涉及一种基于机器视觉的物体自动计数方法。
背景技术
在日常生活中,物体的计数是一项重要的任务。在物体个数的识别和计数方面,传统的方法通常需要大量的人力来进行,而且容易受到主观因素和疲劳误差的影响,导致计数的精度低下。随着数字图像处理和机器视觉技术的发展,利用机器视觉技术来实现自动化的物体识别和计数成为一种有效的解决方案,但是现有技术中的计数方法具有效率低,且准确率不高等缺点。
发明内容
本发明所要解决的技术问题是如何提供一种计数效率高且准确率高的基于机器视觉的物体自动计数方法。
为解决上述技术问题,本发明所采取的技术方案是:一种基于机器视觉的物体自动计数方法,包括如下步骤:
图像采集:首先对物体端面进行拍照,然后将图片保存;
图像背景去除:对图像预处理后转入HSV空间去除背景;
物体形状判断:基于机器边缘检测以及霍夫变换,对物体进行形状判断;
物体计数:对于圆形物体:图像处理进行霍夫圆变化函数检测圆形特征,绘制质心并计算数量;
对于矩形物体:图像降噪加强待计数物体轮廓,使用霍夫变换拟合草垛纵向的轮廓,计算每行待计数物体个数绘制质心并计数。
根据圆形物体的数量以及矩形物体的数量得出待计数物体的总数量。
进一步的计数方案在于,所述图像背景去除包括如下步骤:
S1:对采集到的图像去除与物体颜色相差大的背景区域;
S2:对采集到的图像去除与物体颜色相差小的背景区域;
S3:将步骤S1和步骤S2处理后的图像进行与运算;
S4:去除背景轮廓。
进一步的计数方案在于,对于矩形物体进行自动计数的方法包括如下步骤:
S1:对获取到的矩形物体图像进行去背景处理;
S2:利用Hough变换提取矩形物体的横向边缘;
S3:根据提取到的矩形物体横向边缘,将图像中的矩形物体按行提取为若干个图像;
S4:利用Hough变换提取矩形物体的纵向边缘;
S5:绘制图像中每个矩形物体的质心,并统计矩形物体的数量。
采用上述技术方案所产生的有益效果在于:所述方法使用计算机视觉算法对物体图像进行分析,以实现自动、准确和高效的计数,不仅可以提高计数效率,而且可以减少人力成本,提高生产效率。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明实施例所述方法的主流程图;
图2为本发明实施例所述方法中去背景方法的流程图;
图3为本发明实施例所述去背景方法中进行双边滤波后的bilater_img图像;
图4为本发明实施例所述去背景方法中转换为hsv空间后的图hsv_img像;
图5为本发明实施例所述去背景方法中对hsv空间图像进行阈值处理后的mask1图像;
图6为本发明实施例所述去背景方法中对腐蚀后的图像进行膨胀操作后的dilate_img图像;
图7为本发明实施例所述去背景方法中进行灰度处理后的gray_img图像;
图8为本发明实施例所述去背景方法中对灰度图像阈值处理后的ret图像;
图9为本发明实施例所述去背景方法中对阈值处理后图像进行边缘化的canny_img图像;
图10为本发明实施例所述去背景方法中寻找到的分割线;
图11为本发明实施例所述去背景方法中对经过步骤1和步骤2得到的图像进行与运算后的bit_img图像;
图12为本发明实施例所述去背景方法中对与运算后图像进行边缘化后的edges_img图像;
图13为本发明实施例所述去背景方法中去除完背景轮廓后的mask_img图像;
图14为本发明实施例所述去背景方法中最终去背景后的rest_img图像;
图15是本发明实施例所述矩形物体自动计数方法的流程图;
图16为本发明实施例所述矩形物体自动计数方法中去背景后的图像转换的灰度图像;
图17为本发明实施例所述矩形物体自动计数方法中进行直方图均衡化后的灰度图像;
图18为本发明实施例所述矩形物体自动计数方法中在提取矩形物体横向边缘时进行膨胀和腐蚀操作后的二值图像;
图19为本发明实施例所述矩形物体自动计数方法中所提取到的矩形物体横向边缘的图像;
图20为本发明实施例所述矩形物体自动计数方法中按行提取后的矩形物体图像;
图21为本发明实施例所述矩形物体自动计数方法中所检测到的矩形物体纵向边缘的图像;
图22为本发明实施例所述矩形物体自动计数方法中绘制质心后的矩形物体图像。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
如图1所示,本发明实施例公开了一种基于机器视觉的物体自动计数方法,包括如下步骤:
图像采集:首先对物体端面进行拍照,然后将图片保存;
图像背景去除:对图像预处理后转入HSV空间去除背景;
物体形状判断:基于机器边缘检测以及霍夫变换,对物体进行形状判断;
物体计数:对于圆形物体:图像处理进行霍夫圆变化函数检测圆形特征,绘制质心并计算数量;
对于矩形物体:图像降噪加强待计数物体轮廓,使用霍夫变换拟合草垛纵向的轮廓,计算每行待计数物体个数绘制质心并计数;根据圆形物体的数量以及矩形物体的数量得出待计数物体的总数量。
下面结合具体内容对上述步骤进行详细的说明
图像背景去除,如图2所示,具体包括如下步骤:
S1:对采集到的图像去除与物体颜色相差大的背景区域;
S2:对采集到的图像去除与物体颜色相差小的背景区域;
S3:将步骤S1和步骤S2处理后的图像进行与运算;
S4:去除背景轮廓。
进一步的,所述步骤S1具体方法包括如下步骤:
S11:对采集到的图像img进行中值滤波处理得到图像middle_img;
S12:对图像middle_img进行双边滤波去噪,得到图像bilater_img,其示意图如图3所示;
S13:对图像bilater_img转换成hsv空间图像得到hsv_img,hsv_img得到图4所示;
S14:根据图像高度(g),宽度(k)取得中心点坐标;
S15:根据中心点坐标获取中心点的hsv值:
其中h代表色相,s代表饱和度,v代表亮度,mid_x,mid_y分别代表中心点的横坐标和中心点的纵坐标;
S16:对h进行浮动设置出颜色范围(min_h,max_h)
其中min_h为h的下限,max_h为h的上限,C1设置为15,C2设置为10;
S17:对图像hsv_img进行阈值处理,其中阈值的下限为low(min_h,min_s,min_v),阈值的上限为high(max_h,max_s,max_v),将在该范围内的图像变为白色,范围外的图像变为黑色,此处阈值公式为:
其中min_s设为43,max_s设为255,min_v设为46,max_v设为255,通过该步骤处理后的图像mask1如图5所示;
S18:使用11*11的卷积核对mask1进行腐蚀操作,迭代次数为itera1次得到图像closed_img,迭代次数确定公式为:
其中itera1为腐蚀的迭代次数,s_w为白色区域的面积,size_kmax为卷积核的大小,此处设为11;
S19:使用5*5的卷积核对closed_img进行膨胀操作,迭代次数为itera2次,得到图像dilate_img,如图6所示,此处确定迭代次数的公式为:
此处itera2为膨胀的迭代次数,s_d为黑色区域的面积,size_kmin为卷积核的大小,此处设为5。
进一步的,所述步骤S2具体包括如下步骤:
S21:将图像hsv_img转换成灰度图gray_img,通过该步骤处理后的图像如图7所示;
S22:对图像gray_img进行阈值处理,阈值下限minval,上限maxval得到黑白图ret,如图8所示,转换公式如下:
minval=gray_img(mid_x,y_mid_y)-C3
其中gray_img(x,y)为gray_img图像中(x,y)坐标的值,gray_img(mid_x,mid_y)为gray_img图像中心点的值,C3为常数此处设为30,maxval设为255;
S23:对黑白图ret使用Canny算子进行边缘化操作的到图像canny_img,如图9所示;
S24:对图像canny_img进行霍夫变换寻找直线得到所有直线lines;
S25:计算出直线lines各个点的坐标并保存到lines_list列表中,计算坐标公式如下:
此处rho为极径,theta为极角;
S26:对lines_list列表按照y坐标进行排序得到y坐标值最大的点dot(x1,y1)所在的直线为分割线,如图10所示;
S27:设置一个与图像同宽高的矩阵same_img进行初始化赋值,初始化公式为:
其中theta为该直线的极角,x1,y1为dot点的坐标,same_img(x,y)为same_img图像x,y坐标的值。
进一步的,所述步骤S3具体包括如下步骤:
S31:将图像same_img与图像dilate_img进行与运算操作得到图像bit_img,如图11所示;
此处bit_img(x,y)为bit_img图像x,y坐标的值,same_img(x,y)为same_img图像x,y坐标的值,dilate_img(x,y)为dilate_img图像x,y坐标的值。
进一步的,所述步骤S4中去除背景轮廓,具体包括如下步骤:
S41:对图像bit_img使用canny算子进行边缘化得到图像edges_img,如图12所示;
S42:对图像edges_img进行寻找轮廓得到所有轮廓contours_list;
S43:将contours_list按照轮廓的周长进行排序寻找最大周长的轮廓为con;
S44:保存con的最大外接矩阵的左上角顶点为rect_left(left_x,left_y),高为rect_h和宽为rect_w;
S45:设置一个与bit_img同宽高的矩阵为图像rect_img进行初始化,初始化公式为:
S46:将图像bit_img与图像rect_img进行与运算得到图像mask_img,如图13所示;
S47:将图像img与图像mask_img进行与运算得到最终去背景结果rest_img,如图14所示。
进一步的,如图15所示,矩形物体自动计数方法包括以下步骤:
S1:对获取到的矩形物体图像进行去背景处理(使用前述背景处理方法)。
S2:利用Hough变换提取矩形物体的横向边缘。
S3:根据提取到的矩形物体横向边缘,将图像中的矩形物体按行提取为若干个图像。
S4:利用Hough变换提取矩形物体的纵向边缘。
S5:绘制图像中每个矩形物体的质心,并统计矩形物体的数量。
进一步的,所述步骤S2中利用Hough变换提取矩形物体的横向边缘的具体方法包括如下步骤:
S21:去背景后的图像result_image转换为灰度图像gray_image,其处理后的图像如图16所示。
S22:对灰度图像gray_image进行直方图均衡化,增强图像的对比度,处理后的图像如图17所示。
S23:对均衡化后的图像equalized_image使用5*5的高斯核进行高斯滤波。
S24:采用高斯自适应阈值法进行图像二值化。
S25:使用5*5的卷积核对二值图像thresh_image进行膨胀操作,去除图像中的噪声,得到图像dila_image1。
S26:使用9*1的卷积核对图像dila_image1进行膨胀操作,进一步去除图像中的噪声,同时保留图像中矩形物体的横向边缘,得到图像dila_image2。
S27:使用9*1的卷积核对图像dila_image2进行腐蚀操作,使矩形物体的横向边缘更加明显,得到图像erode_image1,进行膨胀和腐蚀操作后的二值图像如图18所示。
S28:使用5*5的卷积核对图像erode_image1进行腐蚀操作,进一步加强矩形物体的横向边缘,得到图像erode_image2,所提取到的矩形物体横向边缘图如图19所示。
S29:对图像erode_image2进行Canny边缘检测。
S210:使用Hough变换直线检测算法,得到每条直线的参数ρ(直线到原点的距离)和θ(直线与图像的水平轴之间的角度)。
S211:通过ρ和θ计算得到每条线段的起始坐标和终点坐标并保存到线段列表lines_list1中。
S212:对线段列表lines_list1中的线段进行去重操作。
S213:将去重后的线段列表lines_list1绘制到原始图像image上。
进一步的,所述步骤S23中,二维高斯滤波的核函数如下:
其中,x和y分别表示核函数的横纵坐标,σ表示核函数的标准差。
所采用的5*5的高斯核如下:
进一步的,所述步骤S24中,高斯自适应阈值法的局部邻域大小blockSize设置为57。局部邻域大小blockSize设置为57的原因:在矩形物体识别中,图像中的矩形物体较大,同时需要保证矩形物体之间的边缘不受影响。因此设置局部邻域大小为57,既能保证去除噪声,也能保证矩形物体之间的边缘不受影响。
进一步的,所述步骤S24中,高斯自适应阈值法的步骤具体包括:
S241:对于每个像素(x,y),计算局部邻域的高斯均值mean。
S242:根据局部邻域的高斯均值,计算像素的阈值T(x,y)的公式如下:
TT(x,y)=mean-C
其中,mean为局部邻域的高斯均值,C为常数,这里C取0。
S243:对于每个像素(x,y),将其灰度值I(x,y)与计算得到的阈值T(x,y)进行比较:
·如果I(x,y)>T(x,y),则将该像素的输出值设置为最大值(255)。
·如果I(x,y)≤T(x,y),则将该像素的输出值设置为最小值(0)。
进一步的,所述步骤S25中,图像膨胀操作的公式如下:
其中X为原始图像,S为结构元素,为结构元素S在原点处反转后平移z后的集合。
进一步的,所述步骤S27中,图像腐蚀操作的公式如下:
同理,X为原始图像,S为结构元素,Sz为结构元素S平移z后的集合。
进一步的,所述步骤S211中,根据步骤S210得到的ρ和θ,计算每条线段的起始坐标和终点坐标,其步骤具体包括:
S2111:坐标原点到该线段距离最近的坐标点 该直线l的斜率k=tanθ,截距d=y0-k·x0.
S2112:假设图像的高度和宽度分别为h和w且线段起始坐标和终点坐标为直线l与图像左右两侧边缘的交点,则线段的起始坐标 线段的终点坐标
进一步的,所述步骤S212中,去除重复线段的步骤具体包括:
S2121,遍历线段列表lines_list1:
将线段列表lines_list1中每一条线段作为当前线段,依次计算当前线段与其他线段的相交情况和距离。这里假设线段AB为当前线段,线段CD为列表中的其他线段。
S2122,相交线段的处理:
·线段AB、CD的起点和终点坐标表示为向量其中线段AB为当前线段,线段CD为列表中的其他线段。
·计算向量向量的叉积cross。如果两个向量的叉积为零,表示向量共线,无法相交。如果两个向量的叉积不为零,表示向量有旋转方向,可能相交。
·两个向量的叉积不为零时,继续计算向量和向量/>的叉积cross1,向量和向量/>的叉积cross2。如果叉积乘积cross1和cross2的结果都小于等于零,说明两条线段的起点和终点位置不同,并且两条线段相交,去除线段CD。否则,线段不相交。
假设有两个二维向量: 和/>叉积的计算公式如下:
S2123,距离过近的线段的处理:
计算线段AB的中心点与线段CD中心点的距离。如果距离小于预设的min_distance阈值,移除线段CD。
由于矩形物体的高度都在60个像素以上,因此设置距离最小阈值min_distance为60个像素。
进一步的,所述步骤S3中,根据提取到的矩形物体横向边缘(线段列表lines_list1),将图像中的矩形物体按行提取为若干个图像,其中,按行提取的矩形物体图像如图20所示,具体包括:
S31:对线段列表lines_list1按照起始坐标的纵坐标进行升序排序。
S32:根据两条相邻水平线段的起始坐标和终点坐标,创建一个四边形的掩膜区域。
S33:将四边形掩膜应用于图像imgResult,通过位逻辑与操作,提取出当前行矩形物体的区域。
进一步的,所述步骤S4中,利用Hough变换提取矩形物体的纵向边缘,具体包括:
S41:对于每行矩形物体提取到的图像,计算提取到的矩形物体横向边缘的上边缘和下边缘所属直线的斜率k和截距d。
S42:将每行矩形物体提取到的图像line_image转换为灰度图像grayLine_image。
S43:对灰度图像lineGray_image使用3*3的高斯核进行高斯滤波。
S44:使用高斯自适应阈值法进行图像二值化。
S45:使用7*7的卷积核对二值图像lineThresh_image进行闭运算操作,去除图像的噪声,得到图像lineClosed_image。
S46:使用7*7的卷积核对图像lineClosed_image进行腐蚀操作,增强矩形物体的边缘,得到图像lineErode_image。
S47:对图像lineErode_image进行Canny边缘检测。
S48:使用Hough变换直线检测算法,得到每条直线的参数ρ(直线到原点的距离)和θ(直线与图像的水平轴之间的角度)。
S49:计算得到每条线段的起始坐标和终点坐标并保存到线段列表lines_list2中。
S410:对线段列表lines_list2中的线段进行去重操作。
S411:将去重后的线段绘制到原始图像image上。
进一步的,所述步骤S41中,由于提取到的矩形物体横向边缘的上边缘和下边缘为线段列表line_list1中的线段。因此,提取到的矩形物体横向边缘的上边缘和下边缘所属直线的斜率和截距为步骤S211中计算得到的对应直线的斜率和截距。这里假设上边缘的斜率为k1,截距为d1,下边缘的斜率为k2,截距为d2
进一步的,所述步骤S44中,高斯自适应阈值法的局部邻域大小blockSize设置为57。
进一步的,所述步骤S48中,由于需要提取矩形物体得到纵向边缘,因此要将非竖直的线段过滤,保留0≤θ≤0.1的线段,所检测到的矩形物体纵向边缘如图21所示。
进一步的,所述步骤S49中,计算线段的起始坐标和终点坐标的步骤具体包括:
S491:根据步骤S211中计算直线斜率和截距的方法,计算出步骤48中所得到的每条直线的斜率和截距。
S492:根据步骤S41中计算的上边缘和下边缘斜率和截距,计算出每条直线与上边缘和下边缘的两个交点坐标,也就是矩形物体纵向边缘的起始坐标和终点坐标。
进一步的,所述步骤S49中,根据步骤S212中提供的方法进行线段去重。在去除距离较近的线段中,由于矩形物体的长度都在100个像素以上,因此设置距离最小阈值distanceMin为100个像素。绘制质心后的矩形物体图像如图22所示。
圆形物体计数的方法,对于不同类型和大小的圆形物体都具有良好的适应性,主要包括以下步骤:
S1:对采集到的图像进行去背景处理(使用前述背景处理方法);
S2:对图像进行直方图均衡化,增强图像的对比度和亮度;
S3:对直方图均衡化的图像进行高斯模糊;
S4:对图像进行形态学操作增强物体的连通性;
S5:通过Canny边缘检测来获取图像中的边缘信息,得到二值图像;
S6:对二值图像进行霍夫圆变换,进行圆形物体检测;
S7:根据检测到的圆形物体数量进行计数,并绘制圆形物体的中心点。
进一步的,所述步骤S1中,对采集到的图像进行预处理,具体包括:
步骤S101对图像original_image进行去背景处理得到图像middle_image。
步骤S102将图像middle_image转换为灰度图像gray,以提取图像中的亮度信息。
进一步的,所述步骤S2中,对图像进行直方图均衡化,即通过重新分配图像的像素值来增强图像的对比度和亮度,具体包括:
步骤S201使用8*8对图像gray进行分割,对于每个块,计算其对应的累积直方图。
步骤S202将原始图像的像素值映射到一个新的范围内,对每个块实现直方图均衡化。
步骤S203对块边界处的像素进行插值。使用双线性插值的方法来处理块边界处的像素。
步骤S204对处理后的图像进行合并。将所有块重新组合为最终的增强图像,得到图像equalized。
进一步的,所述步骤S201中,选择8*8是基于实验不断优化的结果,累计分布函数(CDF)的计算公式为
其中,CDF(i)表示像素值为i的累积分布函数值,H(j)表示像素值为j的直方图频率,N表示图像的总像素数。
进一步的,所述步骤S202中,根据累积直方图进行像素值重映射,通过对CDF进行归一化和像素值映射得到新的像素值,计算公式如下:
NewValue(i)=round((L-1)×CDF(i))
其中,L是灰度级的数量(通常为256,表示0到255),CDF(i)是像素值为i的归一化累积分布函数值,rou nd()是四舍五入函数。
进一步的,所述步骤S203中,双线性插值结果公式如下:
I_interp=(1-(x-x1))*(1-(y-y1))*I1+(x-x1)
*(1-(y-y1))*I2+(1-(x-x1))*(y-y1)*I3
+(x-x1)*(y-y1)*I4
其中,I_interp是目标像素的估计值,I1、I2、I3和I4分别是四个相邻像素的值。
进一步的,所述步骤S204中,设置clipLimit为2.0对每个块的像素值进行裁剪,使得超过该阈值的像素值分布概率被限制在阈值范围内。可以提供较为自然和平衡的图像增强结果。
进一步的,所述步骤S3中,对直方图均衡化的图像进行高斯模糊,具体包括:
步骤S301:使用高斯函数作为加权函数。
步骤S302:5*5的模糊卷积核是在实验的基础上观察模糊效果优化得到的,对每个像素邻域内的像素值进行加权平均以平滑图像,从而能够减少图像中的噪声和细节,得到图像blurred。
进一步的,所述步骤S301中,加权函数如下:
其中,G(x,y)是二维高斯函数的值,x和y是自变量,σ是控制高斯函数形状的标准差。
进一步的,所述步骤S302中,选择5*5的模糊卷积核,加权平均计算的公式如下:
其中,Iblurred(x,y)是模糊后的像素值,I(x,y)是原始图像中的像素值,w(i,j)是高斯滤波器在位置(i,j)上的权重,k是滤波器的半径,∑w是滤波器权重的总和。
进一步的,所述步骤S4中,对图像进行形态学操作得到图像closed。具体包括:
步骤S401:创建一个椭圆形状的结构元素kernel,尺寸为5*5。
步骤S402:执行形态学闭运算,对高斯模糊处理后的图像blurred进行闭操作,以填补小孔洞,平滑边界,连接相邻的图像区域增强物体的连通性。
进一步的,所述步骤S401中,5*5的椭圆形状结构元素kernel如下:
进一步的,所述步骤S402中,闭运算为先膨胀再腐蚀,膨胀公式如下:
Idilated(x,y)=max(i,j)∈kernel{I(x+i,y+j)}
其中,I(x,y)表示原始图像中坐标为(x,y)的像素值,Idilated(x,y)表示膨胀后的图像中坐标为(x,y)的像素值,kernel表示结构元素。
腐蚀公式如下:
Ieroded(x,y)=min(i,j)∈kernel{I(x+i,y+j)}
其中,I(x,y)表示原始图像中坐标为(x,y)的像素值,Ieroded(x,y)表示腐蚀后的图像中坐标为(x,y)的像素值,kernel表示结构元素。
闭运算公式如下:
Iclosed=Dilation(Erosion(Iblurred,kernel),kernel)
其中,Iblurred表示经过高斯模糊处理后的图像,Iclosed表示形态学闭运算后的图像,kernel表示结构元素。
进一步的,所述步骤S5中,通过Canny边缘检测来获取图像中的边缘信息,得到二值图像mask。具体包括:
步骤S501在平滑后的图像上计算梯度,以确定图像中的边缘强度和方向。
步骤S502应用非最大抑制,将非边缘像素抑制为零,只保留边缘的细线。
步骤S503应用双阈值处理,将像素分为强边缘、弱边缘和非边缘区域。
步骤S504对弱边缘进行连接,如果其与强边缘相连则认为是边缘。
进一步的,所述步骤S501中,利用Sobel运算符在水平和垂直方向上对图像进行卷积操作,分别计算出水平和垂直方向上的梯度分量(Gx)和(Gy)。根据计算得到的梯度分量(Gx)和(Gy),可以计算每个像素点的梯度幅值和方向。
水平方向上的Sobel滤波器公式如下:
Gx=[-1 0 1 -2 0 2 -1 0 1]
垂直方向上的Sobel滤波器公式如下:
Gy=[-1 -2 -1 0 0 0 1 2 1]
梯度幅值公式如下:
梯度方向公式如下:
其中,G表示梯度幅值,θ表示梯度方向。
进一步的,所述步骤S6中,将二值图像作为霍夫圆检测算法的输入,进行圆形物体检测。具体包括:
步骤S601:对二值图像mask进行霍夫圆变换,将图像中的圆形物体转换到霍夫空间。
步骤S602:使用梯度信息来检测图像中的圆形物体,并得到包含检测到的圆形的数组circles。
进一步的,所述步骤S601中,圆的极坐标变换公式如下:
ρ=x·cos(θ)+y·sin(θ)
进一步的,所述步骤6中,霍夫圆检测算法所需要调整的参数具体包括:
1)最小距离minDist,这里设置为65既可以避免检测到很接近的圆形又不会影响相邻圆形物体的计数。
2)圆心梯度阈值,这里设置为150,可以过滤掉较弱的圆形边缘响应,确保检测到的圆形具有较高的边缘强度,太高则会导致漏检。
3)霍夫空间分辨率与输入图像分辨率的比值,这里设置为1,可以更准确地检测小尺寸的圆形。
进一步的,所述步骤S7中,根据检测到的圆形物体数量进行计数,并绘制圆形物体的中心点。具体包括:
步骤S701对检测到的圆形物体进行计数,通过circles数组获取检测到的圆的数量。
步骤S702遍历每个识别到的圆形,并在图像上绘制圆心。
对识别出的圆形物体进行计数并输出结果。通过对识别出的圆形物体进行计数操作,可以统计场地中的圆形物体数量。可以通过显示器、打印机或网络接口等方式,将计数结果进行可视化展示或传输。
Claims (8)
1.一种基于机器视觉的物体自动计数方法,其特征在于包括如下步骤:
图像采集:首先对物体端面进行拍照,然后将图片保存;
图像背景去除:对图像预处理后转入HSV空间去除背景;
物体形状判断:基于机器边缘检测以及霍夫变换,对物体进行形状判断;
物体计数:对于圆形物体:图像处理进行霍夫圆变化函数检测圆形特征,绘制质心并计算数量;
对于矩形物体:图像降噪加强待计数物体轮廓,使用霍夫变换拟合草垛纵向的轮廓,计算每行待计数物体个数绘制质心并计数;
根据圆形物体的数量以及矩形物体的数量得出待计数物体的总数量;
对于矩形物体进行自动计数的方法包括如下步骤:
S1':对获取到的矩形物体图像进行去背景处理;
S2':利用Hough变换提取矩形物体的横向边缘;
S3':根据提取到的矩形物体横向边缘,将图像中的矩形物体按行提取为若干个图像;
S4':利用Hough变换提取矩形物体的纵向边缘;
S5':绘制图像中每个矩形物体的质心,并统计矩形物体的数量;
所述步骤S2'中利用Hough变换提取矩形物体的横向边缘的具体方法包括如下步骤:
S21':去背景后的图像result_image转换为灰度图像gray_image;
S22':对灰度图像gray_image进行直方图均衡化,增强图像的对比度;
S23':对均衡化后的图像equalized_image使用5*5的高斯核进行高斯滤波;
S24':采用高斯自适应阈值法进行图像二值化;
S25':使用5*5的卷积核对二值图像thresh_image进行膨胀操作,去除图像中的噪声,得到图像dila_image1;
S26':使用9*1的卷积核对图像dila_image1进行膨胀操作,进一步去除图像中的噪声,同时保留图像中矩形物体的横向边缘,得到图像dila_image2;
S27':使用9*1的卷积核对图像dila_image2进行腐蚀操作,使矩形物体的横向边缘更加明显,得到图像erode_image1;
S28':使用5*5的卷积核对图像erode_image1进行腐蚀操作,进一步加强矩形物体的横向边缘,得到图像erode_image2;
S29':对图像erode_image2进行Canny边缘检测;
S210':使用Hough变换直线检测算法,得到每条直线的参数ρ和θ,其中ρ为直线到原点的距离,θ为直线与图像的水平轴之间的角度;
S211':通过ρ和θ计算得到每条线段的起始坐标和终点坐标并保存到线段列表lines_list1中;
S212':对线段列表lines_list1中的线段进行去重操作;
S213':将去重后的线段列表lines_list1绘制到原始图像image上。
2.如权利要求1所述的基于机器视觉的物体自动计数方法,其特征在于所述图像采集包括如下步骤:对物体进行拍照,拍照生成的照片为物体端面照片,拍照时覆盖全部物体,照片清晰,把照片导入到计算机中。
3.如权利要求1所述的基于机器视觉的物体自动计数方法,其特征在于所述图像背景去除包括如下步骤:
S1:对采集到的图像去除与物体颜色相差大的背景区域;
S2:对采集到的图像去除与物体颜色相差小的背景区域;
S3:将步骤S1和步骤S2处理后的图像进行与运算;
S4:去除背景轮廓。
4.如权利要求3所述的基于机器视觉的物体自动计数方法,其特征在于所述步骤S1中对采集到的图像去除与物体颜色相差大的区域的具体方法包括如下步骤:
S11:对采集到的图像img进行中值滤波处理得到图像middle_img;
S12:对图像middle_img进行双边滤波去噪,得到图像bilater_img;
S13:对图像bilater_img转换成hsv空间图像得到hsv_img;
S14:根据图像高度(g),宽度(k)取得中心点坐标;
S15:根据中心点坐标获取中心点的hsv值:
其中h代表色相,s代表饱和度,v代表亮度,mid_x,mid_y分别代表中心点的横坐标和中心点的纵坐标;
S16:对h进行浮动设置出颜色范围(minh,maxh)
其中min_h为h的下限,max_h为h的上限,C1设置为15,C2设置为10;
S17:对图像hsv_img进行阈值处理,其中阈值的下限为low(min_h,min_s,min_v),阈值的上限为high(max_h,max_s,max_v),将在该范围内的图像变为白色,范围外的图像变为黑色,此处阈值公式为:
其中mins设为43,maxs设为255,minv设为46,maxv设为255;
S18:使用11*11的卷积核对mask1进行腐蚀操作,迭代次数为itera1次得到图像closed_img,迭代次数确定公式为:
其中itera1为腐蚀的迭代次数,s_w为白色区域的面积,size_kmax为卷积核的大小,此处设为11;
S19:使用5*5的卷积核对closed_img进行膨胀操作,迭代次数为itera2次,得到图像dilate_img,此处确定迭代次数的公式为:
此处itera2为膨胀的迭代次数,s_d为黑色区域的面积,size_kmin为卷积核的大小,此处设为5。
5.如权利要求3所述的基于机器视觉的物体自动计数方法,其特征在于所述步骤S2中去除与物体颜色相差小的区域的具体方法包括如下步骤:
S21:将图像hsv_img转换成灰度图gray_img;
S22:对图像gray_img进行阈值处理,阈值下限minval,上限maxval得到黑白图ret,转换公式如下:
minval=gray_img(mid_x,y_mid_y)-C3
其中gray_img(x,y)为gray_img图像中(x,y)坐标的值,gray_img(mid_x,mid_y)为gray_img图像中心点的值,C3为常数此处设为30,maxval设为255;
S23:对ret使用Canny算子进行边缘化操作的到canny_img;
S24:对图像canny_img进行霍夫变换寻找直线得到所有直线lines;
S25:计算出直线lines各个点的坐标并保存到lines_list列表中,计算坐标公式如下:
此处rho为极径,theta为极角;
S26:对lines_list列表按照y坐标进行排序得到y坐标值最大的点dot(x1,y1)所在的直线为分割线;
S27:设置一个与图像同宽高的矩阵same_img进行初始化赋值,初始化公式为:
其中theta为该直线的极角,x1,y1为dot点的坐标,same_img(x,y)为same_img图像x,y坐标的值。
6.如权利要求3所述的基于机器视觉的物体自动计数方法,其特征在于所述步骤S3中将步骤S1和步骤S2处理后的图像进行与运算具体包括如下步骤:
S31:将图像same_img与图像dilate_img进行与运算操作得到图像bit_img;
此处bit_img(x,y)为bit_img图像x,y坐标的值,same_img(x,y)为same_img图像x,y坐标的值,dilate_img(x,y)为dilate_img图像x,y坐标的值;
所述步骤S4中去除背景轮廓,具体包括如下步骤:
S41:对图像bit_img使用canny算子进行边缘化得到edges_img;
S42:对图像edges_img进行寻找轮廓得到所有轮廓contours_list;
S43:将contours_list按照轮廓的周长进行排序寻找最大周长的轮廓为con;
S44:保存con的最大外接矩阵的左上角顶点为rect_left(left_x,left_y),高为rect_h和宽为rect_w;
S45:设置一个与bit_img同宽高的矩阵为图像rect_img进行初始化,初始化公式为:
S46:将图像bit_img与图像rect_img进行与运算得到图像mask_img;
S47:将图像img与图像mask_img进行与运算得到最终去背景结果rest_img。
7.如权利要求1所述的基于机器视觉的物体自动计数方法,其特征在于:所述步骤S3'中,根据提取到的矩形物体横向边缘,将图像中的矩形物体按行提取为若干个图像,具体包括如下步骤:
S31':对线段列表lines_list1按照起始坐标的纵坐标进行升序排序;
S32':根据两条相邻水平线段的起始坐标和终点坐标,创建一个四边形的掩膜区域;
S33':将四边形掩膜应用于图像imgResult,通过位逻辑与操作,提取出当前行矩形物体的区域。
8.如权利要求1所述的基于机器视觉的物体自动计数方法,其特征在于,所述步骤S4'中,利用Hough变换提取矩形物体的纵向边缘,具体包括如下步骤:
S41':对于每行矩形物体提取到的图像,计算提取到的矩形物体横向边缘的上边缘和下边缘所属直线的斜率k和截距d;
S42':将每行矩形物体提取到的图像line_image转换为灰度图像grayLine_image;
S43':对灰度图像lineGray_image使用3*3的高斯核进行高斯滤波;
S44':使用高斯自适应阈值法进行图像二值化;
S45':使用7*7的卷积核对二值图像lineThresh_image进行闭运算操作,去除图像的噪声,得到图像lineClosed_image;
S46':使用7*7的卷积核对图像lineClosed_image进行腐蚀操作,增强矩形物体的边缘,得到图像lineErode_image;
S47':对图像lineErode_image进行Canny边缘检测;
S48':使用Hough变换直线检测算法,得到每条直线的参数ρ和θ,其中,ρ为直线到原点的距离,θ为直线与图像的水平轴之间的角度;
S49':计算得到每条线段的起始坐标和终点坐标并保存到线段列表lines_list2中;
S410':对线段列表lines_list2中的线段进行去重操作;
S411':将去重后的线段绘制到原始图像image上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311151318.5A CN117197072B (zh) | 2023-09-07 | 2023-09-07 | 基于机器视觉的物体自动计数方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311151318.5A CN117197072B (zh) | 2023-09-07 | 2023-09-07 | 基于机器视觉的物体自动计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117197072A CN117197072A (zh) | 2023-12-08 |
CN117197072B true CN117197072B (zh) | 2024-04-05 |
Family
ID=88993683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311151318.5A Active CN117197072B (zh) | 2023-09-07 | 2023-09-07 | 基于机器视觉的物体自动计数方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117197072B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165791A (ja) * | 2003-12-03 | 2005-06-23 | Fuji Xerox Co Ltd | 対象物の追跡方法及び追跡システム |
CN108520252A (zh) * | 2018-04-20 | 2018-09-11 | 武汉理工大学 | 基于广义霍夫变换和小波变换的路标识别方法 |
CN112949564A (zh) * | 2021-02-02 | 2021-06-11 | 电子科技大学 | 一种基于深度学习的指针式仪表自动读数方法 |
CN115187788A (zh) * | 2022-05-21 | 2022-10-14 | 杜志钢 | 一种基于机器视觉的农作物种子自动计数方法 |
CN115423685A (zh) * | 2022-09-02 | 2022-12-02 | 济宁安泰矿山设备制造有限公司 | 用于智能泵腔体内窥镜故障诊断的图像超分辨率重建方法 |
CN116468773A (zh) * | 2023-04-24 | 2023-07-21 | 中南大学 | 一种基于红外热成像的锻件轮廓提取及尺寸测量方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9269001B2 (en) * | 2010-06-10 | 2016-02-23 | Tata Consultancy Services Limited | Illumination invariant and robust apparatus and method for detecting and recognizing various traffic signs |
-
2023
- 2023-09-07 CN CN202311151318.5A patent/CN117197072B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165791A (ja) * | 2003-12-03 | 2005-06-23 | Fuji Xerox Co Ltd | 対象物の追跡方法及び追跡システム |
CN108520252A (zh) * | 2018-04-20 | 2018-09-11 | 武汉理工大学 | 基于广义霍夫变换和小波变换的路标识别方法 |
CN112949564A (zh) * | 2021-02-02 | 2021-06-11 | 电子科技大学 | 一种基于深度学习的指针式仪表自动读数方法 |
CN115187788A (zh) * | 2022-05-21 | 2022-10-14 | 杜志钢 | 一种基于机器视觉的农作物种子自动计数方法 |
CN115423685A (zh) * | 2022-09-02 | 2022-12-02 | 济宁安泰矿山设备制造有限公司 | 用于智能泵腔体内窥镜故障诊断的图像超分辨率重建方法 |
CN116468773A (zh) * | 2023-04-24 | 2023-07-21 | 中南大学 | 一种基于红外热成像的锻件轮廓提取及尺寸测量方法 |
Non-Patent Citations (1)
Title |
---|
基于机器视觉的药板智能计数算法研究和系统设计;赵宁;《中国优秀硕士学位论文全文数据库 医药卫生科技辑》;20230131;第E079-178页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117197072A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109784344B (zh) | 一种用于地平面标识识别的图像非目标滤除方法 | |
CN107679520B (zh) | 一种适用于复杂条件下的车道线视觉检测方法 | |
CN107045634B (zh) | 一种基于最大稳定极值区域与笔画宽度的文本定位方法 | |
CN108985305B (zh) | 一种激光蚀刻工业雷管编码图像定位及校正方法 | |
CN112233116B (zh) | 基于邻域决策与灰度共生矩阵描述的凹凸痕视觉检测方法 | |
KR20110057536A (ko) | 문자인식장치 및 그 제어방법 | |
CN102930268A (zh) | 一种用于污染及多视角情况下DataMatrix码的精确定位方法 | |
CN111354047B (zh) | 一种基于计算机视觉的摄像模组定位方法及系统 | |
CN114863492B (zh) | 一种低质量指纹图像的修复方法及修复装置 | |
CN110348307B (zh) | 一种起重机金属结构攀爬机器人的路径边缘识别方法及系统 | |
CN112907460A (zh) | 一种遥感图像增强方法 | |
CN115272350A (zh) | 一种计算机pcb主板生产质量检测方法 | |
JP4062987B2 (ja) | 画像の領域分割方法、画像の領域分割装置、画像の領域分割プログラム | |
Saini | Document image binarization techniques, developments and related issues: a review | |
CN111290582B (zh) | 一种基于改进型直线检测的投影交互区域定位方法 | |
CN113688846A (zh) | 物体尺寸识别方法、可读存储介质及物体尺寸识别系统 | |
CN117197072B (zh) | 基于机器视觉的物体自动计数方法 | |
CN110097569B (zh) | 基于颜色马尔科夫链显著性模型的油罐目标检测方法 | |
CN111241911A (zh) | 一种自适应的车道线检测方法 | |
CN114529715B (zh) | 一种基于边缘提取的图像识别方法及系统 | |
CN116205939A (zh) | 线条提取方法、线条提取设备和计算机存储介质 | |
CN113643290B (zh) | 一种基于图像处理的吸管计数方法、装置及存储介质 | |
CN112348767A (zh) | 基于物体边缘检测和特征匹配的木材计数模型 | |
CN113569859B (zh) | 一种图像处理方法、装置、电子设备及存储介质 | |
CN113516121A (zh) | 一种多特征融合的非机动车车牌区域定位方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |