尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

花费超 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)
返回列表