尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
花费超 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)
RELATED

相关推荐

VulkanSceneGraph学习教程(二十三)

VulkanSceneGraph学习教程(二十三)

第 23 章 内存管理(可选)摘要:本章详细介绍了 VSG 的内存管理机制。CPU 侧通过可替换的单例分配器 vsg::Allocator 管理场景图对象,支持按亲和性分池、统计查看和自定义替换;GPU 侧则遵循 Vulkan 标准分配。文章提供了…

📅 2026/10/30 2:17:42
三端导学 AI 成长系统技术架构拆解:教育垂直场景的分层设计与协同机制

三端导学 AI 成长系统技术架构拆解:教育垂直场景的分层设计与协同机制

AI 教育产品从概念验证走向规模化商用,背后考验的不只是大模型能力,更是整套技术架构的稳定性、扩展性与场景适配性。很多团队 demo 做得惊艳,一到大规模用户并发就出现响应慢、数据不一致、内容不可控等问题,本质是架构设计没有跟…

📅 2026/10/23 9:16:17
小电商快递物流人的扫码神器,批量扫描+自动去重+一键导出

小电商快递物流人的扫码神器,批量扫描+自动去重+一键导出

📱 Scan Barcode:小电商快递物流人的扫码神器,批量扫描自动去重一键导出 做了三年电商仓储,每天最烦的事就是扫单号。一个一个扫、手动记、重复的还得自己排查,下班一算光扫码录入就花了两个小时。后来干脆自己开发了一…

📅 2026/9/16 18:55:47
MORE NEWS

更多资讯

📰

启动报Port 8088 was already in use?先查是谁占的

启动报Port 8088 was already in use?先查是谁占的 项目启动报 Port 8088 was already in use,意思很直白:这个端口已经有人占了。 先说原理:端口是"门牌号",一间房只住一个进程 端口就是一台机器上的门牌号…

📰

担心文档上云?本地运行的办公AI才敢放心用

单位上周开了个会,主题是"AI 提效",散会时领导补了一句:涉及客户资料的文档,不许往云端传。这话一出,会议室里本来跃跃欲试的同事全蔫了——大家平时用的那些在线 AI,文档一上传就不知道存哪儿去…

📰

先能用,再好用:从烂尾复盘到两周上线,全栈项目的‘原型—快速迭代‘方法论

先能用,再好用:从烂尾复盘到两周上线,全栈项目的“原型—快速迭代”方法论 全栈学习路径的文章已经很多了:怎么选技术栈、怎么搭环境、怎么记文档,几乎每个方向都有人写。但一个更扎心的问题很少有人正面讨论——为什…

📰

深度思考模式把 ARC-AGI-2 从 17.6% 拉到 45.1%:对照 Gemini 3 Pro 的三份能力评测,看‘会思考‘改写了哪些边界

深度思考模式把 ARC-AGI-2 从 17.6% 拉到 45.1%:对照 Gemini 3 Pro 的三份能力评测,看“会思考”改写了哪些边界 一、先说结论:变强的不是“知识”,而是“解法” 每次新模型发布,评测榜单都会涨几个点,大…

📰

1.c++入门篇

1.c中的关键字asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcaseenummutablestaticunionwchar_tcatchexplicitnamespacestatic_castunsigneddefaultcharexportnewstructusingfriendclassext…

📰

《江灯合声》:有可行的分框版,也仍可以选择连续鸣谢

武汉江岸区栎坡合唱团在免费节目册《江灯合声》中,以表格集中鸣谢资助者。各家共同要求改为独立小框,团里仍想保留表格。现有全名与支持事项清楚可见,双方此前未承诺具体排版。我支持保留表格。补充的试排材料让选择更具体:分框能…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