欢迎来到知嘟嘟! 联系电话:13336804447 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13336804447
知嘟嘟经纪人
收藏
专利号: 2015101022360
申请人: 重庆邮电大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-02-23
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于轮廓曲率的碎片匹配方法,首先对碎片进行预处理操作,获得每个碎片的轮廓曲线的曲率串,然后利用轮廓角点将闭合轮廓曲线分割成曲线边,并剔除规则碎片边界,最后使用最长公共子序列算法(LCS算法)找出轮廓间最长匹配曲线段并完成拼接:步骤1:碎片预处理

包括碎片二值图像的生成、二值图像中孤立点和气泡点的去除,以及碎片轮廓曲线的提取;

1.1首先将碎片转换成2D的数字图像信息,将彩色图像转化为灰度图像,得到碎片二值化图像;

1.2对图像分别施加开操作和闭操作运算,消除碎片图像的孤立点和气泡点;

1.3先使用轮廓跟踪算法进行碎片轮廓曲线,然后对提取的轮廓曲线进行重新采样:依次提取位于第奇数个位置的像素点,舍弃轮廓曲线上面的第偶数个位置的像素点,并绘制成新的碎片轮廓曲线;

步骤2:获得每个碎片的轮廓曲线的曲率串

采用曲率来描述轮廓曲线的特征:

轮廓曲线的参数方程为 该轮廓曲线的曲率K可使用如下公式计算这里

其中(xn-2,yn-2),(xn-1,yn-1),(xn,yn),(xn+1,yn+1),(xn+2,yn+2)分别为轮廓曲线上相邻的五个像素点的坐标;

把首次检测到的边缘轮廓点记为轮廓曲线的起点,利用式(1)分别计算出每个碎片预处理后的闭合轮廓曲线上所有像素点的曲率值,并将其按照顺时针方向存储为曲率串C={c1,c2,…,cm},以便后续轮廓曲线间的匹配查找;

步骤3:划分闭合轮廓曲线

采用改进的Harris角点检测算法:

首先,令E(u,v)为图像窗口灰度改变的大小,计算公式为2

这里I(x,y)表示像素点的灰度值,w(u,v)为高斯滤波函数,w(u,v)=exp(-ρ/2σ),其中ρ=u2+v2,为了便于计算,把式(2)按泰勒公式展开并整理,可得简化,近似计算得

由二次型相关理论知,当||(u,v)||=1时,E(u,v)取得的最大值为矩阵M的最大特征值;令α,β分别表示矩阵M的两个特征值,则当α,β取得最大值时,E(u,v)也可以取得大值,由此给出像素点的窗口灰度变化响应函数:R=Det(M)K-Tr(M),  (3)

这里Tr(M)=α+β,Det(M)=αβ;

利用式(3)求出轮廓图像每个像素点的窗口灰度变化响应函数值构成R值矩阵,并按下述方法遍历该矩阵:将小于threshold的R值置为零,然后查找R值最大的像素点,若有多个,则任选其一,则该点判断为角点,并设置其邻域内的所有像素点的R值为零,邻域半径r设置为10;重复查找R值最大的像素点,完成上述操作,直到所有像素点的R值均为零;

步骤4:剔除规则轮廓曲线

对步骤3得到的曲线边进行如下遍历操作:如果该曲线边中曲率落入区间θ的像素点个数占像素点总数的比例大于阈值t,则认为该曲线边是直线边,并把该直线边从曲线边集合中删除, 否则认为不是规则曲线,并保留;

步骤5:使用LCS算法寻找碎片轮廓的匹配段

选取位于不同碎片的两条曲线边对应的曲率串,将其中一个边对应的曲率串按相反方向存储,即A={a1,a2,…,am}和B={bn,bn-1,…,b1},这里ai和bj分别表示两条曲线边的第i个和第j个像素点处的曲率(i=1,2…,m;j=1,2,…,n);

用LCS算法计算两条子轮廓曲线的最长公共子序列,然后对所有的最长公共子序列进行检测;

其中,用LCS算法计算两条子轮廓曲线的最长公共子序列的具体算法如下:首先创建二维数组Q[m,n]和P[m,n],Q用来记录两曲率串像素点间的匹配结果,P用来记录匹配像素点的方向关系,其中m、n分别为曲率串A和B的长度,并初始化二维数组Q中所有元素都为0;

循环遍历两条曲率串,设参数i和j分别从0循环到i==m,j==n:如果曲率串A中i处的曲率值和曲率串B中j处的曲率值的差的绝对值小于一个阈值ε,则设Q[i,j]=Q[i-1,j-

1]+1,P[i,j]=‘ul’,否则,如果Q[i-1,j]>Q[i,j-1],做Q[i,j]=Q[i-1,j],且P[i,j]=‘up’;做Q[i,j]=Q[i,j-1],且P[i,j]=‘left’;

上述循环结束后,记得到了两曲率串间匹配的所有可能,并求得匹配曲线段的长为Q[m,n],下面通过逆向便利二维数组Q来确定匹配序列的像素点坐标,循环中止条件为i==

0或者j==0:如果P[i,j]=‘ul’,做i=i+1,j=j+1,将像素点i存入匹配序列内;如果P[i,j]=‘up’,则i=i-1,j=j,否则,i=i,j=j-1。