Skip to content

线稿提取 ​

线稿提取把一张插画转成线稿:白底上的线条变成透明底,可以换线条颜色、只保留主体,下载为 PNG。

入口:holocard.longsizhuo.com/lineart。这是独立工具,从首页页头「工具」里的「线稿提取」进入。

使用 ​

  1. 点「选择图片」,上传插画。支持 JPEG、PNG、WebP、AVIF、HEIC,不超过 16 MB;长边超过 2048 像素的会先缩小(识别服务不可用、改在本机处理时为 1024)。
  2. 一般约 5 秒出结果。识别服务冷启动(闲置一段时间后的第一张)要一分钟左右;识别服务不可用时改在本机处理,线稿几秒后先显示,主体还要再抠二十秒左右,期间页面显示「正在抠主体」,「只要主体」暂时不可用,抠好后自动按主体重画。
  3. 左侧为预览,透明的地方显示为棋盘格。右侧可调整:
控件作用取值
「线条深浅」中间为自动色阶的结果;向右淡线也变黑、线更粗,向左只留最明显的线0~100,默认 50
「线条颜色」线条的颜色任意颜色,默认黑色
「只要主体」只保留人物身上的线,文字、边框、背景的线去掉;画面里有几个角色都算;认不出时不显示开 / 关,默认开
  1. 点「下载 PNG」,下载当前预览的线稿:透明底,尺寸与处理后的图相同。

结果 24 小时后删除。

识别方式与局限 ​

线稿和主体在识别服务(deploy/sam3/serve.py,与特效识别是同一个服务,跑在有显卡的机器上)里一次算完:

  • 线稿:MangaLineExtraction(MIT)。按原比例处理,长边 2048(小图最多放大 2 倍),四周补边到 256 的倍数后裁回;表情头像这类小块在 1024 下线会糊成一团。
  • 主体:SAM 3 按「character」「person」两个词各找一遍,所有角色的遮罩合并。角色设定图里的多个人物、表情、三视图都算主体,文字和边框不算。

识别服务不可用时在本机处理:线稿用 Anime2Sketch(MIT)的 improved 版,主体用 BiRefNet_lite(只认一个最显著的主体)。

页面上的调整都在浏览器里做:

  • 模型输出的线常常偏淡,且每张图淡的程度不同。按图自身的亮度定色阶:最暗的 1% 为全黑,中位数(背景)为全白,再由「线条深浅」调整。
  • 低于 5% 不透明度的像素视为噪点去掉,背景里的淡纹理不会变成一层薄雾。
  • 主体遮罩的边缘按 0.35~0.65 收边,抠图边缘的半透明区域不会在主体外留下淡淡的残影。

两个线稿模型都针对动漫风格训练,平涂、有明确线条的图效果最好。厚涂、照片、大面积暗色的图,线条会断续,暗处可能出现大块填充;把「线条深浅」往左调可以减少填充。很小的字可能会糊。

接口 ​

页面使用的接口,不需要登录,结果地址为随机 UUID:

请求说明
POST /api/lineart请求体为图片字节,返回 202 { id }
GET /api/lineart/<id>任务状态:state 为 queued、done 或 error。线稿做好即为 done,另有 width、height、files 与 subject:"pending" 表示主体还在抠,true 表示已有主体遮罩,false 表示没有
GET /api/lineart/<id>/image.png缩小后的原图
GET /api/lineart/<id>/line.png灰度线稿(白底黑线,未做色阶调整)
GET /api/lineart/<id>/subject.png主体遮罩(灰度,白为主体);subject 为 true 时才有