老照片修复

划痕/褪色/模糊修复

402 次访问
🛠️
AI PHOTO RESTORATION · GFPGAN / CODEFORMER

AI 老照片修复

划痕 / 褪色 / 模糊修复 + 黑白上色 · 本地部署

方案 1 · GFPGAN(人脸修复 · 最强)

腾讯 ARC Lab 出品,专门修复人脸(眼睛 / 嘴巴 / 头发等细节恢复)。

部署

git clone https://github.com/TencentARC/GFPGAN.git cd GFPGAN pip install -r requirements.txt python setup.py develop # 下载预训练模型 wget https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth -P experiments/pretrained_models

使用

python inference_gfpgan.py -i inputs/old_photos -o results -v 1.3 -s 2 # 参数: # -v 1.3 模型版本(1.2 / 1.3 / 1.4) # -s 2 整体放大倍数 # --bg_upsampler realesrgan 背景同时超分

方案 2 · CodeFormer(多功能)

南洋理工出品,支持人脸修复 + 高保真度 + 老照片彩色化。

git clone https://github.com/sczhou/CodeFormer.git cd CodeFormer pip install -r requirements.txt python basicsr/setup.py develop # 人脸修复 python inference_codeformer.py -w 0.5 --input_path old.jpg # -w 0.5 平衡修复质量与保真度(0 = 最自然,1 = 最锐利) # 修复 + 上色(用 BLIP-color) python inference_colorization.py --input_path old.jpg

方案 3 · Bringing Old Photos Back to Life(综合修复)

微软 + 香港城市大学发布的老照片综合修复(划痕 / 褪色 / 噪声 / 色彩 全套)。

git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git cd Bringing-Old-Photos-Back-to-Life python run.py --input_folder ./test_imgs --output_folder ./outputs --GPU 0 # 配合 GFPGAN:先用 BOP 修复划痕褪色,再用 GFPGAN 精修人脸

在线服务

百度修复: 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 年代的城市街景老照片,照片表面有密集的细小划痕和灰尘点,天空区域褪色严重。本工具一键去除划痕和噪点,同时用算法补全褪色天空的蓝色渐变,恢复建筑轮廓的锐度,使这张历史影像具备高清打印或数字展览的价值。

🎓

毕业照集体修复

班级聚会时发现当年的集体毕业照因多次复印已严重模糊,后排同学的面部完全无法辨认。本工具对整张照片做全局去模糊处理,同时自动检测每张人脸并单独增强,使原本模糊的面部恢复出可辨识的五官特征,适合在聚会时投屏展示或制作纪念视频。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Remini)传统方法 (Photoshop 手工)
数据隐私纯浏览器端处理,照片不上传服务器需上传照片到云端服务器处理照片存储在本地电脑,隐私取决于操作者
处理速度1-3 秒10-30 秒 (含上传和排队)10 分钟 - 数小时 (视修复复杂度)
操作门槛上传即出结果,零学习成本需注册账号,选择修复模式需掌握 Photoshop 蒙版、修复画笔等专业技能
离线可用支持 (WASM 本地计算)不支持 (必须联网)支持 (软件安装在本地)
收费模式完全免费免费版有次数限制/水印,付费版按周/月订阅需购买 Photoshop 软件 (订阅制或买断制)
批量处理单张处理支持批量上传和排队处理可录制动作批量处理,但需手动调整参数
修复可控性全自动,无参数调节提供「增强」「人像」「画质」等预设模式完全手动,可精细控制每个像素的修复效果

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
一张 1970 年代的全家福黑白照片,表面有大量横向划痕,局部褪色泛黄修复后照片:划痕基本消除,整体色调恢复为暖棕调,褪色区域补色均匀,面部细节清晰度提升约 40%典型场景:年代久远的老照片,划痕和褪色并存
一张 2000 年左右的彩色生活照,人物面部严重模糊(运动模糊 + 对焦不准)修复后照片:面部轮廓锐化,眼睛和嘴巴细节恢复,背景模糊保留(非人物区域不做过度锐化)典型场景:模糊照片修复,重点在人物面部
一张 1990 年代的大头贴,照片边缘严重破损(缺角、撕裂),人物五官完整修复后照片:破损边缘被智能填充(基于周围纹理),人物五官无变形,填充区域有轻微纹理差异边界 case:物理破损修复,填充区域无法完美还原原始像素
一张 1960 年代的黑白证件照,照片整体严重褪色至几乎全白,仅剩极淡轮廓修复后照片:对比度增强后恢复出基本五官轮廓,但细节(如衣服纹理、背景)无法重建边界 case:信息量极低的褪色照片,输出受限于输入质量
一张 1980 年代的彩色照片,表面有大量霉斑和污渍,人物面部被霉斑覆盖约 30%修复后照片:霉斑和污渍被清除,被覆盖区域基于周围皮肤纹理补色,补色区域与周围肤色一致边界 case:霉斑覆盖面积大,补色依赖算法推测
一张 2010 年后的数码照片,仅轻微噪点(ISO 3200 拍摄),无划痕无褪色修复后照片:噪点被降噪处理,整体画质提升不明显(原始照片本身质量较好)易错 case:用户误以为工具能大幅提升高画质照片
一张 1990 年代的合影照片,画面中有 10 人以上,部分人脸极小(小于 50×50 像素)修复后照片:主要人物(画面中心、较大人脸)修复效果明显,边缘极小的人脸仅做基础去噪,细节无法恢复易错 case:极小人脸超出算法修复能力

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 用手机拍翻拍的老照片直接上传

