APP下载

基于OpenCV飞机模型外部涂装和标记的方法探析

2023-08-26童安科杜文哲郭青婷张紫轩隋佳岐徐嘉诚张兴媛

电脑知识与技术 2023年21期
关键词:民用飞机

童安科 杜文哲 郭青婷 张紫轩 隋佳岐 徐嘉诚 张兴媛

关键词:民用飞机;外部涂装和标记;blender

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2023)21-0091-03

0 引言

飞机外部涂装和标记对飞机有着保护识别作用。飞机涂装从早期在机身简单涂上机油,防止潮湿腐蚀到现在几十人团队半个月时间高达上百万的费用的涂装流程。飞机涂装能在各种天气下保护飞机,防腐蚀、防辐射、防冰、防雨耐磨、延长飞机的使用寿命,增强性能,提高飞机维修性。在外观方面,设计美观的涂装可以提高航空公司的知名度,增加营收,在一些纪念日的定制涂装更有着特殊意义。

在过去的研究中,关于飞机涂装定位,文献[1]提出传统的基于二维CAD飞机外部涂装和标记,在实际施工时,由于二维图纸的限制,无法反映在飞机曲面上的真实尺寸,标记的定位最终要依赖于现场对飞机进行测量,极大地降低了施工的效率。飞机外部天线,传感器等不能喷漆区域在二维图纸上没有很好的反映,无法准确判断涂装是否影响了该区域。

三维模型对比二维图纸有着很大的优势。设计师可以提前预览涂装后的效果,调整涂装设计,加快了设计进度。三维模型标记解决了二维图纸无法真实反映实际尺寸的问题,使得涂装标记的定位尺寸更加精确,提高了喷漆施工效率。

1 外部涂装和标记原理

UV是二维纹理坐标,带有多边形和曲面网格的顶点信息。用于定义二维纹理坐标系的称为“UV 纹理空间”。UV 纹理空间使用字母 U 和 V 来指示二维空间中的轴[2]。UV 纹理空间有助于将图像纹理贴图放置在 3D 曲面上。由UV得出的模型纹理贴图的坐标(u,v) 与模型曲面网格(x,y,z) 坐标一一对应,纹理贴图可以很好地反映飞机曲面上的涂装和标记信息,通过对UV纹理贴图坐标的获取,可以制作出喷漆时飞机外表面的遮罩的位置与尺寸,定位涂装坐标。

UV在纹理贴图映射到 3D 曲面网格之间产生关联,也就是坐标一一对应,将纹理贴图应用于飞机模型,贴图保存了飞机曲面网格信息,模型既可以展示实际飞机涂装之后的效果,又可以反映外部涂装与标记在真实飞机曲面上的位置与尺寸,解决了二维图纸无法真实反映实际尺寸的问题,提高了涂装标记的定位尺寸的精度。

本次研究的目的就是得出纹理贴图和对应的应用了涂装的飞机模型。

2 模型处理

2.1 飞机模型导入

把所需型号的飞机模型导入3D处理软件(比如3Dmax,blender),测量机身,机翼,尾翼等数据与标准尺寸对比,确定模型大小合适。

对模型多余的部分删除(比如内部装饰,座位等),不合理的布线进行调整。

1) 提高模型的面数,尽量把面转为四边面。三边面会导致UV映射时缝合边不在一条直线上,使得UV 映射不对称,贴图的拉伸变形。

2) 对于不合理的边与边,点与点进行合并。合并可以消除多余的边和点,使模型更加精确;看起来更加简洁,提高可读性;渲染引擎更容易处理。首先批量合并,按间距合并,一般距离选择大于0.001m即可(根据模型具体尺寸调整);其次对于模型精度要求高或者边的法线方向差距过大的区域应手动合并;合并时注意网格密度,如果网格密度过低,则可能会导致模型表面不平滑,贴图变形。

3) 窗户接缝处的线多而且复杂,如果涂装设计对于此处没有要求,在不影响布线的情况下可以删除,减小对UV映射的影响。

2.2 UV 映射

UV映射是在三维建模中将2D图像投影到3D表面以进行纹理映射的过程,UV 作为标记点,用于控制纹理贴图上的点与网格上的点对应。

1) 根据拿到的飞机涂装设计图(一般是三视图)确定第一个UV 图(如图1)的展法(一般是侧视图投影)。

2) 根据飞机涂装设计的元素的复杂程度,分布位置,数量等确定第二个UV图(如图2)的展法。添加缝合边时要考虑:

①UV映射应该保持纹理圖像的比例。如果UV 映射使得纹理图像拉伸或压缩,那么模型的外观就会变得不真实。

②尽量避开在涂装元素复杂的地方添加缝合边。

③尽量把缝合边添加在涂装简单或者不容易看见的地方,减少贴图调整工作量。

3) 展UV时要注意:

①尽量使UV点的连接是连续的并且应尽量保证UV点的密度均匀,使UV映射的质量更高,同时纹理图像的质量也更高。

②使用规则的UV布局,可以更方便地编辑UV映射,并且可以有效地利用纹理图像的空间。

