花费超 30 元,测试 9 个AI模型,对手写字抠图,均失败,只能手写算法

发布时间:2026/10/16 10:37:06

花费超 30 元,测试 9 个AI模型,对手写字抠图,均失败,只能手写算法 处理任务(AI指令)把文字抠出来将背景替换为纯色#00FF00。确保文字边缘过渡良好。文字以外的内容全都不要保留。注意保留文字边缘细节。文字内容区域的质感要原样保留。注以下提到的“积分”在即梦购买是1积分约等于1毛钱。每次请求会返回4张图积分有的是按照单次有的是按照每张以下标记的积分是每次调用的总花费模型在不同时间的费用不同以下的积分是本次记录时间点时的花费。我们仅仅使用第一张结果图进行比对。即梦图片模型版本第一个结果图图片细节结果原图任务图像V3.01积分未达标因为背景色不是纯色。V3.11积分未达标因为背景色不是纯色。V4.00积分未达标背景色不是#00FF00而且文字区域颜色被改变了原有质地被破坏V4.14积分未达标背景色不是#00FF00而且文字区域颜色被改变了原有质地被破坏V4.512积分未达标竟然字体心态都丢失了这么贵竟然错误的这么离谱V4.60积分未达标背景色不是#00FF00但是比较接近V4.74积分未达标背景色不是#00FF00但是比较接近V5.0Lite0积分未达标背景色不是#00FF00而且文字区域颜色明显被加深了破坏了原有质感V5.0Pro32积分未达标背景色不是#00FF00但是比较接近。这么贵竟然都不达标手写算法达标背景色是#00FF00原字内容区域质地保留边缘过渡良好细节保留良好原图任务图像对不同模型店一轮完整测试花费 5.4竟然得不到一张精准的图片。而且为了进行了明显的效果比对我对每个版本都进行了不同背景色、和提示词的尝试测试最少超过5轮实际花费超过 30但是得不到精准的目标图片这一点让人非常失望。由此也可以看出来作为生成式图像模型在传统算法的垂直业务场景里面确定性、可复现、保留原始像素是一个巨大的门槛传统CV沉淀的商业壁垒通用的生成AI很难直接跨越。快速和精准正是传统算法的优势。但这基本适用于简单业务场景对于光影复杂的图像画面生成式模型通过联想来进行补全处理仍然会有神奇的效果也是传统算法很难达到的。以上 手写算法 的处理过程如下忽略处理性能仅仅为演示过程private Bitmap processImg(Bitmap img) { var imgInit img.Clone() as Bitmap; var margin 10; var lbInit new LockBitmap(imgInit); lbInit.LockBits(); var lb new LockBitmap(img); lb.LockBits(); var psred new bool[lb.Width, lb.Height]; var psrednot new bool[lb.Width, lb.Height]; var ps_rd_5 new Point().RoundPsN(5); var ps_rd_1 new Point().RoundPsN(1); var ps_rd_2 new Point().RoundPsN(2); //演示1,逐行展示 psredLime标记 for (int r margin; r lb.Height - margin; r) { for (int c margin; c lb.Width - margin; c) { var cr lb.GetPixel(c, r).Avg(); var crrd ps_rd_5.Select(a lb.GetPixel(a.X c, a.Y r).Avg()).ToList(); var crmin crrd.Min(); var crmax crrd.Max(); var crdif crmax - crmin; var ok crdif 100; if (!ok) { psrednot[c, r] true; continue; } psred[c, r] true; } } var bks ImgHelper.ColorBlockLock2_8_2DArray(psrednot.Clone() as bool[,]); //查找外周的方式bks_edge_full_dict.Values 放入到一个boo[,]变量每次查找8邻中有非关键点的点那就是外周这样一层一层地找完 DictionaryListPoint, ListPoint bks_edge_full_dict new DictionaryListPoint, ListPoint(); foreach (var bk in bks) { var ps_edge bk.Where(a a.RoundPsN(1).Any(b !psrednot[b.X, b.Y])).ToList(); //是否属于字体内部轮廓 使用 128不要太小否则对于稍微浅色的兼容性不好 var ps_edge_ok ps_edge.Count(a lb.GetPixel(a.X, a.Y).Avg() 128) ps_edge.Count * 0.6; if (!ps_edge_ok) continue; bks_edge_full_dict[ps_edge] bk; } //合并最初红色的边缘区域 var ps_black_all psred.Clone() as bool[,]; foreach (var bk in bks_edge_full_dict) { foreach (var p in bk.Value) { ps_black_all[p.X, p.Y] true; } } //标记非字体区域 Listint remove_area_lightall new Listint(); for (int r 0; r lb.Height; r) { for (int c 0; c lb.Width; c) { if (!ps_black_all[c, r]) { remove_area_lightall.Add(lb.GetPixel(c, r).Avg()); } } } //标记安全区域 foreach (var bk in bks_edge_full_dict) { foreach (var p in bk.Value) { lb.SetPixel(p.X, p.Y, Color.Lime); } } //移除区域全部设置为透明 for (int r 0; r lb.Height; r) { for (int c 0; c lb.Width; c) { if (!ps_black_all[c, r]) { lb.SetPixel(c, r, Color.Transparent); } } } //字体区域全部设置为非透明 foreach (var bk in bks_edge_full_dict) { foreach (var p in bk.Value) { lb.SetPixel(p.X, p.Y, lbInit.GetPixel(p.X, p.Y)); } } //安全区的亮度均值,透明度 255 var light_avg_font bks_edge_full_dict.Values. SelectMany(a a). Average(a lbInit.GetPixel(a.X, a.Y).Avg()); //移除区的亮度均值,透明度 0 var light_avg_remove remove_area_lightall.Average(); var light_min light_avg_remove; var light_max light_avg_font * 1.0; var light_avg (light_min light_max) / 2; var light_range light_max - light_min 1; //对边缘地带稍微扩展使更平滑 var psredTmp new bool[lb.Width, lb.Height]; for (int r 0; r lb.Height; r) { for (int c 0; c lb.Width; c) { if (psred[c, r]) { foreach (var p in new Point(c, r).RoundPsN(5)) psredTmp[p.X, p.Y] true; } } } psred psredTmp; //对边缘区域进行透明度设置 for (int r 0; r lb.Height; r) { for (int c 0; c lb.Width; c) { if (psred[c, r]) { var v (int)((lbInit.GetPixel(c, r).Avg() - light_min) / (int)light_range * 255); v Math.Max(0, Math.Min(255, v)); lb.SetPixel(c, r, Color.FromArgb(v, lbInit.GetPixel(c, r))); } } } lb.UnlockBits(); lbInit.UnlockBits(); return img; }处理前后比对(右侧图是截图上传后显示在文档中有色差实际在软件页面完全无色差背景为#00FF00)
延伸阅读

