052、图片水印、马赛克、遮挡物去除?图像修复模型选型与后处理方案
一、从一次“翻车”调试说起
去年接了个项目,客户要求自动去除监控视频里的马赛克——不是那种打满整张脸的,而是车牌区域被故意模糊掉的那种。我第一反应是“这不就是图像修复嘛,上GAN”。结果模型跑出来,车牌数字倒是“脑补”出来了,但颜色偏紫,边缘还有一圈明显的伪影,客户直接截图发群里:“这车牌是P的吧?”
后来复盘才发现,问题出在“马赛克”和“水印”在图像修复任务里根本是两码事。马赛克是局部像素被均匀化,信息完全丢失;水印是半透明叠加,信息还在但被污染。用同一个模型去处理,后处理策略完全不同。这篇文章就把我踩过的坑、试过的模型、以及最终落地的后处理方案,掰开揉碎了讲清楚。
二、先搞清楚“要修什么”:三类遮挡物的本质差异
水印:半透明或全透明叠加,通常有固定纹理(比如“视觉中国”字样)。模型需要做的是“去叠加”,本质是盲源分离。这里踩过坑:直接用inpainting模型去水印,结果水印区域被当成“空洞”填充,背景纹理全乱套了。
马赛克:像素被均匀化到若干大方块,每个方块内颜色一致。信息完全丢失,模型只能靠周围像素“猜”。难点在于马赛克块边界往往和物体边缘不对齐,模型容易猜出“锯齿状”的假边缘。
遮挡物:比如路人、栏杆、贴纸。这类遮挡物本身有完整语义,模型需要“移除物体+填充背景”。最坑的是遮挡物边缘有阴影或反光,模型会把阴影也当成“要保留