3 贴图处理

3.1 三视图批量转换纹理贴图插件

1) 功能介绍

涂装设计图(一般是三视图)通常用于展示设计元素的效果,但是并不能用于描述物体的表面细节,无法反映在飞机曲面上的真实尺寸,是无法直接应用于飞机涂装。

本次步骤是将三视图转换为飞机模型UV对应的纹理贴图,便于应用到飞机模型。

以往的转换贴图操作是手动将三视图导入Blender,调整位置,用Blender中的Texture Paint功能将第一张UV上的元素(一般为侧视图(如图3)) 映射到第二张UV 上,得到第二张图,这个过程重复且耗时。

2) 插件编写

blender提供的Python API,可以将一些重复性的操作,通过编写插件调用相关功能自动,批量执行。Blender插件的开发采用面向对象的方式。BlenderPy?thon API[3]通过预置类提供对插件功能的整合与扩展。用户通过创建子类来继承父类中定义的属性和方法, 它们实现了与Blender程序间的交互接口。Blender对于贴图转换插件所涉及的材质创建、连接节点、调用烘焙,Texture Paint等操作都提供有相应的API[4]。

3) 插件基本结构

①导入模块:导入所需要的库如BPY,便于访问飞机模型数据,调用Blender内的功能。

②界面UI:提供选择飞机模型,UV图,涂装设计图,导出图纸等选项。

③功能模块:

根据用户选择的飞机模型新建对应材质,将UV 图(如图1) 和涂装设计图(如图3) 作为第一个材质的UV图和纹理贴图。

然后用户根据需求选择第二个UV图(如图2) ,将第一个材质的纹理贴图作为图像克隆源、UV图作为UV克隆源,第二个UV图作为输出材质的UV图,调用TextPaint功能,输出第二个材质的纹理贴图(如图4) 。

4) 插件实现功能

3.2 贴图变形元素替换

3.2.1 功能介绍

Blender处理后的贴图虽然可以对应模型UV图,但由于是侧视图转换而得,部分涂装元素发生了变形,本次步骤是将这些变形的元素替换成未变形元素。

3.2.2 贴图识别与替换

1) OpenCV模板匹配原理

模板匹配是在较大图像(源图像)中搜索和查找模板图像位置的方法。OpenCV 提供一个函数cv2.matchTemplate() 。在源图像中从左到右和从上到下依次滑动模板[5],计算模板与(图像被模板覆盖的地方)的匹配程度,在每一个位置(x , y)都计算出一个指标以表明这个位置处两个图像块之间匹配程度的高低。这匹配程度高低的计算方法在OpenCV 里有6 种,然后将每次计算的结果放入一个矩阵R里,作为结果输出。假如源图像是M x N大小,而模板图像是m x n大小,则输出结果的结果矩阵R是(M-m+1)x(Nn+1)。获得结果后,可以使用cv2.minMaxLoc() 函数查找最大/最小值在哪里。将其作为矩形的左上角,并以(m,n) 作为矩形的宽度和高度。

3.2.3 具体实现(以熊猫图(如图5) 为例)

1) 将源图像(blender处理后的纹理贴图(如图4)) 根据涂装元素的分布进行分割提取,每一小部分(如图5) 作为模板图像在源图像匹配,或者也可以将未变形的涂装元素相同分割提取作为模板图像(如图6) 。

通过上述计算得到最佳匹配的位置,作为矩形的左上角,并以模板圖像宽高(m,n) 作为矩形的宽度和高度,计算出矩形左下角,右上角,右下角的位置(如图7)。

2) 根据源图像分割涂装元素的宽度和高度以及位置,对未变形的涂装元素(涂装设计图)相同分割提取得到替换图像(如图6) 。

3) 根据第一步得到的位置信息,对源图像与替换图像进行叠加(如图8)。

4) 对每个模板图像重复上述操作,得到最终未变形贴图(如图9) 。

5) 在实际操作中如果原模板图像识别效果不好,可以将替换图像(如图5) 作为模板图像进行识别。

4 结束语

经过blender和OpenCV处理后的纹理贴图对比三视图在变形方面更小,可以更好地反映涂装和标记在真实飞机上的尺寸。飞机的三维模型可以呈现飞机外部涂装和标记的定位尺寸。结合贴图和飞机模型给出的定位尺寸和位置信息,避免以往在实物飞机上确认优化图纸的步骤,提高施工效率。不足是该方法对于复杂的涂装设计图,图像识别的精度有待提高,需要进一步优化识别算法。

猜你喜欢

民用飞机
民用飞机零件的热处理制造符合性检查
民用飞机设计与研究简介
民用飞机机载跑道入侵预警系统仿真验证
民用飞机吊挂指形罩鸟撞分析
民用飞机全生命周期KPI的研究与应用
民用飞机设计与研究简介
一种新的民用飞机维修性分配方法
民用飞机固定式应急定位发射系统设计
民用飞机设计与研究简介
民用飞机飞行操作程序的开发和验证