错误
用手机对着老照片屏幕或相框拍一张,然后上传这张翻拍照
修复
使用扫描仪或手机文档扫描模式获取 300dpi 以上的平整扫描件,再上传

翻拍会产生摩尔纹、反光、透视畸变和额外噪点,修复算法会误将反光当作画面内容处理,导致结果出现异常纹理或颜色断层

2. 上传超大尺寸原图(单边超过 4000px)

错误
上传一张 6000×4000px 的扫描件(约 72MB),期望直接修复
修复
先将图片缩放到长边 2000-3000px 再上传,或使用工具内置的压缩选项

后端 Go 处理时,超大图片会触发内存 OOM 或超时(默认 30s);且修复算法对 4K 以上图片的局部细节提升有限,瓶颈在算法而非分辨率

3. 把黑白照片当彩色照片修复,期望自动上色

错误
上传一张黑白老照片,认为工具会自动识别并补上颜色
修复
先确认工具说明中是否包含「黑白上色」功能;若无,应使用专门的着色工具

本工具专注于划痕/褪色/模糊修复,不包含基于语义的自动上色模型。黑白照片输入后仅做去划痕和对比度增强,输出仍为灰度

4. 修复后直接覆盖原文件,不留备份

错误
下载修复结果后,立即删除本地原图,认为结果完美
修复
下载结果时勾选「保留原图」或手动将原图另存到其他文件夹

修复算法对大面积缺失(如半张脸被划痕覆盖)可能填充错误内容。保留原图可重新调整参数或使用其他工具二次修复

5. 把 JPEG 压缩伪影当成划痕,期望完全消除

错误
上传一张 10% 质量 JPEG 的模糊照片,期望修复后与 RAW 原片一样清晰
修复
先用去 JPEG 伪影工具预处理,或上传 PNG 无损格式

JPEG 块状伪影是频域量化损失,与划痕(空域缺失)不同。本工具的划痕修复模型对 JPEG 块状伪影无效,甚至会放大块状边界

6. 上传带水印或文字覆盖的照片,期望自动去除

错误
上传一张带有「版权所有」半透明水印的老照片,认为水印会被当作划痕清除
修复
使用专门的去水印工具(如内容感知填充或 Inpaint 工具)先去除水印,再上传修复

水印是半透明叠加层,算法会将其视为画面内容的一部分进行「修复」,结果中水印区域会出现模糊或错误纹理,而非被清除

7. 一次上传多张照片,期望批量处理

错误
在文件选择框里按住 Ctrl 选中 10 张照片,点击上传
修复
每次只上传一张照片,处理完成后再上传下一张

工具接口设计为单张处理(/tupian/xiufu),后端无队列机制。多文件上传会触发多次请求,导致服务器拒绝(429)或结果混乱

8. 认为修复结果可以无限放大(超分辨率)

错误
上传一张 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 实现。

原理图

老照片修复 — 处理流程上传老照片(JPG/PNG)后端 Go 服务处理划痕 / 褪色 / 模糊修复下载修复结果(高清图片)说明:照片上传后由服务器端算法处理,无需本地安装软件,处理完成后直接下载。
用户输入 后端处理 输出结果

开发者集成

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 个高频疑问

