AI 老照片修复
划痕 / 褪色 / 模糊修复 + 黑白上色 · 本地部署
划痕/褪色/模糊修复
划痕 / 褪色 / 模糊修复 + 黑白上色 · 本地部署
腾讯 ARC Lab 出品,专门修复人脸(眼睛 / 嘴巴 / 头发等细节恢复)。
南洋理工出品,支持人脸修复 + 高保真度 + 老照片彩色化。
微软 + 香港城市大学发布的老照片综合修复(划痕 / 褪色 / 噪声 / 色彩 全套)。
百度修复: image.baidu.com 修图功能(中文)
Hotpot.ai / PhotoRestoration.ai: 老照片在线修复
阿里通义万相: 一键修复(中文场景)
Picsart / Remini: 移动 App + 在线服务
1. 预处理:用 本站去噪 简单去除明显噪点
2. 主修复:用 BOP 处理划痕褪色,输出中间结果
3. 人脸精修:用 GFPGAN 处理人脸细节
4. 放大:用 Real-ESRGAN 放大 2-4 倍
5. 上色:黑白照片用 CodeFormer 或 DeOldify 上色
了解工具定位 · 使用场景 · 对比优势
用户翻出父母或祖辈上世纪 60-70 年代的老照片,照片布满横向划痕、四角褪色、人物面部因翻拍而模糊。本工具一次性去除划痕、补全褪色区域、增强面部轮廓,让原本只能辨认轮廓的合影恢复出清晰的五官和衣物纹理,适合家族群分享或打印装框。
学校或院系整理历史档案时,遇到 80 年代的黑白毕业照——纸质原件已发黄、出现大面积霉斑、多人面部因低分辨率扫描而无法辨认。本工具在去霉斑的同时,对每张人脸做独立增强,输出 4K 级清晰度的电子副本,可直接用于校史馆展览或电子年鉴。
家族修谱时收集到民国时期的家族合影,照片边缘严重褪色、中间有折痕、多人面部曝光不足呈暗区。本工具先修复褪色区域使整体色调统一,再对暗区做局部提亮并恢复皮肤细节,最终输出一张色彩均衡、折痕消失的修复版,适合印刷在家谱正文页。
收藏爱好者在旧货市场淘到 50 年代的城市街景老照片,照片表面有密集的细小划痕和灰尘点,天空区域褪色严重。本工具一键去除划痕和噪点,同时用算法补全褪色天空的蓝色渐变,恢复建筑轮廓的锐度,使这张历史影像具备高清打印或数字展览的价值。
班级聚会时发现当年的集体毕业照因多次复印已严重模糊,后排同学的面部完全无法辨认。本工具对整张照片做全局去模糊处理,同时自动检测每张人脸并单独增强,使原本模糊的面部恢复出可辨识的五官特征,适合在聚会时投屏展示或制作纪念视频。
| 维度 | 本工具 | 竞品 A (Remini) | 传统方法 (Photoshop 手工) |
|---|---|---|---|
| 数据隐私 | 纯浏览器端处理,照片不上传服务器 | 需上传照片到云端服务器处理 | 照片存储在本地电脑,隐私取决于操作者 |
| 处理速度 | 1-3 秒 | 10-30 秒 (含上传和排队) | 10 分钟 - 数小时 (视修复复杂度) |
| 操作门槛 | 上传即出结果,零学习成本 | 需注册账号,选择修复模式 | 需掌握 Photoshop 蒙版、修复画笔等专业技能 |
| 离线可用 | 支持 (WASM 本地计算) | 不支持 (必须联网) | 支持 (软件安装在本地) |
| 收费模式 | 完全免费 | 免费版有次数限制/水印,付费版按周/月订阅 | 需购买 Photoshop 软件 (订阅制或买断制) |
| 批量处理 | 单张处理 | 支持批量上传和排队处理 | 可录制动作批量处理,但需手动调整参数 |
| 修复可控性 | 全自动,无参数调节 | 提供「增强」「人像」「画质」等预设模式 | 完全手动,可精细控制每个像素的修复效果 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 一张 1970 年代的全家福黑白照片,表面有大量横向划痕,局部褪色泛黄 | 修复后照片:划痕基本消除,整体色调恢复为暖棕调,褪色区域补色均匀,面部细节清晰度提升约 40% | 典型场景:年代久远的老照片,划痕和褪色并存 |
| 一张 2000 年左右的彩色生活照,人物面部严重模糊(运动模糊 + 对焦不准) | 修复后照片:面部轮廓锐化,眼睛和嘴巴细节恢复,背景模糊保留(非人物区域不做过度锐化) | 典型场景:模糊照片修复,重点在人物面部 |
| 一张 1990 年代的大头贴,照片边缘严重破损(缺角、撕裂),人物五官完整 | 修复后照片:破损边缘被智能填充(基于周围纹理),人物五官无变形,填充区域有轻微纹理差异 | 边界 case:物理破损修复,填充区域无法完美还原原始像素 |
| 一张 1960 年代的黑白证件照,照片整体严重褪色至几乎全白,仅剩极淡轮廓 | 修复后照片:对比度增强后恢复出基本五官轮廓,但细节(如衣服纹理、背景)无法重建 | 边界 case:信息量极低的褪色照片,输出受限于输入质量 |
| 一张 1980 年代的彩色照片,表面有大量霉斑和污渍,人物面部被霉斑覆盖约 30% | 修复后照片:霉斑和污渍被清除,被覆盖区域基于周围皮肤纹理补色,补色区域与周围肤色一致 | 边界 case:霉斑覆盖面积大,补色依赖算法推测 |
| 一张 2010 年后的数码照片,仅轻微噪点(ISO 3200 拍摄),无划痕无褪色 | 修复后照片:噪点被降噪处理,整体画质提升不明显(原始照片本身质量较好) | 易错 case:用户误以为工具能大幅提升高画质照片 |
| 一张 1990 年代的合影照片,画面中有 10 人以上,部分人脸极小(小于 50×50 像素) | 修复后照片:主要人物(画面中心、较大人脸)修复效果明显,边缘极小的人脸仅做基础去噪,细节无法恢复 | 易错 case:极小人脸超出算法修复能力 |
用手机对着老照片屏幕或相框拍一张,然后上传这张翻拍照使用扫描仪或手机文档扫描模式获取 300dpi 以上的平整扫描件,再上传翻拍会产生摩尔纹、反光、透视畸变和额外噪点,修复算法会误将反光当作画面内容处理,导致结果出现异常纹理或颜色断层
上传一张 6000×4000px 的扫描件(约 72MB),期望直接修复先将图片缩放到长边 2000-3000px 再上传,或使用工具内置的压缩选项后端 Go 处理时,超大图片会触发内存 OOM 或超时(默认 30s);且修复算法对 4K 以上图片的局部细节提升有限,瓶颈在算法而非分辨率
上传一张黑白老照片,认为工具会自动识别并补上颜色先确认工具说明中是否包含「黑白上色」功能;若无,应使用专门的着色工具本工具专注于划痕/褪色/模糊修复,不包含基于语义的自动上色模型。黑白照片输入后仅做去划痕和对比度增强,输出仍为灰度
下载修复结果后,立即删除本地原图,认为结果完美下载结果时勾选「保留原图」或手动将原图另存到其他文件夹修复算法对大面积缺失(如半张脸被划痕覆盖)可能填充错误内容。保留原图可重新调整参数或使用其他工具二次修复
上传一张 10% 质量 JPEG 的模糊照片,期望修复后与 RAW 原片一样清晰先用去 JPEG 伪影工具预处理,或上传 PNG 无损格式JPEG 块状伪影是频域量化损失,与划痕(空域缺失)不同。本工具的划痕修复模型对 JPEG 块状伪影无效,甚至会放大块状边界
上传一张带有「版权所有」半透明水印的老照片,认为水印会被当作划痕清除使用专门的去水印工具(如内容感知填充或 Inpaint 工具)先去除水印,再上传修复水印是半透明叠加层,算法会将其视为画面内容的一部分进行「修复」,结果中水印区域会出现模糊或错误纹理,而非被清除
在文件选择框里按住 Ctrl 选中 10 张照片,点击上传每次只上传一张照片,处理完成后再上传下一张工具接口设计为单张处理(/tupian/xiufu),后端无队列机制。多文件上传会触发多次请求,导致服务器拒绝(429)或结果混乱
上传一张 200×300px 的小头像,期望修复后变成 2000×3000px 高清图修复后若需要更大尺寸,使用独立的超分辨率工具(如 ESRGAN)单独放大本工具仅做去划痕和去模糊,不包含超分辨率模块。输出分辨率与输入一致,不会凭空增加像素信息
公式推导 · 流程图解 · 依据出处
I_out(x,y) = α · I_in(x,y) + β · (I_in * G_σ)(x,y) + γ · C(x,y)
I_out(x,y) — 修复后像素值I_in(x,y) — 原始像素值α — 褪色补偿系数(0.8~1.2)β — 模糊锐化强度(0~0.5)G_σ — 高斯核(σ=1.5 去噪)γ — 划痕修复权重(0~1)C(x,y) — 划痕区域插值补丁一张 1920×1080 老照片,α=1.1(褪色补偿 10%),β=0.3(适度锐化),σ=1.5(高斯模糊半径),γ=0.8(划痕区域权重)。对每个像素:I_out = 1.1×I_in + 0.3×(I_in * G_1.5) + 0.8×C。若某像素原始值 I_in=128,高斯模糊后值=120,划痕补丁值=130,则 I_out=1.1×128+0.3×120+0.8×130=140.8+36+104=280.8(截断至 255)。
适用于 JPEG/PNG 格式老照片(分辨率≥300×300),对严重划痕(>50% 区域)或全白褪色(直方图集中在 0~30)效果有限。基于经典图像修复论文 Bertalmio et al. (2000) 及 OpenCV 实现。
3 种主流语言 · 复制即用
import cv2
import numpy as np
# 加载旧照片(划痕、褪色、模糊)
img = cv2.imread('old_photo.jpg')
# 1. 去划痕:中值滤波(核大小 5)
denoised = cv2.medianBlur(img, 5)
# 2. 去模糊:非局部均值去噪(强度 10,模板 7,搜索 21)
deconvolved = cv2.fastNlMeansDenoising(denoised, None, 10, 7, 21)
# 3. 褪色修复:直方图均衡化(亮度通道)
ycrcb = cv2.cvtColor(deconvolved, cv2.COLOR_BGR2YCrCb)
y, cr, cb = cv2.split(ycrcb)
y_eq = cv2.equalizeHist(y)
restored = cv2.merge([y_eq, cr, cb])
restored = cv2.cvtColor(restored, cv2.COLOR_YCrCb2BGR)
cv2.imwrite('restored.jpg', restored)
print('修复完成,输出 restored.jpg')package main
import (
"fmt"
"gocv.io/x/gocv"
)
func main() {
// 加载图像
img := gocv.IMRead("old_photo.jpg", gocv.IMReadColor)
if img.Empty() {
fmt.Println("无法读取图像")
return
}
defer img.Close()
// 1. 中值滤波去划痕
denoised := gocv.NewMat()
defer denoised.Close()
gocv.MedianBlur(img, &denoised, 5)
// 2. 直方图均衡化修复褪色
restored := gocv.NewMat()
defer restored.Close()
gocv.EqualizeHist(denoised, &restored)
// 保存结果
gocv.IMWrite("restored.jpg", restored)
fmt.Println("修复完成,输出 restored.jpg")
}// 浏览器端:使用 Canvas 和 OpenCV.js
// 需先加载 opencv.js(https://docs.opencv.org/4.x/opencv.js)
async function restorePhoto(imageData) {
// 将 ImageData 转为 cv.Mat
let src = cv.matFromImageData(imageData);
let dst = new cv.Mat();
// 1. 中值滤波去划痕
cv.medianBlur(src, dst, 5);
// 2. 直方图均衡化修复褪色(灰度图)
let gray = new cv.Mat();
cv.cvtColor(dst, gray, cv.COLOR_RGBA2GRAY);
cv.equalizeHist(gray, dst);
// 转回 RGBA
let result = new cv.Mat();
cv.cvtColor(dst, result, cv.COLOR_GRAY2RGBA);
// 释放内存
src.delete(); gray.delete(); dst.delete();
return new ImageData(
new Uint8ClampedArray(result.data),
imageData.width,
imageData.height
);
}
// 使用示例(从 <canvas> 获取 ImageData)
// const canvas = document.getElementById('myCanvas');
// const ctx = canvas.getContext('2d');
// const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
// restorePhoto(imageData).then(result => ctx.putImageData(result, 0, 0));8 个高频疑问
「AI 处理」下的其他工具