[发明专利]一种面向工艺参数曲线图的脱敏工具在审

专利信息
申请号: 202010389662.8 申请日: 2020-05-11
公开(公告)号: CN111696050A 公开(公告)日: 2020-09-22
发明(设计)人: 蔡蓓蓓;王林汝;唐威;林飞;古元 申请(专利权)人: 江苏省互联网行业管理服务中心;北京亚鸿世纪科技发展有限公司
主分类号: G06T5/00 分类号: G06T5/00;G06T7/136
代理公司: 暂无信息 代理人: 暂无信息
地址: 210011 *** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 面向 工艺 参数 曲线图 工具
【权利要求书】:

1.一种面向工艺参数曲线图的脱敏工具,其特征在于由图片输入模块、图像去噪模块、图像二值矩阵转换模块、曲线扫描模块、阈值设定模块、曲线切片模块、曲线中心扫描器、曲线修正模块和图像合并模块组成;

由图片输入模块调用openCV库的imread()读取图片文件生成图片文件的图像矩阵;

由图像去噪模块调用openCV库的cvtColor()函数转换图像矩阵的颜色空间,生成灰度图像矩阵;由图像去噪模块调用openCV库的平滑滤波函数blur()去掉灰度图像矩阵的噪点,生成去噪后的图像矩阵;

由图像二值矩阵转换模块调用openCV库的threshold()函数处理去噪后的图像矩阵,生成只有两个颜色值的二值图像矩阵,二值图像矩阵中值为255 是白色像素点,值为0的是黑色像素点;

由曲线扫描模块调用openCV库扫描二值图像矩阵,确定曲线所在区域,openCV中区域由一个左上角的坐标点和带有宽和高的矩形来表示,记为R:{左上角横坐标x,左上角纵坐标y,宽度w,高度h};

由曲线扫描模块定义柱条,在垂直方向上由连续黑色像素点构成的宽带为1个像素的矩形区域称之为柱条,柱条用一个五元组对象{cx, cy,ty, by, rc}来记录其关键信息,其中cx为柱的x坐标值,cy为水平扫描线的y坐标值,ty为柱的顶部y坐标值,by为柱的底部y坐标值,rc为候选标记;一个孤立的黑点也可以用柱条来表达,一个孤立的黑点是高度为1个像素的柱条;

由阈值设定模块设定作为连续曲线的最小长度阈值和最小宽度阈值,分别记录为长阈值和宽阈值,并将长阈值和宽阈值组合生成二值图像长阈值和宽阈值;

由曲线扫描模块应用曲线扫描算法得到二值图像矩阵中所有单曲线及所有单曲线的曲线区域,生成单曲线统计表;

曲线扫描算法由以下步骤实现:

步骤1,执行水平扫描,从二值图像矩阵顶端坐标为(x = 1,y=1)开始,从左向右扫描,当遇到第一个黑色像素点时,记录该点坐标,保持x值不变,在垂直方向向上移动y坐标,逐个判断(x,y-1)点的颜色是否为黑色,直到出现白点或y=1为止,此时的y坐标值为柱条的顶端,是为cty;然后垂直向下移动y坐标,逐个判断(x,y+1)点的颜色是否为黑色,直到出现白点或y等于二值图像矩阵高度,此时的y值称为底部,是为cby,得到最新的柱条,起始点横坐标x作为ccx,起始点纵坐标y作为ccy,四元组记为CC:{ccx, ccy,cty,cby};将首个扫描到的柱条,设置其候选标记rc=0,加入到柱条向量表Vb[]中,同时初始化前一柱条,记为PC:{pcx,pcy,pty,pby}, PC 等于CC,然后转入步骤5;如果当前行没有一个黑点,则修改x=1,y=y+1,重复步骤1,开始从下一行扫描;

步骤2,先记住当前扫描坐标点(x,y)值为(x0,y0),首先判断x0 是否等于二值图像矩阵宽度, 当x0等于二值图像矩阵宽度时转入步骤4,当x0不等于二值图像矩阵宽度时否则继续向右探测下一个坐标点(x0+1,y0)处的柱条;当(x0+1,y0)点是黑点,则根据步骤1的柱条扫描算法,获得新柱条,记为NC:{ncx,ncy, nty, nby},设置CC = NC,然后转入步骤3;当(x0+1,y0)是白点,则垂直向上连续扫描像素点(x0+1, y从y0逐个递减),直到出现黑点或y= 1为止,当y=1时则表明(x0+1,y0)点处没有上半柱条,当出现黑点将此处的y坐标记为(x0+1,y0)点处的上半柱条的底部,记为uby,继续执行柱条扫描算法,得到整个上半柱条,记为UC:{ucx,ucy,uty,uby},其中ucx = x0+1, ucy = y0;从(x0+1,y0)点处垂直向下连续扫描像素点(x0+1, y从y0逐个递增),直到出现黑点或y等于二值图像矩阵高度为止,当y等于二值图像矩阵高度,则表明(x0+1,y0)点处没有下半柱条,当出现黑点则将此处的y坐标记为(x0+1,y0)点处下半柱条的顶部,记为dty,继续执行柱条扫描算法,得到整个下半柱条,记为DC:{dcx,dcy,dty,dby},其中dcx = x0+1, dcy = y0;当(x0+1,y0)点上半柱条和下半柱条都不存在,说明(x0+1)处是空白间隔,创建一个空白柱条对象EC:{x0+1,y0,0,0}且rc=0,添加EC到柱条向量表Vb[],设置x=x0+1,重复步骤2;当(x0+1,y0)点上半柱条和下半柱条都存在,说明(x0+1)处是一个轮廓空洞,创建一个空白柱条对象EC:{x0+1,y0,0,0}且rc=0,设置x=x0+1,重复步骤2;当(x0+1,y0)点只有上半柱条,设置CC = UC, 转入步骤3;当(x0+1,y0)点只有下半柱条,设置CC = DC,转入步骤6;

