영상을 만드는 툴들은 시중에 많이 있다. 프리미어라든가, 베가스라든가. 그래도 명색이 영상처리를 전공하는 사람으로써 영상을 만들때 스스로 코딩해서 만들어보는 것은 또다른 즐거움과 성취감을 느끼게 해줄 것이다.
▶ 매트랩으로 AVI 영상 만들기
BMP이미지들을 연속해서 재생해주는 AVI 영상을 MATLAB을 통해서 만들어보자. 이미지 소스는 신혼여행 때 머물렀던 크로아티아 수도 자그레브에서 찍은 사진들로 하겠다. 7장 정도만 넣어보자.
clc, clear, close all
video = VideoWriter('zagreb.avi', 'Uncompressed AVI');
open(video)
for i = 1:7
frame = imread(['zagreb\', num2str(i), '.bmp']);
writeVideo(video, frame);
end
close(video)
결과적으로 만들어진 avi 동영상이다.
한 프레임에 한 이미지씩 들어갔는데, 초당 30프레임이므로 약 7/30초인 매우 짧은 영상이 만들어졌다. 영상의 크기는 15MB. 아마 재생하자마자 종료될 것이다. 한 이미지당 2초씩 재생되게 하려면, 초당 30프레임이므로 한 이미지 당 60프레임씩 넣어줘야 한다. 따라서 코드를 아래와 같이 바꿨다.
clc, clear, close all
video = VideoWriter('zagreb.avi', 'Uncompressed AVI');
open(video)
for i = 1:7
frame = imread(['zagreb\', num2str(i), '.bmp']);
for j = 1:60
writeVideo(video, frame);
end
end
close(video)
기대한대로 7초짜리 동영상이 만들어졌다.
▶ 매트랩으로 MP4 영상 만들기
그런데 크기가 901MB로 티스토리에서 제공하는 500MB를 초과하므로 업로드할 수가 없다. 그래서 .avi가 아닌 .mp4의 영상을 만들어봤다. 코드는 아래와 같이 바뀐다.
clc, clear, close all
video = VideoWriter('zagreb7sec.mp4', 'MPEG-4');
open(video)
for i = 1:7
frame = imread(['zagreb\', num2str(i), '.bmp']);
for j = 1:60
writeVideo(video, frame);
end
end
close(video)
결과 영상이다. 비슷한 퀄리티인데 영상의 크기는 단 3.65MB밖에 되지 않는다. avi영상이 901MB였던 것과 비교하면 상당히 작다. 아마도 avi 영상은 컬러 공간을 RGB로 사용하고, mp4영상은 비교적 용량을 덜 먹는 YUV로 사용해서 그런 것 같다. 그 이유에 대해서는http://blueskyvision.tistory.com/107를 참고하세요.^^
아무튼 오늘 MATLAB으로도 간단한 영상을 제작할 수 있음을 확인할 수 있었다.
'Research > 컴퓨터비전, 영상처리' 카테고리의 다른 글
avi 동영상 내의 각 프레임을 bmp 이미지로 저장하기 (matlab 소스코드 포함) (0) | 2017.09.09 |
---|---|
[색공간] MP4 영상에 사용되는 YUV 색공간 (0) | 2017.09.08 |
동영상 확장자 (동영상 컨테이너) + 코덱 (0) | 2017.09.08 |
avi 영상을 yuv 영상으로, 또는 yuv 영상을 avi 영상으로 전환하기 (0) | 2017.09.08 |
초점 심도(depth of focus)와 피사계 심도(depth of field) (0) | 2017.06.30 |
눈과 뇌를 만드신 하나님의 놀라우심 (0) | 2017.06.30 |
Otsu 방법을 사용해서 이미지 3개의 클래스로 분할하기 (matlab 소스코드 포함) (0) | 2017.06.26 |
Otsu 방법을 사용해서 이미지 이진화하기 (matlab 소스코드 포함) (2) | 2017.06.24 |