仓储物料数量的检测问题是仓储监管部门要解决的重要问题。由于物料仓储的地域分散性和监管力量的缺乏, 以及在进行人工监管时所造成的偷盗、监守自盗等现象, 迫切需要有效方法进行智能监管与稽核。仓储中存储的物料多数为颗粒、液态流体或半流体性质的物质, 传统的测量方法主要使用卷尺和坡度仪等进行物料体积的测量, 这样耗费了大量的人力、物力, 而且测量方法原始, 效率低下, 历时长, 耗费巨大, 且测算精度不高。如粮仓储粮数量的检查, 其方法在信息技术高速发展的今天显得十分落后[1]。目前常用的方法主要是非接触智能测量方法。Fan Chao等[2]研究使用基于CAN-bus的粮仓储量监控系统, 在粮仓中布置压力传感器网络, 根据压力测量值拟合出粮食的数量, 具有一定可靠性与应用价值, 然而存在误差以及庞大的网络复杂性问题, 并且大量传感器的使用使得成本与维护费用较高。为了实现对粮食的有效监管与稽核, 林鹰等[3]提出了矩形标尺的图像识别方法, 利用局部边缘检测算子及迭代阀值算子分割算法相结合进行矩形标尺判定和装粮高度计算, 算法简单, 有良好的边缘检测效果, 但处理后的某些边缘仍有一定宽度, 对于标尺测量存在较大误差, 而且单靠标尺的测量方法难以满足实际测量应用。Lin Ying等[4]提出一种散装粮粮食数量的智能稽核方法, 通过在粮仓内壁安装摄像头并且设置基准标识点, 结合边缘检测与标记识别技术进行图像测量, 然后根据仓储三维重构的几何模型的计算方法达到了测量与监管效果, 然而几何模型本身存在近似计算误差, 而且缺乏实际验证。在研究上述测量方法的基础上, 本文通过建立基于空间编码的仓体标识模型, 结合图像处理分析算法设计实现了一种用于仓储中物料体积储量的测量方法。
空间二进制编码是向被测物投影一系列栅状的由黑白条纹构成的图案, 将这些编码图案在被测物表面投影所形成的条纹图像进行组合, 把被测物空间的区域分割成一系列条状、狭窄的子区域, 每个子区域有唯一的一个二进制编码标识[5]。基于空间编码的仓体标识设计, 必须满足空间编码的规则: (1) 区域分割后, 每个区域的编码必须是独立和唯一的; (2) 编码要求满足相邻区域编码间的Hamming距离均是1; (3) 编码方案要满足采样定理, 并且受硬件设备分辨率的限制。
常见的仓储类型主要有房式仓和浅圆仓或筒仓等, 根据这些仓储形状分别建立基于空间编码的长方体和圆柱体两种仓储的仓体标识模型, 如图1所示。
(1) 如图1 (a) 所示, 当仓储外形属于长方体模型时, 其4个侧面和底面设有黑白相间的方格标识, 其中相邻侧面两侧边部的一列方格分割为边长等于原长度一半的黑白相间小方格, 作为起始标识。
(2) 如图1 (b) 所示, 当仓储外形属于圆柱体模型时, 进料口位于顶部中央, 在进料口下底面的垂直投影处设有竖直的中央标尺。所述仓储的环形内侧设有黑白相间的方格标识, 将圆形仓底的某一条直径两端沿轴向延伸的两列方格分割为边长等于原长度一半的黑白相间小方格, 并且作为起始标识;中央标尺设有与起始标识的边长相等的黑白相间的条纹标识。
该方法主要针对上述长方体与圆柱体仓储模型, 合理布置多个摄像头进行编码标识的图像拍照。照射到仓壁的光反射回摄像头, 图像呈现出灰度不同且对比鲜明的信息, 由于每个编码方格距离摄像头的距离不同, 所以所呈现的图像信息就不同。摄像装置每隔一定周期实时采集图像信息, 能够检测到物料数量及其变化量。
对于长方体与圆柱体模型的仓储, 其编码格式与图1所示相同。其中长方体仓储的仓壁与仓底粉刷以边长分别为1.0和0.5m的黑白方格;圆柱体仓储的仓壁粉刷以1.0 m为边长的黑白相间的方格, 而且中央标尺上设有0.5m的黑白相间的条纹标识。如图2所示平房仓与筒仓内的摄像头分布示意图, 摄像头固定放置平房仓仓顶的四面, 分别拍摄其对应墙壁的图像, 并且设定拍摄图像的序列号;在筒仓中摄像头固定放置在锥体仓顶面的同一条母线上, 分别拍摄被两条起始标识分割为两等份的仓壁及标尺, 并设定图像的序列号。
合理调整并固定摄像头拍照角度, 未装入物料前进行初始化拍照, 在实际测量中每隔一定周期采集仓内的实测图像, 并上传至监控中心进行图像的分析处理。该图像测量的算法程序流程图如图3所示。
(1) 图像归一化。在进行图像处理前对初始化图像与实测图像进行归一化处理。目前常用的归一化算法是基于矩的归一化, 其过程为坐标中心化、x-shearing归一化、缩放归一化和旋转归一化。为使归一化过程简单化, 将放射变换矩阵分解为3个简单变化矩阵相乘的形式:
其中:α, β, δ∈R, ε∈ (0, π], 且保证分解的唯一性[6]。从左至右, 分别把3个变换矩阵称之为图像的剪切、缩放与旋转变换。角点对于旋转有很好的抵抗性, 所以只需坐标、shearing或缩放归一化即可。
(2) 预处理。为了消除噪声又要保持图像的细节, 使用非线性滤波算法进行图片的预处理。对图像进行中值滤波处理, 可以去除脉冲噪声、椒盐噪声的同时保留图像的边缘细节。
(3) 角点检测。Harris算子与MIC算子作为角点检测常用算法, Harris算子应对图像能力更强, 能够提取出较好的角点信息, 同时具有旋转不变性, 使用Harris角点检测算法分别对初始图像与实测图像进行处理。Harris算子受信号处理中自相关函数的启发, 利用自相关联系的矩阵M (M也可以考虑成一个高斯窗或矩形窗) 在图像上顺序移动。由模板窗口取得原图像衍生出2×2的局部结构矩阵:
其中:ω (x, y) 为窗口函数, Ix、Iy分别为图像中的一点沿x轴与y轴的梯度。对于该模板矩阵取特征值λ1和λ2, 建立度量函数有
(4) 数据处理与角点配准。初始化图片与实测图片经过角点检测后进行角点像素坐标的判断、分析与筛选等数据处理。在判断编码方格的大小时, 检测每一个方格的前一个距离摄像头近的方格长度, 若其长度差不超过正常范围, 则认定为整方格大小;若判断方格不足一格长大小, 则根据图像像素与实际方格大小的比例关系进行三维空间重建, 并且以初始化图像作为参考图像进行基于角点的图像配准处理, 计算求得该编码方格高度。
设一面仓壁标识共有n列, H为编码方格的总高度, i、j分别表示行列序号, x表示满足一整方格大小的个数, 且i=x+1。设定方格边长1m, a为实测图像中不足一整格的角点纵坐标, 即 (i+1) 行角点, c为初始化图像中同一行的角点纵坐标, b为a或c的前一行的角点纵坐标, 求得物料高度
(5) 体积储量计算。对于长方体仓储要求物料平堆堆放时, 如式 (5) 计算求得体积储量。根据仓壁角点信息容易求得仓壁的长度与宽度分别为M、N, 假设采集到的仓内堆放物料覆盖住的四侧仓壁的高度分别为i1、i2、i3、i4, 当前物料体积
对于圆柱体仓储, 物料从上方中央倒入, 从下方开口处输出, 物料形状多为圆柱形或圆柱形与椎形的组合体, 易知仓储底面半径为r, 储粮高度为H (标识高度) 。假设采集到仓壁标识的高度与中央标杆高度分别为i1、i2, 当前物料体积
以粮仓作为模拟实验的对象, 进行仓储储量测量的模拟实验, 能够达到实际粮仓实验的效果。选取长方体木箱 (40cm×32cm×24cm) 模拟平房仓, 用沙子替代粮食, 装入沙子的总体积为21 120cm3。使用CAD制作编码标识图, 并贴于木箱内壁, 设定大小方格标识的边长分别为4、2cm。图像采集系统由PC机和IP/Network Camera组成 (内置CMOS传感器, VGA为640×480) , 图像处理使用Matlab仿真。
摄像头距离木箱垂直高度7cm处放置, 调整一定角度首先进行初始化拍照, 然后在装入沙子且平堆堆放后进行实测拍照, 并以BMP格式保存。使用Matlab设计基于空间编码的图像测量算法进行图像处理, 初始化图像与实测图像经过Harris角点检测并作截图处理后的效果如图4所示。
通过程序判断、分析和筛选可以选取多组数据, 选取3行3列用于计算的角点像素坐标, 数据如表1, 根据式 (4) 计算沙子高度
已知木箱的长宽大小, 由式 (5) 可计算出该长方体沙堆的体积为21 327.36cm3, 绝对误差为207.36cm3, 相对误差为0.98%。该实验结果达到了满意的效果, 其测量误差主要与人为平堆所造成的误差有关。大量实验结果显示, 在已知粮食密度的条件下, 计算的粮食数量误差不高于3%, 符合粮油管理部门的规定。
该方法的测量精度直接与编码方格大小、图像算法以及硬件设备分辨率有关, 相比于上述的智能测量方法具有算法简单、效率高、精度高等特点。在图像分辨率限制的范围内, 编码方格越小, 测量精度就越高。为了进一步提高精度, 作角点检测的亚像素级坐标改进, 达到了较高精度的测量效果。
基于空间编码的仓储储量测量方法通过设计基于空间编码的仓体标识模型, 运用图像测量算法计算仓储体积储量, 实现了有效监管与实际测量。该测量方法不仅为以后进一步研究提供了可靠性参考, 而且具有低成本、高效、算法简单等优点, 易于在仓储监测应用中被普及。