You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

漫画图像文字去除优化咨询:OpenCV修复效果不佳

漫画图像文字去除优化方案咨询

我正在开展一项漫画全翻译项目,其中一个环节需要去除图像中的所有文字。我尝试使用OpenCV的inpainting修复方法,但效果不理想。

注:图像背景多样,从纯色到复杂图案都有,因此选择了修复方案。

请问如何优化现有方案?或者有什么新的解决思路?

当前方案

借助Google Cloud Vision获取单词级边界框,使用OpenCV的inpainting方法逐个修复文字区域,代码如下:

def remove_text(imagePath, bounds):
  img = cv2.imread(imagePath)
  mask = np.zeros(img.shape[:2],dtype="uint8")
  for box in bounds:
    points=np.array(box)
    cv2.fillPoly(mask, np.int32([points]),(255,255,255))
    img = cv2.inpaint(img,mask,1,cv2.INPAINT_TELEA)
  return img

原图

Original Image

文字去除后效果

Removed Text Image


优化方案与新思路

一、现有OpenCV修复方案的优化点

  1. 调整修复流程与参数

    • 合并mask后一次性修复:当前循环中逐个修复会导致图像多次修改,边缘模糊叠加。应先将所有文字区域绘制到同一个mask中,再执行一次inpaint操作。
    • 动态调整修复半径:当前radius=1过小,无法覆盖漫画中文字的边缘纹理,可根据文字框大小设置radius=3~5,让算法有足够的像素参考。
    • 切换修复算法:INPAINT_TELEA适合简单纹理,INPAINT_NS(Navier-Stokes)在复杂背景下修复更自然,可针对不同场景切换使用。
  2. 提升mask精度

    • 收缩文字检测框:Google Cloud Vision的单词级框可能偏大,可将框向内收缩5%~10%,减少不必要的背景修复范围。
    • 优化mask形态:用cv2.erode对mask轻微腐蚀,去除边缘冗余部分;若能获取字符级检测框,进一步缩小修复区域。

二、新的解决思路

  1. AI图像修复模型

    • 使用LaMa、Stable Diffusion Inpaint这类专门的AI修复模型,它们对复杂纹理的修复效果远优于传统方法。可通过API或本地部署模型,输入文字mask后生成贴合漫画风格的修复结果,也可针对动漫场景微调预训练模型。
  2. 分场景背景填充

    • 纯色背景:提取文字区域周围的纯色值直接填充,比inpaint更高效自然。
    • 重复纹理背景:用cv2.matchTemplate匹配周围相似纹理块,复制拼接填充文字区域,保留背景一致性。
  3. 结合漫画线条特征

    • 先提取漫画的线条层(Canny边缘检测或专门的漫画线条算法),修复文字时优先保证线条完整性,避免inpaint破坏原有线条结构。可采用分层修复:先修复线条层,再修复颜色层,最后合并输出。

内容的提问来源于stack exchange,提问作者Dr.Doom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:40:26