发明内容
为解决上述技术问题,本发明的目的在于:提供一种高效且成本低的,基于图像识别的金库钱捆状态检测方法、系统及介质。
根据本发明的第一方面,提供了基于图像识别的金库钱捆状态检测方法,包括:
确定钱捆模板的信息;
根据钱捆模板的图像对待检测钱捆单元的图像进行特征匹配,确定钱捆的调包检测结果;
获取待检测钱捆单元的标识信息,所述标识信息包括钱捆所在的货架号、货架行、列号以及序号;
根据钱捆模板的信息,对所述待检测钱捆单元的标识信息进行对比,确定钱捆的移动检测结果。
进一步,所述确定钱捆模板的信息,包括:
采集货架上所有钱捆单元的图像信息,得到二维码信息模板;
所述二维码信息模板包括钱捆数量、钱捆所在的货架号、钱捆所在的货架行号、钱捆所在的货架列号、钱捆所在所有钱捆单元中的序号、二维码图像的路径、二维码识别结果、二维码图像的左上顶点坐标、二维码图像的左下顶点坐标、二维码图像的右上顶点坐标、二维码图像的右下顶点坐标以及二维码图像的中心点坐标。
进一步,所述根据钱捆模板的图像对待检测钱捆单元的图像进行特征匹配,确定钱捆的调包检测结果,包括:
确定待检测钱捆单元的二维码识别结果;
根据所述二维码识别结果,计算二维码位置信息;
根据二维码位置信息,在钱捆模板中找到对应的匹配模板;
从匹配模板中获取第一路径,以及从待检测钱捆单元中对应的第二路径;
获取所述第一路径的图像的第一ROI区域,以及获取所述第二路径的图像的第二ROI区域;
确定第一ROI区域和第二ROI区域之间的sift特征点匹配个数;
根据所述sift特征点匹配个数,确定调包检测结果。
进一步,所述获取所述第二路径的图像的第二ROI区域,包括:
确定待检测钱捆单元图像与匹配模板图像之间的缩放比;
在匹配模板图像中,以二维码中心点为中心进行扩宽和扩高处理,得到第一ROI区域;在待检测钱捆单元图像中,以二维码中心点为中心进行扩宽和扩高处理,得到第二ROI区域。
进一步,所述确定第一ROI区域和第二ROI区域之间的sift特征点匹配个数,包括:
确定每个网格块中达到匹配条件的sift特征点个数;
分别计算第一ROI区域和第二ROI区域中的sift特征点匹配个数。
进一步,所述确定每个网格块中达到匹配条件的sift特征点个数,包括:
分别将第一ROI区域和第二ROI区域划分成同等大小的若干个网格块;
分别计算第一ROI区域和第二ROI区域的每个网格块的sift特征点;
根据所述sift特征点确定特征向量矩阵;
计算第一ROI区域和第二ROI区域对应两个特征向量矩阵的欧氏距离;
将欧氏距离小于第一阈值的点确定为达到匹配条件的sift特征点个数。
进一步,所述根据所述sift特征点匹配个数,确定调包检测结果,包括:
判断达到匹配条件的sift特征点个数与第一ROI区域中的sift特征点匹配个数之商是否小于第二阈值,若是,则确定待检测钱捆单元没有发生调包;反之,则确定检测钱捆单元发生调包;
或者
判断达到匹配条件的sift特征点个数与第二ROI区域中的sift特征点匹配个数之商是否大于第二阈值,若是,则确定待检测钱捆单元没有发生调包;反之,则确定检测钱捆单元发生调包。
进一步,所述根据钱捆模板的信息,对所述待检测钱捆的标识信息进行对比,确定钱捆的移动检测结果,包括:
判断钱捆模板的货架号是否与待检测钱捆单元的货架号相同,若是,则执行下一步,反之,则确定待检测钱捆单元发生移动;
判断钱捆模板的货架行号是否与待检测钱捆单元的货架号相同,若是,则执行下一步,反之,则确定待检测钱捆单元发生移动;
判断钱捆模板的货架列号是否与待检测钱捆单元的货架号相同,若是,则执行下一步,反之,则确定待检测钱捆单元发生移动;
判断钱捆模板的序号是否与待检测钱捆单元的货架号相同,若是,则确定待检测钱捆单元没有发生移动,反之,则确定待检测钱捆单元发生移动。
根据本发明的第二方面,提供了基于图像识别的金库钱捆状态检测系统,包括:
钱捆模板采集模块,用于确定钱捆模板的信息;
调包检测模块,用于根据钱捆模板的图像对待检测钱捆单元的图像进行特征匹配,确定钱捆的调包检测结果;
信息获取模块,用于获取待检测钱捆单元的标识信息,所述标识信息包括钱捆所在的货架号、货架行、列号以及序号;
移动检测模块,用于根据钱捆模板的信息,对所述待检测钱捆单元的标识信息进行对比,确定钱捆的移动检测结果。
根据本发明的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序被处理器执行完成如第一方面所述的方法。
本发明的有益效果是:本发明首先确定钱捆模板的信息;接着,根据钱捆模板的图像对待检测钱捆单元的图像进行特征匹配,确定钱捆的调包检测结果;然后,获取待检测钱捆单元的标识信息,所述标识信息包括钱捆所在的货架号、货架行、列号以及序号;最后,根据钱捆模板的信息,对所述待检测钱捆单元的标识信息进行对比,确定钱捆的移动检测结果。本发明能够自动确定金库中的钱捆是否发生调包或者是否被移动,无需人工巡查,也无需增设监控设备,智能化程度高,成本低且效率高。
具体实施方式
下面结合说明书附图和具体实施例对本发明作进一步解释和说明。对于本发明实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
针对现有技术无法实时对钱捆的移动调包等状态进行检测的缺点,本发明实施例提供了一种基于图像识别的金库钱捆状态检测方法、系统及介质,能够实时检测金库捆钞位置信息及状态,包括三种状态移动、调包、正常。
参见图1和图5,本发明实施例的方法包括以下步骤:
S101,确定钱捆模板的信息;
具体地,图2是本发明实施例的货架装置示意图,如图2所示,货架每行每列中均存放10捆钞票(本实施例按5行2列方式放置,为1个钱捆单元),每一捆中的所有钞票的币种、面额均一致。每一捆钞票均贴有一张二维码,二维码信息包括二维码类型、捆号、币种、新旧类型、面额、总金额、时间、加密数据段、序号信息,比如01_nn0oQ1O_CNY_ATM_00100_00100000_20190604104106_0_2。
其中,二维码信息的格式为:二维码类型(1代表捆签,2代表袋签)-捆号(7位唯一序列号)-币种(CNY)-新旧类型(ATM代表ATM钞票,TLR代表流通钞,UNFIT代表残旧钞)-面额(包括1,2,5,10,20,50,100)-金额(最大为100000)-时间(14位数的年月日时分秒)-加密数据段(8位CRC32前面字段(不包括最后一个下划线),crc32(二))。
在上例“01_nn0oQ1O_CNY_ATM_00100_00100000_20190604104106_0_2”中,则代表该二维码信息为:捆签-捆号-币种-ATM钞票-面额为100-总额为100000-入库时间为2019年6月4日10时41分6秒-加密数据段。
每一个钱捆仅对应一个二维码,用二维码的位置信息来表征钱捆的位置信息。本实施例通过移动摄像头,逐行逐列扫描货架中的钱捆单元图像,每次仅扫描一个某一行某一列的钱捆单元图像。
首先,本发明实施例第一次遍历采集货架上所有钱捆单元的图像,共m*n个钱捆单元,得到二维码信息模板,用以下数据结构bundle_qrcode_GRG表示每个钱捆对应的二维码的具体信息,假设金库的所有钱捆数量为N,则金库钱捆模板为bundle_qrcode_GRG[N]。其中变量shelf_no[8]表示钱捆所在货架号(货架名);shelf_storey表示钱捆所在货架行号(按示意图1所示,取值1,...,m);shelf_list表示钱捆所在货架列号(如图2所示,取值1,...,n);sequence_number表示钱捆所在钱捆单元中的序号,范围为1-10,钱捆单元所在序号的示意图如图3所示;path[1000]表示二维码图像的路径;currency_qr_code[256]表示二维码识别结果;qr_top_left_corner_x,qr_top_left_corner_y表示二维码左上顶点X,Y坐标;qr_lower_left_corner_x,qr_lower_left_corner_y表示二维码左下顶点X,Y坐标;qr_top_right_corner_x,qr_top_right_corner_y表示二维码右上顶点X,Y坐标;qr_lower_right_corner_x,qr_lower_right_corner_y表示二维码右下顶点X,Y坐标;qr_center_x,qr_center_y表示二维码中心点X,Y坐标;
如图3所示为本发明实施例的钱捆序号示意图。
本发明实施例的数据结构bundle_qrcode_GRG的示例如下:
图4为本发明实施例的二维码位置信息示意图,其中包括二维码左上顶点1(坐标为qr_top_left_corner_x,qr_top_left_corner_y);二维码右上顶点2(坐标为qr_top_right_corner_x,qr_top_right_corner_y);二维码左下顶点3(坐标为qr_lower_left_corner_x,qr_lower_left_corner_y);二维码右下顶点4(坐标为qr_lower_right_corner_x,qr_lower_right_corner_y);二维码中心点5(坐标为qr_center_x,qr_center_y)。
S102,根据钱捆模板的图像对待检测钱捆单元的图像进行特征匹配,确定钱捆的调包检测结果;
具体地,图6为本发明实施例对待检测钱捆单元进行调包检测的流程图,包括步骤S1021-S1027:
S1021,确定待检测钱捆单元的二维码识别结果;
S1022,根据所述二维码识别结果,计算二维码位置信息;
S1023,根据二维码位置信息,在钱捆模板中找到对应的匹配模板;
S1024,从匹配模板中获取第一路径,以及从待检测钱捆单元中对应的第二路径;
S1025,获取所述第一路径的图像的第一ROI区域,以及获取所述第二路径的图像的第二ROI区域;
其中,所述获取所述第二路径的图像的第二ROI区域包括步骤S10251-S10253:
S10251,确定待检测钱捆单元图像与匹配模板图像之间的缩放比;
S10252,在匹配模板图像中,以二维码中心点为中心进行扩宽和扩高处理,得到第一ROI区域;
S10253,在待检测钱捆单元图像中,以二维码中心点为中心进行扩宽和扩高处理,得到第二ROI区域。
S1026,确定第一ROI区域和第二ROI区域之间的sift特征点匹配个数;
所述步骤S1026包括S10261和S10262:
S10261,确定每个网格块中达到匹配条件的sift特征点个数;
S10262,分别计算第一ROI区域和第二ROI区域中的sift特征点匹配个数。
所述步骤S10262包括S102621-S102625。
S102621,分别将第一ROI区域和第二ROI区域划分成同等大小的若干个网格块;
S102622,分别计算第一ROI区域和第二ROI区域的每个网格块的sift特征点;
S102623,根据所述sift特征点确定特征向量矩阵;
S102624,计算第一ROI区域和第二ROI区域对应两个特征向量矩阵的欧氏距离;
S102625,将欧氏距离小于第一阈值的点确定为达到匹配条件的sift特征点个数。
S1027,根据所述sift特征点匹配个数,确定调包检测结果。
所述步骤S1027包括:
判断达到匹配条件的sift特征点个数与第一ROI区域中的sift特征点匹配个数之商是否小于第二阈值,若是,则确定待检测钱捆单元没有发生调包;反之,则确定检测钱捆单元发生调包;
或者
判断达到匹配条件的sift特征点个数与第二ROI区域中的sift特征点匹配个数之商是否大于第二阈值,若是,则确定待检测钱捆单元没有发生调包;反之,则确定检测钱捆单元发生调包。
本发明实施例假设需要被检测钱捆的二维码识别结果为A,二维码位置信息数据为bundle_qrcode_GRG real;金库钱捆模板为bundle_qrcode_GRG[N],则在金库模板中找到识别结果为A的二维码,该二维码对应的二维码位置信息数据为bundle_qrcode_GRGmodel。
分别取路径real.path(即第一路径),model.path(即第二路径)中的图像的第一ROI区域R1和第二ROI区域R2,根据二维码信息,由于第一次和第二次拍摄捆钞图像时,摄像头离捆钞的距离可能会发生变化,此时,模板图像与待检测图像之间会存在缩放比,计算出缩放比后,才能保证取出的ROI区域相同。
本发明实施例的ROI区域的计算步骤如下:
(1)计算待检测图像与模板的缩放比,X方向缩放比xfactor,Y方向缩放比yfactor计算公式如下:
xfactor=(real.qr_top_right_corner_x-real.qr_top_left_corner_x)/(model.qr_top_right_corner_x-model.qr_top_left_corner_x)
yfactor=(real.qr_lower_left_corner_y-real.qr_top_left_corner_y)/(model.qr_lower_left_corner_y-model.qr_top_left_corner_y)
(2)在模板图像中,以二维码中心点为中心,左右分别扩宽度W_1=320像素,上下分别扩高度H_1=120像素,得到ROI区域R1,大小为640pixel*240pixel。
(3)在实际图像中,以二维码中心点为中心,左右分别扩充宽度W_2,上下分别扩充高度H_2,计算方法如下,得到ROI区域R2,大小为2W_2pixel*2H_2pixel,调整区域R2的大小为640pixel*240pixel,得到:
W_2=320*xfactor;
H_2=120*yfactor;
接着,计算区域R1,R2的sift特征点匹配个数计算步骤如下:
(1)对ROI区域R1,R2划分成同等大小的32个网格块(4行8列);
(2)计算R1和R2中每一网格小块匹配点个数:首先,对R1和R2的某小块分别计算sift特征点,并根据特征点计算特征向量矩阵,随后根据计算两个特征向量间的欧式距离,筛选出特征向量的欧式距离小于第一阈值的的特征点,即为R1和R2中该小块匹配点个数。本发明实施例提供的第一阈值的取值方法为:取该两小块所有特征点的特征向量之间的最大距离的0.5倍;
(3)计算完32个网格块,并把所有网格匹配的特征点个数相加,得到区域R1,R2的匹配特征点数量之和N;
(4)R1,R2的所有sift特征点个数n1,n2计算方法:按步骤(2)方法,计算所有网格的特征点,并相加,即可分别得到R1,R2的sift特征点个数。
最后,判断N/n1>thresh或N/n2>thresh是否成立(本实施例的thresh取0.2),若成立,则说明该钱捆状态正常;若不成立,则说明该钱捆存在调包。
S103,获取待检测钱捆单元的标识信息,所述标识信息包括钱捆所在的货架号、货架行、列号以及序号;
S104,根据钱捆模板的信息,对所述待检测钱捆单元的标识信息进行对比,确定钱捆的移动检测结果。
具体地,如图7所示,本发明实施例假设需要被检测钱捆的二维码识别结果为A,二维码位置信息数据为bundle_qrcode_GRG real;金库钱捆模板为bundle_qrcode_GRG[N],在金库模板中找到识别结果为A的二维码,该二维码对应的二维码位置信息数据为bundle_qrcode_GRG model;如果real和model的货架号shelf_no,货架行号shelf_storey,货架列号shelf_list,钱捆所在钱捆单元中的序号sequence_number,四者中有一个不相等,则该钱捆存在移动。即:
判断钱捆模板的货架号是否与待检测钱捆单元的货架号相同,若是,则执行下一步,反之,则确定待检测钱捆单元发生移动;
判断钱捆模板的货架行号是否与待检测钱捆单元的货架号相同,若是,则执行下一步,反之,则确定待检测钱捆单元发生移动;
判断钱捆模板的货架列号是否与待检测钱捆单元的货架号相同,若是,则执行下一步,反之,则确定待检测钱捆单元发生移动;
判断钱捆模板的序号是否与待检测钱捆单元的货架号相同,若是,则确定待检测钱捆单元没有发生移动,反之,则确定待检测钱捆单元发生移动。
另外,本发明实施例还提供了一种基于图像识别的金库钱捆状态检测系统,包括:
钱捆模板采集模块,用于确定钱捆模板的信息;
调包检测模块,用于根据钱捆模板的图像对待检测钱捆单元的图像进行特征匹配,确定钱捆的调包检测结果;
信息获取模块,用于获取待检测钱捆单元的标识信息,所述标识信息包括钱捆所在的货架号、货架行、列号以及序号;
移动检测模块,用于根据钱捆模板的信息,对所述待检测钱捆单元的标识信息进行对比,确定钱捆的移动检测结果。
本发明实施例还提供了一种计算机可读存储介质,,所述计算机可读存储介质存储有程序,所述程序被处理器执行完成上述基于图像识别的金库钱捆状态检测方法。
综上所述,本发明实施例前后分别采集两次金库捆钞图像,第一次采集金库捆钞的图像作为模板图像,通过模板图像定位检测金库捆钞的位置信息和纹理特征;第二次采集的作为检测图像,根据检测图像得到实际捆钞的位置信息和纹理特征;通过比对前后两次的位置信息判断是否是移动,通过比对前后两次的纹理特征判断是否存在调包。
本发明方案能够实时检测银行金库捆钞移动和调包,可完全代替人工管理巡查,降低金库捆钞丢失、移动、被调包的风险。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。