[发明专利]基于视图的体素几何参数提取方法有效

专利信息
申请号: 201710896904.0 申请日: 2017-09-28
公开(公告)号: CN107680154B 公开(公告)日: 2020-01-10
发明(设计)人: 许社教;杜美玲;靳牧群;李唯;韩硕;杨西惠;张建国 申请(专利权)人: 西安电子科技大学
主分类号: G06T15/08 分类号: G06T15/08;G06T15/10;G06T17/00
代理公司: 61108 西安吉盛专利代理有限责任公司 代理人: 陈光磊
地址: 710071 陕西省*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明针对模型引导的三维重建问题,提出基于三视图的人机结合的体素几何参数提取方法。该方法以记录一个组合体三视图的数据文件为输入,通过图线分类读取、视图分割和投影坐标转换得到以两个坐标形式表示的组合体的三个投影图,接着在搭建的四视区图形平台的左上、左下和右上视区分别显示主视图、俯视图和左视图,然后利用图形平台的交互技术并结合人读图的优势人机交互描绘非拉伸体素的三个投影或拉伸体素的基图形实形及拉伸线,最后由计算机识别出体素类型并输出体素的几何参数。本发明的体素几何参数提取方法具有简单高效、运算量小、可靠并且很实用等优点,可用于逆向工程中的三维建模、基于草图的产品三维设计和制图课程中读组合体视图的计算机辅助教学。
搜索关键词: 几何参数 组合体 体素 图形平台 拉伸体 三视图 视区 计算机辅助教学 读取 计算机识别 交互技术 逆向工程 人机交互 人机结合 三维建模 三维设计 三维重建 视图分割 数据文件 投影坐标 坐标形式 俯视图 拉伸线 输出体 投影图 引导的 运算量 左视图 可用 实形 图线 投影 课程 描绘 分类 转换 记录
【主权项】:
1.基于视图的体素几何参数提取方法,其特征是:包括如下步骤:/n步骤101:打开一个三视图数据文件;三视图数据文件是在X轴水平朝右、Y轴竖直朝上、原点在左下角这样的二维直角坐标系下描述的一个组合体图形文件,其中,组合体的主视图、俯视图和左视图之间严格符合“长对正、高平齐、宽相等”的投影规律且视图按1:1的比例绘制,视图中的图线包括直线段、圆和圆弧,图线的线型包括粗实线、细虚线和细点画线,直线段用其两个端点和线型描述,圆用其圆心、半径和线型描述,圆弧用其圆心、半径、起始角度、终止角度和线型描述;/n步骤102:从打开的文件中读取图线信息,将读取到的直线段数据存入链表Line_list,圆数据存入链表Circle_list,圆弧数据存入链表Arc_list中;/n步骤103:遍历链表Line_list,Circle_list,Arc_list,找出三视图分割线,从三视图图形中分割出主视图、俯视图和左视图;/n步骤104: 将分割出的主视图构成信息按直线段、圆和圆弧类型分别存入链表FrontViewData.Line_list、FrontViewData.Circle_list、FrontViewData.Arc_list中,将分割出的俯视图构成信息按直线段、圆和圆弧类型分别存入链表TopViewData.Line_list、TopViewData.Circle_list、TopViewData.Arc_list中,将分割出的左视图构成信息按直线段、圆和圆弧类型分别存入链表SideViewData.Line_list、SideViewData.Circle_list、SideViewData.Arc_list中;/n步骤105:建立投影坐标系,求出组合体的三个投影坐标;/n步骤106:利用VC++6.0和OpenGL搭建一个图形平台,该图形平台具有左上、左下、右上、右下四个视区,其中左上视区用于绘制主视图,建立的二维直角坐标系的原点在视区的右下角,X轴正向水平朝左,Z轴正向竖直朝上;左下视区用于绘制俯视图,建立的二维直角坐标系的原点在视区的右上角,X轴正向水平朝左,Y轴正向竖直朝下;右上视区用于绘制左视图,建立的二维直角坐标系的原点在视区的左下角,Y轴正向水平朝右,Z轴正向竖直朝上;右下视区用于显示重建的三维模型,坐标系为常见的三维右手直角坐标系;该图形平台能绘制线型为粗实线、细虚线、细点画线的直线段、圆和圆弧,具有用于体素信息提取的主视图、俯视图、左视图切换按钮和非拉伸体素投影描绘按钮、提取拉伸体素按钮、体素提取结果按钮,具有用于体素信息提取的延伸线绘制、特征点捕捉和投影关联功能,具有每个视区内的图形屏幕缩放功能;非拉伸体素是指长方体、楔形体、圆柱体、圆锥体和圆球体,楔形体是由一个长方体沿表面对角线切分得到的全等的两个立体之一;拉伸体素是由一个平行于某个坐标平面的基图形沿坐标轴正方向等厚度拉伸形成的一个立体;基图形是最靠近原点的用于拉伸形成一个体的平面上的封闭图线,是由纯直线段、纯圆弧段或直线段、圆弧混合构成的首尾相连的图线;延伸线是指以视图上已有或描绘的直线段端点、中点、圆或圆弧的圆心、直线段交点为起点,以鼠标移动方向为方向的水平或竖直射线,延伸线以点线型绘出;特征点捕捉就是抓取视图上直线段的端点、中点,抓取圆、圆弧的圆心,抓取两直线段或直线段、延伸线的交点,抓取就是当移动的鼠标光标位置与这些特征点的距离小于0.001时,这些特征点就以小尺寸的特殊符号显示出来,端点符号为“□”,中点符号为“△”,圆心符号为“●”,交点符号为 “×”,当这些特征点的显示符号出现后,按下或松开鼠标器拾取键后就把这些特征点作为要输入的点;投影关联是指在一个视图上描绘出体素一个投影后,在其他两个视图上将满足“长对正、高平齐、宽相等”约束关系的图线上的端点、圆心以绿色小圆圈醒目显示;/n步骤107:在搭建的图形平台左上视区绘出链表FrontViewData.Line_list、FrontViewData.Circle_list、FrontViewData.Arc_list中的图线,得到主视图;在图形平台左下视区绘出链表TopViewData.Line_list、TopViewData.Circle_list、TopViewData.Arc_list中的图线,得到俯视图;在图形平台右上视区绘出链表SideViewData.Line_list、SideViewData.Circle_list、SideViewData.Arc_list中的图线,得到左视图;/n步骤108:判断是否按下提取拉伸体素的按钮,若是则转至步骤116,若不是则转至步骤109;/n步骤109:点击视图切换按钮,分别在主视图、俯视图、左视图上描绘直线段、圆、圆弧图线,若描绘的直线段不是视图本身的线段,则将其按所在的视图分别存入链表FrontViewData.Line_list、TopViewData.Line_list、SideViewData.Line_list中,描绘的图线以红色绘出;描绘图线是指利用特征点捕捉、延伸线和投影关联工具沿视图上的轮廓线进行绘制或利用图线端点、中点、圆心、交点为特征点进行绘制;描绘直线段的方法是:移动鼠标光标到某一特征点并按下鼠标左键,然后按住鼠标左键不放并移动鼠标光标到另一特征点时松开鼠标左键,则在此两个特征点之间描绘一条直线段;描绘圆、圆弧的方法是:移动鼠标光标到某一圆或圆弧的圆心并按下鼠标左键,然后按住鼠标左键不放并沿半径方向移动鼠标光标到弧上时松开鼠标左键,若原视图图线为圆则描绘出圆,若原视图图线为圆弧则描绘出圆弧;/n步骤110:分别在三个视图中提取体素投影图元信息,并将其保存在各自的图元信息链表中;图元信息是指构成体素投影的单元信息,包括直线段、圆、圆弧;/n步骤111:对主视图体素投影特征进行识别,并对识别结果进行标记;/n步骤112:对俯视图体素投影特征进行识别,方法为执行步骤111,将步骤111中的链表FrontViewData.IXD.Circle_list替换为TopViewData.IXD.Circle_list、链表FrontViewData.IXD.Line_list替换为TopViewData.IXD.Line_list,投影特征为圆时标记为T_C,投影特征为三角形时标记为T_T,投影特征为矩形时标记为T_R;/n步骤113:对左视图体素投影特征进行识别,方法为执行步骤111,将步骤111中的链表FrontViewData.IXD.Circle_list替换为SideViewData.IXD.Circle_list、链表FrontViewData.IXD.Line_list/n替换为SideViewData.IXD.Line_list,投影特征为圆时标记为S_C,投影特征为三角形时标记为S_T,投影特征为矩形时标记为S_R;/n步骤114:识别体素类型并提取体素参数,并将识别出的体素三个投影以蓝色绘出;/n步骤115:输出体素类型和参数,体素类型为长方体、楔形体、圆柱体、圆锥体和圆球体之一,长方体的参数为定位点和长、宽、高尺寸,楔形体的参数为定位点、三个轴向尺寸和厚度方向的三个方向角,圆柱体的参数为定位点、底面半径、高度和轴线方向的三个方向角,圆锥体的参数为定位点、底面半径、高度和轴线方向的三个方向角,圆球体的参数为球心和半径;将链表FrontViewData.IXD.Line_list、FrontViewData.IXD.Circle_list、TopViewData.IXD.Line_list、TopViewData.IXD.Circle_list、SideViewData.IXD.Line_list、SideViewData.IXD.Circle_list清零;/n步骤116:按照步骤109的方法,在反映拉伸体素基图形实形的视图上描绘基图形实形,在反映拉伸体素厚度的视图上描绘拉伸线,描绘的图线以红色绘出;拉伸线是反映拉伸厚度的一条直线段;/n步骤117:参照步骤110,提取基图形实形信息和拉伸线信息并进行保存,若在主视图上描绘了基图形实形,则基图形实形信息保存在基图形实形链表FrontBaseGraph.IXD_list中,若在俯视图上描绘了基图形实形,则基图形实形信息保存在基图形实形链表TopBaseGraph.IXD_list中,若在左视图上描绘了基图形实形,则基图形实形信息保存在基图形实形链表SideBaseGraph.IXD_list中;若在主视图上描绘了拉伸线,则拉伸线的两个端点保存在链表FrontExt.IXD_list中,若在俯视图上描绘了拉伸线,则拉伸线的两个端点保存在链表TopExt.IXD_list中,若在左视图上描绘了拉伸线,则拉伸线的两个端点保存在链表SideExt.IXD_list;基图形实形链表FrontBaseGraph.IXD_list、TopBaseGraph.IXD_list和SideBaseGraph.IXD_list中的每个元素包括线类型和几何参数,直线段的线类型为LIN,几何参数为直线段的起点和终点;圆弧的线类型为ARC,几何参数为圆心、半径、起始角度、终止角度;参照步骤111中三角形封闭性检查的方法,若链表FrontBaseGraph.IXD_list或TopBaseGraph.IXD_list或SideBaseGraph.IXD_list中的元素遍历完后,所存储的图线是首尾相连的,则该链表中的基图形实形合法,否则提示不合法,需要进行重新描绘直至合法为止;/n步骤118:输出基图形实形数据和拉伸厚度,将体素提取过程中使用的临时链表清零;/n步骤119:重复步骤108~步骤118,直到三视图中可提取的体素提取完为止;/n所述的步骤105中建立投影坐标系,求出组合体的三个投影坐标,包括以下步骤:/n步骤301:遍历主视图链表FrontViewData.Line_list、FrontViewData.Circle_list、FrontViewData.Arc_list中的图线,求出视图的最大x坐标值Fxmax、最小y坐标值Fymin;遍历俯视图链表TopViewData.Line_list、TopViewData.Circle_list、TopViewData.Arc_list中的图线,求出视图的最大y坐标值Tymax;遍历左视图链表SideViewData.Line_list、SideViewData.Circle_list、SideViewData.Arc_list中的图线,求出视图的最小x坐标值Sxmin;/n步骤302: 令D=1/2Min(Sxmin-Fxmax,Fymin-Tymax),x0=Sxmin-D,y0=Tymax+D,在三视图平面上建立展开后的投影坐标系O´-X´-Y´-Z´,其中投影坐标系的原点为O´(x0,y0),X´轴正向水平朝左,Z´轴正向竖直朝上,Y´轴正向分别与X´轴正向、Z´轴正向相反;/n步骤303:遍历主视图链FrontViewData.Line_list、FrontViewData.Circle_list、FrontViewData.Arc_list中的图线,设点(x,y)为图线的端点或圆心,令x´=x0-x,z´=y-y0,用点(x´,z´)替换这三个链表中的点(x,y);/n步骤304:遍历俯视图链表TopViewData.Line_list、TopViewData.Circle_list、TopViewData.Arc_list中的图线,设点(x,y)为图线的端点或圆心,令x´=x0-x,y´=y0-y,用点(x´,y´)替换这三个链表中的点(x,y);/n步骤305:遍历左视图链表SideViewData.Line_list、SideViewData.Circle_list、SideViewData.Arc_list中的图线,设点(x,y)为图线的端点或圆心,令y´=x-x0,z´=y-y0,用点(y´,z´)替换这三个链表中的点(x,y);/n所述的步骤111中对主视图体素投影特征进行识别,并对识别结果进行标记,包括以下步骤:/n步骤501:判断链表FrontViewData.IXD.Circle_list中的元素个数是否为1,若为1则转至步骤502,否则转至步骤503;/n步骤502:主视图体素投影特征为圆,标记其投影特征为F_C,结束;/n步骤503:判断链表FrontViewData.IXD.Line_list中的元素个数是否为3,若为3则转至步骤504,否则转至步骤511;/n步骤504:取链表FrontViewData.IXD.Line_list中第一条直线段为查找边,保存此线段起始点并设该起始点为查找点,令查找次数为0;/n步骤505:判断查找次数是否为3,若为3则转至步骤509,否则转至步骤506;/n步骤506:判断在链表FrontViewData.IXD.Line_list中是否存在某个端点与查找点重合的直线段,若存在则转至步骤507,否则转至步骤519;/n步骤507:判断新边与旧边是否共线,若共线则转至步骤519,否则转至步骤508;新边是指找到的端点与当前查找点重合的边,旧边是指当前查找点所在的边;设新边矢量为
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201710896904.0/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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