步骤3,将柱条CC与前一柱条PC进行比较,判断两个柱条是否相邻;当柱条CC与柱条PC相邻时,设置rc=1,并把CC柱条加入Vb[],同时将前一个临接柱条的rc也设置为1,然后设置前一柱条PC = CC,转入步骤2;当柱条CC与柱条PC不相邻时,设置x=ccx+1,y=ccy, 转入步骤2;当将柱条CC与前一柱条PC满足下列条件中的任何一个则判断柱条CC与柱条PC相邻:条件一pcx +1= ccx且pty∈[cty,cdy] ,条件二 pby∈[cty,cby] ,条件三cty = pty 且cby = pby,条件四pby = cty-1 ,条件五pty = cdy+1;

步骤4,检查柱条向量表Vb[],从中找到第一个rc等于1的柱条记录,记为FC:{fcx,fcy,fty,fby},从FC中得到柱条的cx,cy坐标赋值给x,y,同时记(x,y)为(x0,y0),转入步骤5;

步骤5,当x等于1,转入步骤7;当x不等于1时,从右向左扫描探测前一个坐标点(x0-1,y0)处的柱条;当有一个柱条,记为CC,转入步骤6;当只有一个上半柱条,记为UC,设置CC =UC,转入步骤6;当只有一个下半柱条,记为DC,设置CC = DC,转入步骤6;当上半柱条和下半柱条都不存在,说明(x0-1)处是空白间隔,创建一个空白柱条对象EC:{x0-1,y0,0,0}且rc=0,设置x=x0-1,重复步骤5;当上半柱条和下半柱条都存在,说明(x0-1)处是轮廓空洞,创建一个空白柱条对象EC:{x0-1,y0,0,0}且rc=0,设置x=x0-1,重复步骤5;

