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

注意:本文样例图片为了避免侵权,均使用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,由于得到的是中性灰图层,缩放到高分辨率后与原图进行柔光处理,并不会有损原图清晰度信息,因此,可以很好的应对影楼大图处理的清晰度要求。

        这里,给出一组测试:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧景区国标GB28181视频平台EasyGBS视频融合应用全场景解决方案

一、方案背景​ 随着旅游业的蓬勃发展,景区的规模不断扩大,游客数量持续增长,对景区的安全管理和游客服务质量提出了更高要求。打造一个高效、智能的视频监控及管理系统成为景区运营的关键。EasyGBS作为一款基于国标GB28181协议的视频云服务…

dedecms织梦arclist标签noflag属性过滤多个参数

织梦dedecms系统arclist标签noflag属性默认是只能过滤一个参数,比如过滤推荐是noflagc,过滤有图片的文章是noflagc,在模板制作过程中,有时候我们为了seo和避免重复,需要过滤多个参数。今天小编就来跟大家讲讲织梦dedec…

如何用go语言搭MCP

1.什么是MCP? MCP是“模型上下文协议(Model Context Protocol)”的简称,用一句简单通俗易懂的话描述: 是一种让 AI 模型能够无缝连接到外部工具和数据源的标准化方式。想象它就像 AI 的“万能接口”,能让 AI 像用 USB 线连接设备一样,轻松调用其他程序或服务。2.官方M…

js 的call 和apply方法用处

主要用于ECMAScript与宿主环境(文档对象(DOM)、浏览器对象(BOM))的交互中; 例子:function changeStyle(attr, value){ this.style[attr] value; } …

移动通信行业术语

