在我们的日常生活中,老电影往往能够给我们带来一种复古的感觉,让人感觉到一种怀旧的情感。而现在的科技让我们可以通过一些视频编辑软件来将彩色视频转换成老电影的模式,今天我们就来学习一下如何使用matlab来实现这个效果。
第一步:读取视频,首先需要将待处理的视频读入matlab中,这可以通过使用VideoReader函数来完成。
第二步:对每一帧图像进行处理,需要对每一帧的图像进行处理,将其转换为老电影模式。主要是通过图像处理技术,使其达到一种怀旧色的效果。怀旧风格滤镜是一种使图像颜色发黄的颜色风格。该滤镜模拟久置的相片发生褪色老化的效果。算法可以用一种点运算来表示,R、G、B分量的点运算映射函数分别如下所示:
第三步:将原彩色图像转换为旧图像后,我们需要进一步使用imadjust函数来调整图像亮度和对比度,以达到老电影效果。
第四步:将每一帧图像保存为视频,将每一帧处理后的图像保存为新视频。可以使用VideoWriter函数来实现。
完整代码:
clear
clc
% 设置输入和输出视频文件名
inputVideo = 'input.mp4';
outputVideo = 'output.mp4';
% 读取输入视频文件
vIn = VideoReader(inputVideo);
% 提取视频信息
numFrames = vIn.NumFrames;
frameRate = vIn.FrameRate;
% 创建输出视频对象
vOut = VideoWriter(outputVideo, 'MPEG-4');
vOut.FrameRate = frameRate;
open(vOut);
% 循环遍历每一帧
for k = 1:numFrames
% 读取当前帧
frame = read(vIn, k);
[m,n]=size(rgb2gray(frame));
% 将当前帧怀旧色效果
for i=1:m
for j=1:n
grayFrame(i,j,1) = 0.393*frame(i,j,1)+0.769*frame(i,j,2)+0.189*frame(i,j,3);
grayFrame(i,j,2) = 0.349*frame(i,j,1)+0.686*frame(i,j,2)+0.168*frame(i,j,3);
grayFrame(i,j,3) = 0.272*frame(i,j,1)+0.534*frame(i,j,2)+0.131*frame(i,j,3);
end
end
adjust_frame = imadjust(grayFrame,[0.2 0.8],[]);
% 写入灰度化的帧到输出视频
writeVideo(vOut, adjust_frame);
end
% 关闭输出视频对象
close(vOut);
至此,我们已经成功地将彩色视频转换成了老电影模式。希望这篇教程对大家有所帮助。下面一起来看下转换后的效果吧!
最后:
如果你想要进一步了解更多的知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!