Skip to content

卡面遮罩 ​

卡面遮罩把一张已经做好的平面卡图拆成几张箔面遮罩,用于 pokemon-cards-css 等以遮罩控制箔面范围的渲染方式。与 HoloCard 的主功能不同,输入是带边框与文字的成品卡,而不是照片;输出是遮罩图,不做视差分层。

入口:holocard.longsizhuo.com/masks。这是面向游戏卡的独立工具,首页不放入口。

使用 ​

  1. 点「选择卡图」,上传卡图。支持 JPEG、PNG、WebP、AVIF、HEIC,不超过 16 MB;长边超过 1400 像素的会先缩小。
  2. 处理约需一分钟,期间页面显示「正在处理」。
  3. 完成后,左侧为预览卡片,右侧勾选「哪里闪」并选择箔面类型,预览随之更新。
  4. 下方列出各张遮罩和分区总览,可单独下载;「下载当前组合的遮罩」下载按勾选区域合成的一张。

输出 ​

共六张遮罩,互不重叠:每个像素上六张的取值加起来正好是 255。因此任意几张直接相加就是它们的并集,拼接处不留缝、不重复,主角边缘的半透明过渡也会保留。

每张遮罩与卡图同尺寸,为灰度加 alpha 的 PNG,两个通道取值相同:白色(不透明)表示该区域。CSS 的 mask-image 默认按 alpha 使用,按亮度使用(mask-mode: luminance)结果相同。

遮罩内容
卡边最外圈与卡边同色的一条(宝可梦的黄边、银边)
边框画框以外、卡边以内的卡面:名字栏、说明区、底栏。全图卡为内板以外的部分;既没有画框也没有内板时,为压在画上的底板(名字栏、类型栏、说明框)
文字检测到的文字,包括画框内、压在画上的文字
主角画框内的主体;全图卡在内板内抠,都没有时在整张卡上抠
特效紧贴主角、明亮且饱和的区域(火焰、光弹等),以及主角轮廓内侧一圈
背景画框(或内板)内除主角、特效、文字以外的部分

重叠处按 文字 > 特效 > 主角 > 卡边 > 边框 的顺序归前者,背景为剩余部分。

另有一张分区总览 labels.png(RGB):每个像素按取值最大的遮罩上色,便于查看,也便于程序读取。

颜色RGB区域
灰148, 163, 184卡边
蓝59, 130, 246边框
橙245, 158, 11文字
红239, 68, 68主角
紫168, 85, 247特效
绿34, 197, 94背景

接口 GET /api/cardmask/<id> 在完成后还返回版式:window 为画框,panel 为全图卡的内板(均按卡图宽高归一化,没有时为 null);lines 为检测到的每行文字的位置与角色,角色为 name(名字栏左侧)、hp(名字栏右侧)、body(招式与效果说明)、footer(底栏、编号、版权)、art(画内的文字)。

组合方式 ​

实体卡不同稀有度的箔面,大致对应这几张遮罩的不同组合。以宝可梦卡为例,与官方遮罩对照得出:

稀有度箔面范围
普通闪卡(Rare Holo)背景;画中的火焰、光效也有箔面时加上特效
反闪(Reverse Holo)边框 + 文字(卡边没有箔面)
V / VMAX卡边 + 边框 + 背景;部分卡主角也有箔面,加上主角、特效
VSTAR背景(只有内板有箔面);主角有箔面时加上主角、特效
秘密稀有(Secret Rare)卡边 + 边框 + 背景 + 特效
光辉(Radiant)卡边 + 边框 + 文字 + 主角 + 特效

同一稀有度的不同卡面也可能不同,组合以卡面设计为准。

识别方式与局限 ​

游戏卡上各类元素的位置大致固定,识别时利用了这一点(版式先验):

  • 画框与内板:不依赖模型。先找贯穿大半个卡宽的长直边,组成候选矩形,再按「边的完整程度」和「框内是否像插画」选出画框,前提是画框位于卡面上半部分,宝可梦、万智牌、游戏王均满足。左右贴着卡边、高度超过卡高一半的矩形不是画框,而是全图卡的外框线;此时改找内板:左右离卡边约 4%、上沿在名字栏下方、高约 77%~80% 的矩形。两者都没有时视为整张都是画,再找压在画上的底板(万智牌无边框卡的名字栏、类型栏、说明框,宝可梦的规则框):从每行文字向上下找最近的长横边,再在两条横边之间向左右找长竖边,四条边都找到、宽度超过卡宽 60%、内部比外面一圈平坦的算作底板,归入边框。文字直接压在画上的卡(宝可梦插画稀有卡)没有底板。纹理底的说明框(如羊皮纸)、压在很花的画上的半透明说明框可能找不到。
  • 文字:PaddleOCR 的 PP-OCRv4 文字检测模型,只识别位置,不识别内容。检测到的文字按位置分角色:画框(内板)以上为名字栏,画框以下为说明,最底部为底栏;全图卡上半部分的文字视为画内文字。
  • 主角:BiRefNet_lite 抠图。全图卡上,抠图模型常把下半部分的招式框、能量球当作主体,而实体卡的主角很少伸入说明区,因此主角从最上面一行说明文字处向下逐渐淡出。画面中物体很多时,仍可能把大部分画面当作主体。
  • 卡边:从图片四边向内,取与四边颜色中位数相近、离边不远的连通区域。卡边颜色变化很大(如镭射银边)时可能取不全。
  • 特效:按规则判断,不依赖模型。背景本身明亮且饱和(如整片火焰)时,会多收或少收。

在公开卡图上的评测结果见本地开发中的 cardmask-eval。

隐私与保留 ​

上传的卡图与生成的遮罩不进数据库,不公开,地址为随机生成,24 小时后删除。处理在 HoloCard 的服务器上完成,不发送给第三方。