英文缩写英文全称中文名称解释/上下文举例IMSIP Multimedia SubsystemIP多媒体子系统SIPSession Initiation Protocol会话初始化协议常见小写sip同。ePDG/EPDGEvolved Packet Data Gateway演进分组数据网关 EPDG是LTE(4G)和后续蜂窝网络架构(…

c++11新特性随笔

1.统一初始化特性 c98中不支持花括号进行初始化&#xff0c;编译时会报错&#xff0c;在11当中初始化可以通过{}括号进行统一初始化。 c98编译报错 c11: #include <iostream> #include <set> #include <string> #include <vector>int main() {std:…

Spark-Streaming简介 核心编程

1. Spark-Streaming概述 定义&#xff1a;用于处理流式数据&#xff0c;支持多种数据输入源&#xff0c;可运用Spark原语运算&#xff0c;结果能保存于多处。它以离散化流&#xff08;DStream&#xff09;为抽象表示&#xff0c;是RDD在实时数据处理场景的封装。 特点&#x…

SpringbootWeb开发(注解和依赖配置)

Lombok 工具 Spring Web web开发相关依赖 MyBatis Framework MyBatis驱动 MySQL Driver MySql驱动包 Restful 风格 Slf4j 记录日志对象 RequestMapping(value “/depts”, method RequestMethod.GET) //指定请求方式为GET method 指定请求方式 GetMapping 限定请求方式为Get…

杂项知识点

杂项 1 激活函数1.1 sigmoid1.2 tanh1.3 Relu1.4 leakRelu 1 激活函数 常用的激活函数包括sigmoid tanh Relu leakRelu 1.1 sigmoid import torch import numpy as np import matplotlib.pyplot as plt # sigmoid tanh Relu leakRelu ## 1 sigmoid ### 1.1 代码复现sig…

计算机组成原理:指令系统

计算机组成原理:指令集系统 指令集体系结构(ISA)ISA定义ISA包含的内容举个栗子指令的基本组成(操作码+地址码)指令分类:地址码的个数定长操作码变长操作码变长操作码的原则变长操作码的设计指令寻址寻址方式的目的寻址方式分类有效地址直接在指令中给出有效地址间接给出有效地…

Rust实现高性能目录扫描工具ll的技术解析

Rust实现高性能目录扫描工具ll的技术解析 一、项目概述 本项目使用Rust构建了一个类ls命令行工具&#xff0c;具备以下核心特性&#xff1a; 多格式文件信息展示并行目录扫描加速人类可读文件大小运行时性能统计交互式进度提示 二、技术架构 1. 关键技术栈 clap&#xff…

【深度强化学习 DRL 快速实践】策略梯度算法 (PG)

PG&#xff08;1984&#xff0c;Sutton&#xff09; 核心改进点 策略梯度算法 (PG): 直接对策略函数进行建模&#xff0c;可以适用于连续的动作空间 model-free, on-policy, PG, stochastic 策略 核心改进点说明策略梯度优化通过Actor网络直接优化策略&#xff0c;适应连续动作…

G1垃圾回收器中YoungGC和MixedGC的区别

在 G1 垃圾回收器中&#xff0c;Mixed GC 和 Young GC 的区别主要体现在以下几个方面&#xff1a; 作用范围 Young GC&#xff1a;仅针对年轻代中的Region进行回收&#xff0c;包括 Eden 区和 Survivor 区的 Region。Mixed GC&#xff1a;会回收所有年轻代的 Region 以及部分…

从LLM到AI Agent的技术演进路径:架构解析与实现逻辑

人工智能技术正经历从基础语言模型到智能执行体的关键跃迁。解析LLM→RAG→Agent的技术演进三层架构&#xff0c;拆解大模型与知识库、工具链的融合机理&#xff0c;揭示感知-决策-执行闭环系统的构建逻辑。通过架构范式解析、代码实现示例及多模态实践案例&#xff0c;为开发者…

commix

Commix 基础用法和高级用法 基础用法 Commix 是一个自动化的命令行注入工具&#xff0c;用于检测和利用 Web 应用程序中的命令注入漏洞。以下是基本使用方法&#xff1a; 基本扫描 python commix.py -u "http://example.com/vuln.php?id1"指定注入点 python commi…

Git删除指定历史版本

问题&#xff1a; 在Git提交版本&#xff0c;有时有些小版本相比较于后续的大版本&#xff0c;都会包含&#xff0c;且后续存在的意义不太大&#xff0c;一般认为是可以删除的。或者&#xff0c;中间一些版本有问题但是也提交了&#xff0c;拉取这些版本根本没用&#xff0c;这…

使用 Pandas 进行多格式数据整合:从 Excel、JSON 到 HTML 的处理实战

前言 在数据处理与分析的实际场景中&#xff0c;我们经常需要整合不同格式的数据&#xff0c;例如 Excel 表格、JSON 配置文件、HTML 报表等。本文以一个具体任务&#xff08;蓝桥杯模拟练习题&#xff09;为例&#xff0c;详细讲解如何使用 Python 的 Pandas 库结合其他工具&…

今日行情明日机会——20250425

指数依然在震荡&#xff0c;等待方向选择&#xff0c;整体量能不搞但个股红多绿少。 2025年4月25日涨停板行业方向分析如下&#xff1a; 一、核心行业方向及驱动逻辑 一季报增长&#xff08;17家涨停&#xff09; 核心个股&#xff1a;惠而浦、鸿博股份、卫星化学驱动逻辑&am…

Python 快速获取Excel工作表名称

文章目录 前言准备工作Python 获取Excel中所有工作表的名称Python 获取Excel中隐藏工作表的名称 前言 在数据分析与办公自动化领域&#xff0c;通过Python处理Excel文件已成为必备技能。通过获取工作表名称&#xff0c;我们可以&#xff1a; 快速了解文件结构自动化处理多工作…

宁德时代25年时代长安动力电池社招入职测评SHL题库Verify测评语言理解数字推理真题

测试分为语言和数字两部分&#xff0c;测试时间各为17分钟&#xff0c;测试正式开始后不能中断或暂停