起点就是好好努力!多学习多尝试!
入职的第一个小项目,是协助老大模拟质检所缺少的正负例。包括两个项目图像的生成,一个是为布料质检生成破洞、脏污、布疵、褶皱,另一个是为磁材质检生成磕斑、生锈、白班等。
两个项目的第一部分本质上都是一样的,都是用传统的图像处理方法取模拟生成一些形态。下面详细介绍:
1.基础形状:
包括圆、直线、随机漫步曲线、平滑曲线等。
区域:随机取点作为圆心,在其周围每隔5度取随机向量点,最终将这些点用贝塞尔曲线连起来,构成“洞”的形状mask。
直线:直线长度随机。在直线上每隔一定距离(可选随机范围)垂直于直线的方向上做很短的随机向量,最终将这些点用贝塞尔曲线连起来,就构成了不规则的直线型布疵mask。
随机漫步曲线:磁材生锈的形状和二维随机漫步生成的形状很相似,边缘极其不规则且有闭合形状也有成片的区域。方法为:x和y方向上分别随机取方向[-1, 0, 1],然后再分别随机取步长[0,1,2,3,4]。产生的新向量加在当前点上,就构成了下一步的迭代点。最终这些点依次连接组成的曲线就是随机漫步曲线。
平滑曲线:用来模拟褶皱的轮廓走势。先用随机漫步的方式取点,然后用贝塞尔曲线连起来。不同的是,为使曲线不形成闭曲线(衣服褶皱很难皱出闭区域的),其中x方向上的随机方向只取[0, 1],y的随机方向依旧取自[-1, 0, 1],步长会更长一些,比如随机范围在[30,60]。最后将这些点用贝塞尔曲线连起来,即可得到较为平滑的随机曲线。
图像形变:用有限元方法。给定原图中的原点和目标点的坐标,新生成的图像将产生相应的流型形变。
2.模拟器:
破洞:衣物破洞会有很多层次的变换,比如最中间会透出底层布料来,稍外沿会有阴影,再外沿会有布料破损后的翘起,最外面可会有类似外扩的形变。模拟过程也是一样,区域mask进行膨胀收缩后,产生不同层次的“环形”mask,根据不同层次需要的形变做不同处理,最终叠加在一起。
布料脏污、布疵,磁材锈斑白斑青斑、:用上述区域、直线或随机漫步曲线的mask生成方法,将原始图片上mask对应的部分颜色加深、变黑、或随机地变为其他颜色(如油渍、染色剂污点,或锈迹、白斑等)。叠加过程中,会由外到内让透明度逐层递减,这样会使斑点叠加的更加自然。
褶皱:以平滑曲线为褶皱轮廓走势,将曲线上的每个点都加某个比较小的随即向量作为目标点,用图像形变模拟器将图像形变后,再根据形变梯度产生布料的“高光”和“阴影”,就能生成比较逼真的褶皱了。