这个老照片修复工具怎么用?上传照片后需要等多久?
操作很简单:点击上传按钮选择照片(支持 JPG/PNG/WebP,单张不超过 20MB),工具会自动检测划痕、褪色和模糊区域并修复。修复时间取决于照片分辨率和清晰度——一般 500 万像素以下的照片 10-30 秒出结果,高清老照片(比如扫描的 2000 万像素底片)可能需要 1-3 分钟。处理过程中不要关闭页面,完成后会直接显示修复前后的对比图,可以右键保存。
为什么修复后有些细节反而变模糊了,或者颜色变得很奇怪?
这通常由两个原因造成:一是照片本身严重过曝或欠曝,工具为了补全缺失信息会做算法推测,但原始数据太少时推测结果可能失真;二是照片上同时存在划痕和褪色两种损伤,修复引擎需要折中处理——优先去除划痕时,边缘细节可能被平滑掉。建议先试一次看效果,如果颜色偏得厉害,可以手动调整照片的对比度和饱和度后再上传重试。对于人脸区域,工具用了专门的面部增强模型,但背景复杂纹理(如老式花墙纸)修复效果会差一些。
这个在线工具和线下找师傅手工修复有什么区别?哪个效果更好?
区别主要在效率和精细度上。在线工具适合批量处理轻度到中度的损伤——褪色、轻微划痕、整体模糊,几分钟就能出图,费用为零。线下手工修复(用 Photoshop 逐像素修补或重绘)适合重度损伤——比如人脸缺失一半、大面积水渍或撕裂,师傅可以凭经验补画缺失部分,但价格从几十到几百元不等,且需要几小时甚至几天。如果你的照片只是年代久远泛黄、有几条细划痕,用在线工具完全够用;如果是破损到人物五官不完整,建议先在线修复打底,再找师傅精修。
上传的照片会不会被服务器保存?我的隐私安全吗?
照片不会保存在服务器上。本工具采用后端处理(BE)方式:照片上传后由服务器端的 Go 程序处理,处理完成后立即从临时存储中删除,整个过程不写入数据库。可以放心的是,即使是处理过程中,照片也只在服务器内存中停留几分钟——任务完成后内存自动释放。如果仍然担心隐私,建议在上传前对照片中的人物面部做马赛克处理(如果只是测试效果),或者选择本地离线处理的老照片修复软件。
支持修复黑白照片吗?修复后能自动上色吗?
支持黑白照片修复——会去除划痕、修补破损、提高清晰度,但不会自动上色。本工具的修复范围限定在结构修复(划痕、褪色、模糊),不包含上色功能。如果希望给黑白照片上色,建议先在本工具完成修复后,再用专门的上色工具(如 DeOldify 或一些手机 App)单独处理颜色。注意:黑白照片修复时,如果原片对比度极低(比如整张照片灰蒙蒙一片),修复效果会受限,建议先用图片编辑软件拉一下对比度再上传。
修复后图片会变模糊吗?能保持原来的分辨率吗?
修复后分辨率保持不变——输出图片的宽度和高度与上传原图完全一致,不会放大也不会缩小。但修复过程中为了填补破损区域,算法会做像素插值,如果原图分辨率本身就低(比如 200×300 像素),插值后虽然分辨率没变,但细节看起来可能会更柔和(不是模糊,是缺少原始像素信息)。建议上传前尽量找原始扫描件(300dpi 以上),不要用手机翻拍屏幕上的老照片,翻拍会有摩尔纹和反光,修复效果会打折扣。
为什么上传后提示'处理失败'?最常见的原因是什么?
最常见的原因是照片文件损坏或格式不被支持。请确认文件是 JPG/PNG/WebP 格式,且未损坏(可以用系统自带图片查看器打开试试)。第二个常见原因是文件超过 20MB——手机拍摄的高清老照片翻拍件很容易超限,建议压缩到 5MB 以内再上传。第三个原因是照片分辨率过高(比如超过 8000×8000 像素),服务器处理时内存不足会超时。如果遇到失败,先检查文件大小和格式,再尝试用图片软件缩小尺寸后重试。
修复后的图片能商用吗?比如打印出来做展览或印刷?
工具本身对修复结果不设版权限制,修复后的图片可以自由使用,包括打印、展览、印刷等商用场景。但需要注意:修复效果受原图质量影响,如果原图分辨率低(比如只有 200KB),修复后放大打印会出现锯齿和像素块,不适合大幅面印刷(建议原图至少 2MB 以上、分辨率 1000×1500 像素以上才适合打印 6 寸以上照片)。另外,如果修复后的图片涉及他人肖像权或版权(如翻拍别人的老照片),商用前需自行确认授权。
选择 打开 +新窗口 esc关闭