当前位置: 首页 > news >正文

影楼精修-手部青筋祛除算法解析

注意:本文样例图片为了避免侵权,均使用AIGC生成;

手部青筋祛除科普

        手部青筋祛除是影楼精修中一个非常精细的工作,需要较高的修图技巧,目前市面上很少有自动化的青筋祛除功能的,而像素蛋糕目测是第一个做到的。我们先给大家看一下效果示例图。

        如示例图所示,效果图中美女的手部曝露的青筋消失了,整体效果对比肌肤要更加丰满一点。

        这里我将给大家介绍一下这个功能算法要如何实现,我们的目标是自动化处理照片,达到手部青筋祛除的效果,并可调节祛除强度。

算法实现

        像素蛋糕为了这个效果申请了算法专利CN 119624835 A:一种模拟人工修图的级联式人物图像祛青筋方法。

        算法流程如下图所示:

这里我们先看整体流程:

  1. 假设用户照片原图为S,手部祛除青筋的效果图为D。对S进行手部区域检测,比如手部关键点检测,根据关键点计算手部区域图像位置,将手部区域图像裁剪出来得到手部图像A,这里需要记录裁剪位置,以及仿射变换矩阵H以及逆矩阵NH等,变换主要指缩放旋转等操作;

  2. 将手部图像A进行灰度化处理,得到灰度图A_gray;

  3. 将A和A_gray送入“中性灰平整网络”,输出中性灰蒙版图层,即为图B;

  4. 将A和B进行柔光图层混合,得到中性灰平整结果图C;

  5. 将C和B送入“颜色调整网络”,得到颜色调整后的结果图M,M即为祛除青筋且颜色正常的效果图;

  6. 将M按照仿射变换逆矩阵NH,贴回原图S,得到最终效果图D;

        这个流程中,像素蛋糕设计了两个网络模块“中性灰平整网络”和“颜色调整网络”,其中,中性灰平整网络是用来获取青筋区域的中性灰调整蒙版,用于调节青筋区域的亮度,将突出的青筋区域亮度平整,变得光滑均匀;而颜色调整网络用于将青筋区域颜色调整为原图正常的肤色;

        中性灰平整网络如下图所示:

        网络很好理解,输入手部灰度图和原图,输出中性灰图层,网络使用了transformer模块,从个人角度理解,应该是一个GAN网络,采用Unet结构,难点在于如何构建数据集。当然,像素蛋糕应该是不缺乏数据的。

        颜色调整网络如下图所示:

        网络输入中性灰平整结果图+中性灰图层蒙版,输出颜色调整结果图,其中中性灰图层蒙版实际上是导向作用,与中性灰平整网络类似。这一步实际上也可以使用GAN网络来实现,或者使用LUT调色网络等。

        上面就是像素蛋糕手部青筋祛除功能的算法流程。

        针对上面的过程,大体思路是没有问题的,个人认为是正确的(毕竟是专利,需要以谨慎的思考来看待),但是,从我个人经验,这里提供一个更为简单的算法流程,或者说对上述流程进行改进。

        本人改进的思路原理:手部暴露的青筋,整体上表现出来为亮度明暗突变+青绿颜色变化,而中性灰的概念,我们前面中性灰磨皮也介绍过,他的作用就是改变亮度信息,但实际上,以RGB颜色空间为例,我们如果在三通道上分别做中性灰蒙版,他就可以变成一个即改变亮度,也改变颜色的彩色中性灰蒙版,因此,从这个角度来看,我们不需要颜色调整网络,也可以达到最终的效果。

        因此,本人算法流程如下:

  1. 假设用户照片原图为S,手部祛除青筋的效果图为D。对S进行手部区域检测,比如手部关键点检测,根据关键点计算手部区域图像位置,将手部区域图像裁剪出来得到手部图像A,这里需要记录裁剪位置,以及仿射变换矩阵H以及逆矩阵NH等,变换主要指缩放旋转等操作;

  2. 构建一个彩色中性灰平整网络,输入为手部区域图像A,输出为彩色中性灰蒙版图层A_color;

  3. 将A_color按照仿射变换逆矩阵NH贴回原图S,与原图S对应区域直接进行柔光图层混合,同时设定混合强度调节参数k,用于调节混合效果的程度,这一步直接可以得到青筋祛除效果图D;

        柔光计算公式(A为原图像素,B为中性灰像素):

        其中,彩色中性灰平整网络可使用CGAN,设置输入为512×512×3,实际也可以更小,比如384×384×3,由于得到的是中性灰图层,缩放到高分辨率后与原图进行柔光处理,并不会有损原图清晰度信息,因此,可以很好的应对影楼大图处理的清晰度要求。

        这里,给出一组测试:

        可以看到,本人方案效果与像素蛋糕效果几乎一致,方案流程上要更加简单,算法完全可以做到毫秒级快速处理高分辨率大图;

注意:彩色中性灰的思想,用途非常广泛,可以用于磨皮,祛除各类皱纹(黑眼圈/眼角纹/抬头纹/颈纹/法令纹等等),大家可以自行发挥,对于本人专栏中,部分思路相同的功能,也可能不会再重复介绍,有兴趣的也可以私聊,共勉!

相关文章:

  • Kafka和Spark-Streaming
  • 【物联网】基于LORA组网的远程环境监测系统设计(ThingsCloud云平台版)
  • 【Agent实战】从0到1开发一个Python 解释器 MCP SSE Server
  • 嵌入式:ARM系列分类及主要应用场景
  • MATLAB技巧——平滑滤波,给出一定的例程和输出参考
  • [4A/OP]
  • 【HTTP通信:生活中的邮局之旅】
  • 带根线就无敌?光纤无人机如何成为电子战的终结者
  • 植物合成生物学:上帝之手,万物皆可合
  • 基于javaweb的SSM+Maven红酒朔源管理系统设计与实现(源码+文档+部署讲解)
  • 10.ArkUI Grid的介绍和使用
  • 数据归一化
  • LeetCode 每日一题 2845. 统计趣味子数组的数目
  • WEB漏洞-XSS跨站原理分类
  • AI与思维模型【77】——PDCA思维模型
  • uniapp-商城-37-shop 购物车 选好了 进行订单确认3 支付栏
  • Mysql分页查询limit
  • 分布式ID生成方案详解
  • libconfig 写文件
  • 配置 RDP 远程桌面协议连接ubuntu服务器桌面
  • 在县中,我看到“走出去”的渴望与“留下来”的惯性
  • 上海2025年普通高等学校招生志愿填报与投档录取实施办法公布
  • 全品系停货?泸州老窖:暂未接到通知,常规调控手段
  • 帕力旦·吐尔逊已任喀什大学党委副书记、校长
  • 哲学家的生命终章:一场关于存在与消逝的深度对话
  • 解放军报社论:谱写新时代双拥工作崭新篇章