发明内容
本发明的主要目的在于提供一种基于感知哈希算法和区块链的普洱茶信息溯源方法,旨在解决如何提高普洱茶信息溯源的可靠性的问题。
为实现上述目的,本发明提供的一种基于感知哈希算法和区块链的普洱茶信息溯源方法,所述方法包括:
在接收到校验请求时,基于感知哈希算法,识别待校验茶饼图像上的待校验纹理码;
将所述的待校验纹理码与存储于区块链上的参考纹理码进行比对,确定是否存在与所述待校验茶饼图像相匹配的目标茶饼信息;
若存在,向请求发送端输出所述目标茶饼信息。
可选地,所述在接收到校验请求时,基于感知哈希算法识别待校验茶饼图像上的待校验纹理码的步骤之前,还包括:
获取各个茶纹区域对应的纹理码,其中,所述纹理码基于感知哈希算法对茶饼的校准图像进行纹理分析生成;
将所述纹理码整理上链,作为所述茶饼对应的参考纹理码。
可选地,所述纹理码的生成步骤包括:
识别所述校准图像中的茶纹区域;
将所述茶纹区域缩小至目标尺寸,并将缩小至所述目标尺寸的所述茶纹区域的灰度值置为目标灰度级,得到待上链茶纹预处理图像;
将所述待上链茶纹预处理图像中每一像素作离散余弦变换,并确定离散余弦变换后的所述待上链茶纹预处理图像的均值;
将离散余弦变换后的所述待上链茶纹预处理图像中的每一像素与所述均值作比较,得到每一像素对应的二进制码;
组合所述二进制码,得到所述纹理码。
可选地,所述校准图像的生成步骤包括:
识别茶饼图像中预设的三个定位点坐标,并确定三个所述定位点坐标构成的直角点和三角形腰长;以及,
识别所述茶饼图像中的左下角点和右下角点;
根据所述直角点和所述三角形腰长,确定所述直角点到所述左下角点之间的第一向量,以及所述直角点到所述右下角点之间的第二向量;
计算所述第一向量和所述第二向量之间的夹角;
基于所述夹角旋转所述茶饼图像,得到所述校准图像。
可选地,所述识别所述校准图像中的茶纹区域步骤包括:
根据所述左下角点、所述右下角点和所述直角点,计算所述校准图像的偏移量;
基于所述偏移量,将所述校准图像进行网格化;
基于预设参数对网格化后的所述校准图像进行预处理;
确定预处理后的所述校准图像中每一网格对应的纹理变化值;
其中,上述记载的“基于所述偏移量,将所述校准图像进行网格化;基于预设参数对网格化后的所述校准图像进行预处理;确定预处理后的所述校准图像中每一网格对应的纹理变化值;”,其具体技术方案为本领就技术人员所知悉的现有常规技术手段,因此这里不再赘述。
若所述纹理变化值满足预设条件,则确定所述网格的区域为子茶纹区域;
将各个所述子茶纹区域构成的区域,确定为所述茶纹区域。
可选地,所述将所述纹理码整理上链的步骤包括:
基于所述茶纹区域的网格坐标,将所述纹理码以JSON文件的键值对方式保存;
调用智能合约,将所述纹理码以及所述纹理码关联的茶饼信息,进行上链。
可选地,所述将所述的待校验纹理码与存储于区块链上的参考纹理码进行比对的步骤包括:
确定所述待校验纹理码与各个所述参考纹理码之间的汉明距离;
当所述汉明距离小于预设汉明距离阈值时,将所述参考纹理码确定为与所述待校验纹理码相匹配的目标纹理码。
可选地,所述确定是否存在与所述待校验茶饼图像相匹配的目标茶饼信息的步骤包括:
确定所述目标纹理码对应的待选茶饼图像中,所述汉明距离小于所述预设汉明距离阈值的纹理码个数;
当所述纹理码个数大于预设个数阈值时,将所述待选茶饼图像对应的茶饼信息,确定为所述目标茶饼信息。
此外,为实现上述目的,本发明还提供一种普洱茶信息溯源系统,所述普洱茶信息溯源系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于感知哈希算法和区块链的普洱茶信息溯源程序,所述基于感知哈希算法和区块链的普洱茶信息溯源程序被所述处理器执行时实现如上所述的基于感知哈希算法和区块链的普洱茶信息溯源方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于感知哈希算法和区块链的普洱茶信息溯源程序,所述基于感知哈希算法和区块链的普洱茶信息溯源程序被处理器执行时实现如上所述的基于感知哈希算法和区块链的普洱茶信息溯源方法的步骤。
本发明实施例提供一种基于感知哈希算法和区块链的普洱茶信息溯源方法,采用了基于图像处理的区块链技术的普洱茶溯源方法,利用计算机视觉的方法调节和分割图像,区块链的去中心化、不可篡改、可追溯等特性,提高了普洱茶的溯源效率和可信度。
具体实施方式
本申请采用了基于图像处理的区块链技术的普洱茶溯源方法,利用计算机视觉的方法调节和分割图像,区块链的去中心化、不可篡改、可追溯等特性,实现了普洱茶从种植、加工、包装、运输、销售等各个环节的信息记录和验证,提高了普洱茶的溯源效率和可信度。
为了更好地理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整地传达给本领域的技术人员。
作为一种实现方案,图1为本发明实施例方案设计的普洱茶信息溯源系统的硬件运行环境的架构示意图。
如图1所示,该普洱茶信息溯源系统可以包括:处理器1001,例如CPU,存储器1005,用户接口1003,网络接口1004,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的普洱茶信息溯源系统架构并不构成对普洱茶信息溯源系统限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于感知哈希算法和区块链的普洱茶信息溯源程序。其中,操作系统是管理和控制普洱茶信息溯源系统的硬件和软件资源的程序,即管理和控制基于感知哈希算法和区块链的普洱茶信息溯源程序以及其他软件或程序的运行。
在图1所示的普洱茶信息溯源系统中,用户接口1003主要用于连接终端,与终端进行数据通信;网络接口1004主要用于后台服务器,与后台服务器进行数据通信;处理器1001可以用于调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
在接收到校验请求时,基于感知哈希算法,识别待校验茶饼图像上的待校验纹理码;
将所述的待校验纹理码与存储于区块链上的参考纹理码进行比对,确定是否存在与所述待校验茶饼图像相匹配的目标茶饼信息;
若存在,向请求发送端输出所述目标茶饼信息。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
获取各个茶纹区域对应的纹理码,其中,所述纹理码基于感知哈希算法对茶饼的校准图像进行纹理分析生成;
将所述纹理码整理上链,作为所述茶饼对应的参考纹理码。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
识别所述校准图像中的茶纹区域;
将所述茶纹区域缩小至目标尺寸,并将缩小至所述目标尺寸的所述茶纹区域的灰度值置为目标灰度级,得到待上链茶纹预处理图像;
将所述待上链茶纹预处理图像中每一像素作离散余弦变换,并确定离散余弦变换后的所述待上链茶纹预处理图像的均值;
将离散余弦变换后的所述待上链茶纹预处理图像中的每一像素与所述均值作比较,得到每一像素对应的二进制码;
组合所述二进制码,得到所述纹理码。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
识别茶饼图像中预设的三个定位点坐标,并确定三个所述定位点坐标构成的直角点和三角形腰长;以及,
识别所述茶饼图像中的左下角点和右下角点;
根据所述直角点和所述三角形腰长,确定所述直角点到所述左下角点之间的第一向量,以及所述直角点到所述右下角点之间的第二向量;
计算所述第一向量和所述第二向量之间的夹角;
基于所述夹角旋转所述茶饼图像,得到所述校准图像。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
根据所述左下角点、所述右下角点和所述直角点,计算所述校准图像的偏移量;
基于所述偏移量,将所述校准图像进行网格化;
基于预设参数对网格化后的所述校准图像进行预处理;
确定预处理后的所述校准图像中每一网格对应的纹理变化值;
若所述纹理变化值满足预设条件,则确定所述网格的区域为子茶纹区域;
将各个所述子茶纹区域构成的区域,确定为所述茶纹区域。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
基于所述茶纹区域的网格坐标,将所述纹理码以JSON文件的键值对方式保存;
调用智能合约,将所述纹理码以及所述纹理码关联的茶饼信息,进行上链。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
确定所述待校验纹理码与各个所述参考纹理码之间的汉明距离;
当所述汉明距离小于预设汉明距离阈值时,将所述参考纹理码确定为与所述待校验纹理码相匹配的目标纹理码。
处理器1001调用存储器1005中存储的基于感知哈希算法和区块链的普洱茶信息溯源程序时,执行以下操作:
确定所述目标纹理码对应的待选茶饼图像中,所述汉明距离小于所述预设汉明距离阈值的纹理码个数;
当所述纹理码个数大于预设个数阈值时,将所述待选茶饼图像对应的茶饼信息,确定为所述目标茶饼信息。
基于上述基于图像处理技术的普洱茶信息溯源系统的硬件架构,提出本发明基于感知哈希算法和区块链的普洱茶信息溯源方法的实施例。
参照图2,在第一实施例中,所述基于感知哈希算法和区块链的普洱茶信息溯源方法包括以下步骤:
步骤S10,在接收到校验请求时,基于感知哈希算法,识别待校验茶饼图像上的待校验纹理码;
在本实施例中,用户可以通过验证APP或小程序,对需要校验的茶饼进行拍照后,发送包含茶饼照片信息的校验请求至普洱茶信息溯源系统(下称为系统),系统在接收到校验请求时,基于感知哈希算法,识别待校验茶饼图像上的待校验纹理码。
纹理码是本实施例中,系统为每一茶饼赋予的唯一标识码,该标识码只包含茶纹图像纹理信息,当待校验纹理码和区块链上的参考纹理码匹配后,系统会返回对应茶饼的相关信息(如生产日期、茶叶类型等信息)。
步骤S20,将所述的待校验纹理码与存储于区块链上的参考纹理码进行比对,确定是否存在与所述待校验茶饼图像相匹配的目标茶饼信息;
在本实施例中,作为比对校验对象的参考纹理码存储于区块链上。前述步骤中,系统生成纹理码后,将纹理码整理上链存储至去中心化的区块链中,从而防止该数据在生成后受到篡改。
可选地,对于如何将生成的参考纹理码存储至区块链上,系统在识别出拍摄的待校验图像中的茶纹区域后,将茶纹区域进行网格化,并基于网格坐标,将所述纹理码以JSON文件的键值对方式保存,然后调用智能合约,将所述纹理码以及所述纹理码关联的茶饼信息,进行上链。
可选地,对于如何进行比对,通过确定待校验纹理码与各个所述参考纹理码之间的汉明距离;当汉明距离小于预设汉明距离阈值时,将所述参考纹理码确定为与所述待校验纹理码相匹配的目标纹理码。
进一步的,若所述目标纹理码对应的待选茶饼图像中,所述汉明距离小于所述预设汉明距离阈值的纹理码个数,大于预设个数阈值,则将所述待选茶饼图像对应的茶饼信息,确定为目标茶饼信息。
作为一种可选实施方案,汉明距离阈值可以为12,预设个数阈值可以为纹理码总数的60%,例如纹理码总数为5个,则纹理码个数阈值为3个。
步骤S30,若存在,向请求发送端输出所述目标茶饼信息。
在本实施例中,若成功匹配到对应的目标纹理码,则向该校验请求的发送端,即请求发送端输出目标茶饼信息,包括该茶叶的生产日期、茶叶类型等相关信息。
可选地,若未匹配到对应的目标纹理码,则向请求发送端发送未识别出目标茶饼信息的相关提示,并指示用户重新拍照。
进一步,若用户再次拍照后仍未找到目标茶饼信息,或用户通过请求发送端发送的校验请求超过预设次数阈值,则提示用户该茶叶可能为非法生产的茶叶。
在本实施例提供的技术方案中,基于图像处理的区块链技术的普洱茶溯源方法,利用计算机视觉的方法调节和分割图像,区块链的去中心化、不可篡改、可追溯等特性,实现了普洱茶从种植、加工、包装、运输、销售等各个环节的信息记录和验证,提高了普洱茶的溯源效率和可信度。
参照图3,在第二实施例中,基于第一实施例,所述步骤S10之前,还包括:
步骤S40,获取各个茶纹区域对应的纹理码,其中,所述纹理码基于感知哈希算法对茶饼的校准图像进行纹理分析生成;
步骤S50,将所述纹理码整理上链,作为所述茶饼对应的参考纹理码。
作为一可选实施例,本实施例中在系统接收到请求发送端发送的校验请求前,对通过正规渠道制作的茶饼赋予一唯一的纹理码,并整理上链存储至区块链中。
可选地,对于如何生成纹理码,首先识别所述校准图像中的茶纹区域;然后将所述茶纹区域缩小至目标尺寸,并将缩小至所述目标尺寸的所述茶纹区域的灰度值置为目标灰度级,得到待上链茶纹预处理图像;将所述待上链茶纹预处理图像中每一像素作离散余弦变换,并确定离散余弦变换后的所述待上链茶纹预处理图像的均值;将离散余弦变换后的所述待上链茶纹预处理图像中的每一像素与所述均值作比较,得到每一像素对应的二进制码;组合所述二进制码,得到所述纹理码。
作为一可选实施方式,目标尺寸可以为32*32,目标灰度级为64级灰度。其中,所得的纹理码为1和0组成的64位整数。
示例性地,参见图4,图4为待上链茶纹预处理图像的示意图,其中,图中所示出的三个矩形构成的大矩形区域,即为纹理码在茶饼上对应的区域。
作为一种可选实施方式,可以在茶饼的内飞上设置3个0.5cm*0.5cm的黑色正方形,正方形的中心离最近的边距均为1cm,分别分布于内飞的左上角、左下角以及右上角,左上角与右下角的垂直方向距离和左上角与右上角水平方向距离一致,以此,3个黑色正方形的中心构成了一个等腰三角形,作为校准图像。
在本实施例中,校准图像表征为对拍摄的茶饼图像经过预处理之后,剔除茶纹纹理的图像。
可选地,对于如何生成校准图像。识别茶饼图像中预设的三个定位点坐标,并确定三个所述定位点坐标构成的直角点和三角形腰长;以及识别所述茶饼图像中的左下角点和右下角点;然后根据所述直角点和所述三角形腰长,确定所述直角点到所述左下角点之间的第一向量,以及所述直角点到所述右下角点之间的第二向量,计算所述第一向量和所述第二向量之间的夹角,基于所述夹角旋转所述茶饼图像,得到所述校准图像。
作为一可选实施方案,对拍摄的茶饼图片进行灰度化、高斯模糊、二值化、形态学等预处理,目的是剔除茶纹,找到3个黑色正方形的坐标,由于3个黑色正方形构成一个直角等腰三角形,根据直角等腰三角形的性质,确定直角点(正确方向的左上角点)以及三角形腰长(直角点到两个锐角点的距离),记录直角点与左下角点两点之间的向量,再根据直角点和三角形腰长做垂直方向向量(图形正确方向的向量),通过反三角函数计算两个向量之间的夹角(旋转角),根据计算所得的夹角对图像进行旋转。
可选地,可以使用OpenCV的findContours()函数,寻找图像中的轮廓,并且使用approxPolyDP()函数对寻找到的轮廓做近似多边形拟合,再寻找拟合多边形边数为4的,且面积小于某值的区域,以此来确认内飞中的黑色正方形以及保存其中心点坐标。根据等腰直角三角形的性质,即直角顶点到两个不同的锐角顶点的欧氏距离相等的原理,遍历前述步骤中识别出来的黑色正方形中心点坐标,记录直角顶点坐标以及等腰直角三角形腰长,
利用前述步骤中得到的直角顶点坐标,通过遍历记录中的坐标,找到与直角顶点
不同的第二个顶点,然后计算它与直角点的中点和垂直向量,得到另一个可能的顶点。然后
判断这个可能的顶点是否与第三个顶点坐标接近,如果是,就认为找到了三角形的其他两
个顶点,其中,利用直角顶点与第二个顶点向量逆时针旋转90度的顶点如下所示:
其中,()和)是已知两点的坐标。
进一步的,利用向量点积公式以及反余弦函数,根据前述步骤中得到的三角形腰
长、直角点和左下角点两点的坐标计算两点向量,再根据直角点坐标做垂直方向向量,再通
过反三角函数计算两个向量之间的夹角,其中,利用向量点积公式以及反余弦函数来计算
两个向量之间的夹角如下所示;
最后,使用OpenCV的getRotationMatrix2D()函数取得图像旋转矩阵并进行旋转,原始图像和转换完成的效果示意图如图5所示。
在本实施例中,对于如何识别校准图像中的茶纹区域,根据前述步骤中得到的所述左下角点、所述右下角点和所述直角点,计算所述校准图像的偏移量;基于所述偏移量,将所述校准图像进行网格化;基于预设参数对网格化后的所述校准图像进行预处理;确定预处理后的所述校准图像中每一网格对应的纹理变化值;若所述纹理变化值满足预设条件,则确定所述网格的区域为子茶纹区域;将各个所述子茶纹区域构成的区域,确定为所述茶纹区域。
参见图6,图6为通过网格化处理校准图像后得到的效果示意图。
可选地,纹理变化值可以对图像中每个小区域,计算其边缘强度或方向的平均值和标准差,设定一个阈值或一个范围,用来判断某个小区域的纹理是否有变化。如果某个小区域有纹理变化,当结果被设置为1,说明这个区域可能是茶纹区域,再根据当前茶饼的大小规格,最终确定茶纹区域。
在本实施例提供的技术方案中,分别阐述了如何生成纹理码、如何生成校准,以及如何识别校准图像中的茶纹区域,每一通过正规渠道生产的茶饼上,都可以采用上述方案中提供的方式为其提供一纹理码,从而实现快速、便捷的对普洱茶从种植、加工、包装、运输、销售等各个环节的信息记录和验证。
此外,本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可以存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被普洱茶信息溯源系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有基于感知哈希算法和区块链的普洱茶信息溯源程序,所述基于感知哈希算法和区块链的普洱茶信息溯源程序被处理器执行时实现如上实施例所述的基于感知哈希算法和区块链的普洱茶信息溯源方法的各个步骤。
其中,所述计算机可读存储介质可以是U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
需要说明的是,由于本申请实施例提供的存储介质,为实施本申请实施例的方法所采用的存储介质,故而基于本申请实施例所介绍的方法,本领域所属人员能够了解该存储介质的具体结构及变形,故而在此不再赘述。凡是本申请实施例的方法所采用的存储介质都属于本申请所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。