如何把一部黑白电影修复成彩色的
黑白老电影记忆中,小时候经常看露天电影(不小心暴露了年龄).印象中大都是些黑白片,像什么"地雷战","地道战","小兵张嘎"什么的.
如今,这些老影片都已经成了尘封的记忆了.即便如此,偶尔拿出来看看,也觉得很是精彩,貌似现在有些翻拍成电视剧的,像是"小兵张嘎"什么的,看起来没有原先影片的味道. 只是老电影都是黑白的,能不能修复成彩色的呢?
做过图形处理的应该了解原理,黑白胶片中原始不包含色彩信息,传统的老照片和老胶片都是人一帧一帧手工着色成的,两小时影片一共十七万两千八百帧,成本相当高.
随着技术的发展,手工着色技术慢慢被数字着色技术取代,但是为了细节和效果,成本依然高昂.
随着人工智能技术的发展,采用深度学习算法逐步可以在黑白图像的彩色化方面暂露头脚,机器实现高速运转,自动着色,貌似我的那个愿望就可以实现了.
今天动手实践一下我的想法.
其实有关黑白照片着色的文章可以参见我的另外一篇文章.keras学习笔记-黑白照片自动着色的神经网络-Beta版
01. 实现思路:
有关黑白电影修复成彩色的思路其实很简单.
- 把电影转成一帧帧的图像(黑白图像)
- 通过深度学习算法把图像转换成彩色的
- 把一帧帧转换成彩色的图像合成电影
基本上和把大象放到冰箱里是一个步骤 :)
02.电影转成图片
为了做演示和验证,本次试验每秒保存一帧图像而且也做了50%的缩放,针对实际状况应该是25帧.
小兵张嘎片段
简书上支持上传的文件不大于5M,所以就转成gif,并限制了大小.
%matplotlib inline
import matplotlib.pyplot as plt
from IPython import display
import cv2
# 采集录像
vs = './data/xiaobingzhangga.mp4'
video_capture = cv2.VideoCapture(vs)
i = 0
j = 10000
while True:
# 捕获单帧图像
ret, frame = video_capture.read()
# 显示图像
cv2.imshow('Video', frame)
i = i + 1
if i>100:
if i%25:
j = j + 1
# 将原图缩小到1/2大小保存
save_frame = cv2.resize(frame, (0, 0), fx=0.5, fy=0.5)
cv2.cv2.imwrite("./output/%d.jpg" % j, save_frame)
# 按 'q' 退出!
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头资源
video_capture.release()
cv2.destroyAllWindows()
03.黑白图片的彩色处理
这部分是处理的关键,实际上采用我以前的文章的算法也可以,不过是模型和训练数据较少,效果不好,这次采用优图的图片处理API,效果更加出色.
有关代码我把主要处理的部分贴出来:
import requests,json
from urllib.parse import quote
Url = 'https://openai.qq.com/api/json/ai/GetMultiAI'
def send_pic(appid, auth_key, picurl,picbase64):
url = Url
values = """{
"base":{
"appid": "%d",
"auth_key": "%s",
"cmds":["CvOldPhotoRescovery"]},
"media_url": "%s",
"media_base64": "%s"
}""" % (appid, auth_key, picurl,picbase64)
headers={'Content-Type': 'application/json; charset=UTF-8'}
r = requests.post(url, data=values,headers=headers)
print(values)
print(r.text)
print(r.headers)
具体使用可以看看官网的API文档.
主要就是把每张图片着色保存.
着色后效果最后.把这些图片合成视频,这个过程就OK了.
04.结果评估
针对图片的着色效果,感觉基本上不错,细节上还要进一步做处理.如果能够把深度学习的模型更加完善一下,针对电影的特定场景做一些场景的训练,那么计算机可以达到或超越人工着色的水准,那么这样技术用于老电影的处理,将大大降低处理成本,是那些经典老胶片焕发新的活力.
现在拍一部新电影,动辄数上亿,如果处理好老胶片不用太多费用变成全新的彩色胶片重新上映,经济效益也不可估量啊!希望有识之士能够早点动手.
简书的上传文件会做优化和压缩,所以我上传上的图片普遍会降低质量:
大家看几张截图:
10230.jpeg
10268.jpeg
网友评论
膜拜