步骤6,当CC与FC之间满足曲线柱条关系,设置rc=1,并把CC柱条加入柱条向量表Vb[],然后设置前一柱条FC = CC,转入步骤5;当CC与FC之间不满足曲线柱条关系,设置x=ccx-1,y=ccy,转入步骤5;当将柱条CC与柱条FC满足下列条件中的任何一个则判断柱条CC与柱条FC满足曲线柱条关系:条件一fcx-1= ccx且cty∈[fty,fdy] ,条件二cby∈[fty,fby],条件三(fty = cty 且fby = cby,条件四cby = fty-1,条件五cty = fdy+1;

步骤7,从柱条向量表Vb[]第一个元素开始查找第一个rc为1的元素,然后扫描后面的rc为1的元素,直到出现rc等于0为止;定义统计分组对象S:{b,e,t},其中b为当前连续rc为1的第一个元素的柱条向量表Vb[]下标,e为一个rc为1的元素的柱条向量表Vb[]的下标,t为连续rc为1的元素个数;将统计分组对象S:{b,e,t}加入统计向量表Vs[];跳过rc为0的元素,继续向上扫描连续的rc为1的元素,直到扫描完所有的柱条向量表Vb[]元素,得到统计分组表Vs[],转入步骤8;

步骤8,遍历Vs[],找出统计分组对象S:{b,e,t}中t值最大的对象,记为MaxS;判断MaxS中的t是否大于二值图像长阈值和宽阈值中的宽阈值;当MaxS大于宽阈值,则标记此统计分组对象S:{b,e,t}分组为目标曲线分组;根据S:{b,e,t}中的b和e,查询Vb[],提取Vb[b].cx和Vb[b].cy得到曲线开始坐标,提取Vb[e].cx和Vb[e].cy则为曲线结束坐标;扫描Vb[b]到Vb[e]的所有ty和by,可以得到当前曲线柱条中的最小y值mty和最大y值mby,取Vb[b].cx-2,Vb[b].cy-2,Vb[e].cx - Vb[b].cx + 4, mby - mty+4得到曲线区域对象Rc,加入曲线区域向量表Vr[],保存曲线向量Vb[b:e]到曲线柱条表Vc[],清理Vs[]表,修改水平扫描线坐标x=1,y=Vb[b].cy+mby - mty+4, 跳过当前曲线,转入步骤9;

步骤9,当水平扫描线y坐标等于二值图像矩阵高度时,结束曲线扫描;当水平扫描线y坐标不等于二值图像矩阵高度时否则转入步骤1;

步骤10,移动水平扫描线y坐标到前一曲线区域的底部,重复上述操作,直到图片的底部,获得所有单曲线并且得到每条单曲线的曲线区域;

由曲线切片模块遍历曲线扫描模块输出的向量表Vr[],逐个提取Vr[]的单曲线区域对象Rc,使用单曲线区域对象Rc调用openCV矩切割方法,从二值图像矩阵上切割出与单曲线区域对象Rc同样大小的区域,得到Mc,将Mc存入向量表Vc[];由曲线切片模块从图像去噪模块生成的灰度图像矩阵上切割出与单曲线区域对象Rc同样大小的区域,得到Md,调用openCV库中的filter2D过滤算法,根据前景图和非前景图的像素深度区别过滤掉Md的曲线图像,然后转换颜色空间到BGR,最后得到矩阵Mf,将Mf存入向量表Vf[],Vf[]代表所有单曲线区域背景矩阵;

由曲线中心线扫描器判断曲线中心线,具体方法为:从向量表Vc[]中提取一个Mc对象,构造水平扫描线对Mc逐行扫描,扫描线的开始坐标为x=1,y=1,其序号为i=1;第一步保持y不变化,逐个递增x,检测每个水平点出的像素颜色,如果是黑色,则当前扫描行的统计值s加1,否则保持s不变化直到x达到单曲线区域宽度,即一行扫描结束,将扫描线序号和统计值s加入数组V[i,s],在当前的s比之前的s最大值大的情况下,更新m;在当前的s比之前的s最大值小的情况下,保持m不变化;当m - s Δa时,Δa为设定的显著阀值参数,此时最大值m所在的扫描线就是曲线的最佳中心线,将扫描线开始点坐标x,y加入数组A[];否则,重设x=1,y=y+1,移动到下一行,继续扫描,直道找到一条曲线中心线为止;重设m=0,从Vc[]中提取下一个Mc对象,重复执行上面的流程,找到所有单曲线中心线;

由曲线修正模块使用 单曲线统计表和单曲线中心线,对所有单曲线进行脱敏计算,生成修正后的单曲线集,脱敏计算的具体方法是:

步骤1)调用openCV库的HoughLinesP算法对Vr[]向量中曲线区域逐个进行检测,得到图中的近似直线段,由起点和终点的坐标来表达L:{(x0,y0), (x1,y1)},并将L加入到向量表P[];

步骤2)从曲线的中心线数组A[]中取出一条中心线L,从中心线开始点沿着x轴,逐个提取x坐标处的柱条,提取Vb[L.x].ty、Vb[L.x].by就是曲线当前点的波峰和波谷;

步骤3)根据具体的脱敏策略执行脱敏业务,可选的脱敏策略包括:

a)当选择做波峰波谷切削,则根据输入的峰谷阀值,以中心线L起点(L.x0,L.y0)开始,从左向右检测(L.x,L.y0)坐标点处的波峰,超过阀值的波峰,将其ty值设置为阀值,否则保持ty值不变化;超过阀值的波谷,将其by值设置为阀值,否则保持by值保持不变化;在只有背景图的Mf上根据当前点(L.x,ty)和前一点(L.x-1,by)的坐标绘制一条直线;重复此过程,最终得到针对原始曲线的脱敏曲线;

b)当选择做局部幅度调整,只需要改变中心线上指定x点处的柱条的ty或by值,再在Mf上绘制曲线;

c)当选择做曲线局部坡度调整,在中心线指定(x,y)点处根据设定的斜率和截距求出下一点的坐标(x+1,y’),再在Mf上绘制曲线,然后移动到x+1点继续前面的操作;当x到达中心线末端,则完成当前曲线的脱敏操作;

(4)遍历直线段数组P[],检测P中每条直线段的斜率,区分出是水平标尺线还是其它线条;

其它的线条则与曲线中心线数组A[]中的直线进行相近性判断,如果两条线非常接近即斜率和首尾点的距离都小于等于2个像素,判断此线段为曲线的近似直线,直接丢弃,剩下的就是趋势线,将其画到Mf上;

由图像合并模块完成图像矩阵与修正后的单曲线集的合成,具体方法是:从Vf[]中提取所有经曲线修正后的切片图像Mf,根据Mf对应的区域信息Rc,使用openCV库图片合成算法copyTo()将Mf与图像矩阵合成,得到脱敏后的图片文件。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏省互联网行业管理服务中心;北京亚鸿世纪科技发展有限公司,未经江苏省互联网行业管理服务中心;北京亚鸿世纪科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010389662.8/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top