更多相关文章

2026/10/15 23:24:21

基于 Android 的校园信息管理系统源码

摘要:本文以一个面向高校的 Android 校园信息管理系统(campusInfoApp)为案例,从架构设计、核心模块实现、关键技术选型三个维度展开分析,详细阐述 MVP 分层、角色路由、主题换肤、网络封装等工程化实践,为同…

2026/10/16 14:16:38

智能计算售前题库拆解:从AI服务器选型到有效算力

简介:面向华为H19-381智能计算售前认证备考者的题库资料,内容覆盖服务器、存储、安全、网络与计算等核心知识域,包含Taishan服务器、iBMC管理接口、RAID技术、SSD分类、TPM可信平台模块、鲲鹏自研芯片等关键考点,适合备考华为售前…

2026/10/16 14:16:38

边缘检测原理与实战:从Sobel到Canny算子详解

1. 为什么说边缘是图像的"骨架信息"我最早接触边缘检测,是很多年前帮一个师兄处理显微镜图像里的细胞计数问题。当时什么都不懂,以为边缘检测就是把图片变模糊再变白,折腾了三天,结果出来的图连我自己都看不出哪里是细胞…

2026/10/16 14:16:38

Apache Atlas 2.3.0实战:元数据治理与血缘关系构建

简介:面向 Hadoop 生态元数据治理场景,Apache Atlas 2.3.0 二进制发行包用于构建企业级数据资产分类、血缘追踪与合规审计体系。该版本整合 Hive、HDFS、Kafka 等组件插件,支持基于 RBAC/ABAC 的安全管控,适合大数据平台运维与数据…

2026/10/16 14:16:38

多Agent系统失效真相:协作机制比算力更关键

1. 为什么“多开几个 Agent”反而让事情变得更糟?——这不是算力问题,是协作机制失效你有没有试过在本地跑一个 Codex 代理,写个简单脚本顺手又快;但一上手 DeepSeek Harness,配了三个 subagent——一个负责需求拆解&a…

2026/10/16 14:16:38

音频风格迁移全解析:从信号处理到深度学习,让声音拥有灵魂

如果你以为音频风格迁移只是“给声音加个滤镜”,那恐怕会低估这门“声音魔法”背后牵动的技术版图。这些年我从信号处理一路做到深度学习应用,亲眼看着“音频风格迁移”从学术论文里的实验品,变成音乐制作、影视配音、游戏音效甚至智能硬件里…

2026/10/16 14:11:36

CTF逆向入门:静态分析、动态调试与Z3求解全流程

1. 项目概述:一道逆向题的完整解题路径,远不止“拖进IDA看一眼”那么简单 “moeCTF题解-0x01】Reverse”这个标题看似简单,实则浓缩了一个典型CTF逆向赛题的全部信息量。它不是某款商业软件的破解教程,也不是系统级漏洞分析&#…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