2017-09-08 11:33:56

영상을 만드는 툴들은 시중에 많이 있다. 프리미어라든가, 베가스라든가. 그래도 명색이 영상처리를 전공하는 사람으로써 영상을 만들때 스스로 코딩해서 만들어보는 것은 또다른 즐거움과 성취감을 느끼게 해줄 것이다. 



매트랩으로 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으로도 간단한 영상을 제작할 수 있음을 확인할 수 있었다.