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

单色图最简单、最完美的抠像方法 - 透明渐变抠像 - C# - 行人-

任务描述

1

用Ai制作图像,是一件非常简单的事情, 比如说, 导引ai先后生成了上面的人体简化图像, 但是 让它在抠除背景的时候,AI在处理精准性上表现很差,此时我们可以尝试的方式最少有两种。

PS抠像
第1种是用在线ps的魔棒工具进行抠像,但是抠除后的边缘锯齿感明显,整体效果非常的差 ,基本不可用:

2

3

AI抠像
然后我们还可以尝试使用即梦AI来抠像,效果比在线ps好了很多,但是仍然肉眼可见到边缘有背景色的存在:

1

2

自己写算法抠像
那么如何才能做到 让背景色从视觉上完全无感呢?

这里有一个小技巧,它处理的核心理念就是:越接近目标色,那么让它的透明通道值越接近255,越接近背景色,那么让它的透明通道值越接近于0,这样的话,在扣除色与目标色之间会形成完全平滑的透明过渡,从视觉上来说,会形成绝对的连贯性。

例如,用C#进行的算法处理,核心源码:

internal static class ChromaKeyProcessor
{public static Bitmap EnsureRgba32(Bitmap source){if (source.PixelFormat == PixelFormat.Format32bppArgb){return (Bitmap)source.Clone();}var rgba = new Bitmap(source.Width, source.Height, PixelFormat.Format32bppArgb);using (var g = Graphics.FromImage(rgba)){g.DrawImage(source, 0, 0, source.Width, source.Height);}return rgba;}public static void ApplyAlphaFromTwoColors(Bitmap rgba, Color keepColor, Color removeColor){if (rgba.PixelFormat != PixelFormat.Format32bppArgb)throw new ArgumentException("需要 Format32bppArgb 位图。");int keepR = keepColor.R, keepG = keepColor.G, keepB = keepColor.B;int removeR = removeColor.R, removeG = removeColor.G, removeB = removeColor.B;var rect = new Rectangle(0, 0, rgba.Width, rgba.Height);var data = rgba.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);try{int stride = data.Stride;int bytes = Math.Abs(stride) * rgba.Height;var buffer = new byte[bytes];Marshal.Copy(data.Scan0, buffer, 0, bytes);for (int y = 0; y < rgba.Height; y++){int row = y * stride;for (int x = 0; x < rgba.Width; x++){int i = row + x * 4;int b = buffer[i];int g = buffer[i + 1];int r = buffer[i + 2];double dKeep = ColorDistanceSq(r, g, b, keepR, keepG, keepB);double dRemove = ColorDistanceSq(r, g, b, removeR, removeG, removeB);byte alpha = ComputeAlpha(dKeep, dRemove);buffer[i + 3] = alpha;}}Marshal.Copy(buffer, 0, data.Scan0, bytes);}finally{rgba.UnlockBits(data);}}/// <summary>/// 将带透明通道的图叠到指定背景色上,用于预览。/// </summary>public static Bitmap CompositeOnBackground(Bitmap rgba, Color background){var display = new Bitmap(rgba.Width, rgba.Height, PixelFormat.Format32bppArgb);using (var g = Graphics.FromImage(display)){g.Clear(background);g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;g.DrawImage(rgba, 0, 0);}return display;}private static double ColorDistanceSq(int r1, int g1, int b1, int r2, int g2, int b2){int dr = r1 - r2;int dg = g1 - g2;int db = b1 - b2;return dr * dr + dg * dg + db * db;}/// <summary>/// alpha = 255 * dRemove / (dKeep + dRemove)/// 在保留色处 dKeep=0 → 255;在抠除色处 dRemove=0 → 0。/// </summary>private static byte ComputeAlpha(double dKeep, double dRemove){const double epsilon = 1e-6;if (dKeep < epsilon && dRemove < epsilon)return 255;if (dKeep < epsilon)return 255;if (dRemove < epsilon)return 0;double sum = dKeep + dRemove;double t = dRemove / sum;if (t < 0) t = 0;if (t > 1) t = 1;return (byte)(t * 255.0 + 0.5);}
}

处理后的效果基本达到了完全可用的状态 :

1

2

细节的表现非常完美。

http://www.jsqmd.com/news/1176300/

相关文章:

  • 用优麦云定时策略助你时间管理,2026最新优麦云优惠折扣码开通渠道更新 - 跨境电商卖家出海
  • 技能名称:azure-ai-openai-dotnet
  • 2026深圳正规搬家公司口碑榜|跨区搬家实测对比+暗藏收费项逐一曝光+签合同前必问的8个问题 - 从来都是英雄出少年
  • CCManager支持Gemini CLI全攻略:多AI助手协同工作的最佳实践
  • LakeFormation:AWS 数据湖治理服务详解
  • Rufus终极指南:如何快速制作Windows 11启动盘并绕过硬件限制
  • 【Doris】日志查看方式
  • 可信发件人劫持 + SaaS 表单滥用型求职钓鱼攻击多维检测与闭环防御研究
  • 2026年最新教程:PDF怎么变成Word且不乱码的免费方法 - 玩机日常
  • 如何快速掌握CodePilot:面向Xcode开发者的完整指南
  • Flame引擎斜45度视角开发:从零打造2.5D视觉盛宴
  • 2026年7月最新上海美度官方售后服务网点地址及客服电话一览 - 亨得利钟表维修中心
  • 终极MeloTTS多语言文本转语音完整指南:从安装到高级应用
  • 5个实用技巧:快速掌握Skills4技能库的核心功能
  • 2026年7月最新杭州美度官方售后服务热线与网点地址查询 - 亨得利钟表维修中心
  • 3ds Max 软包建模方案对比:BreadMaker 插件 vs 手动布线,效率与精度实测
  • V4L2 工具集 v4l-utils 实战:3步查询USB摄像头支持的YUY2/MJPG格式与分辨率
  • ntfy推送通知服务:如何通过HTTP构建高效消息系统并提升运维效率
  • 2026年7月最新唐山芝柏官方售后客服电话及服务网点地址查询 - 亨得利官方服务中心
  • 2026年最新教程:手机图片怎么转成PDF文件 亲测好用的免费方法 - 效率工具研究所
  • 3步构建自定义安全测试技能:自动化漏洞检测实战指南
  • 实验专题(一):从列表到字典——手把手重构你的成绩录入系统
  • 听力口语双提升:从“听不懂“到“开口说“的英语实战指南
  • AList多存储文件管理实战指南:一站式解决云存储碎片化难题
  • 华为Forwarder-sec:下一代安全转发引擎技术解析
  • 172 号卡唯一官方邀请码 10000|2026 全网正规顶配注册指南(完整版) - 172号卡
  • 芝柏官方服务项目及价格查询|全新维修地址和电话权威信息通知(2026年7月最新) - 亨得利官方服务中心
  • 无数据库播客发布系统的自动化部署与高可用架构方案
  • 如何快速掌握开源3D建模:FreeCAD新手指南与实战案例
  • 南宁配电柜制造企业推荐,商业电力检测/学校电力抢修/工地配电箱/智能运维控制柜/云南配电柜,配电柜制造企业选哪家 - 品牌推荐师