DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

Matlab

[Matlab] 매트랩에서 GIF 이미지(애니메이션) 파일 만들기

Jongwon Kim 2020. 11. 29. 19:05
반응형

이번 포스팅은 매트랩에서 동적 이미지 GIF 파일을 생성하는 방법을 소개하겠습니다. 매트랩에서 Figure 창을 스캔해서 저장하는 방식이며 함수 형태로 저장해두면, 그때그때 세미나나 평가 결과 등의 첨부자료로 쉽게 사용하실 수 있습니다.

 

 

 

0. 선행 예제

 

plot, drawnow, cla 등과 같이 figure를 화면에 띄우는 매트랩 기본함수가 익숙하시지 않다면 이전 포스팅을 참고하셔도 좋을 것 같습니다.

 

deep-eye.tistory.com/8?category=401244

 

[Matlab] 매트랩을 이용한 실시간 그래프 그리기

매트랩은 다양한 분야에서 분석하거 설계하는데 활용되고 있습니다. 직관적으로 데이터를 확인할 수 있어 데이터분석 입문으로 시작해도 좋다 생각합니다. 특히, 논문에 사용될 그래프를 도시

deep-eye.tistory.com

 

1. 매트랩 코드

 

% *********************************************
% GIF_IMAGE_GENERATER_2D
% Deep.I Inc.
% https://deep-eye.tistory.com
% deepi.contact.us@gmail.com
% *********************************************

filename = 'test.gif';  % 저장될 gif 파일 이름
figure(1);                      % figure 생성

% 프레임 수
for i = 1:30             
    
    cla
 
    % imshow() 
    
    drawnow 
    
    % figure에서의 frame을 가져욤
    frame = getframe(1); 
    % 가져온 frame을 image로 변화시킴
    img = frame2im(frame); 
    % index화된 이미지로 변화시킴
    [imind cm] = rgb2ind(img,256); 

    if i == 1
        %% n 회 반복 + 1/24초의 딜레이를 가지는 gif 생성. 무한 반복은 inf로 함
        imwrite(imind,cm,filename,'gif','Loopcount',1,'DelayTime',1/24);                
    else
        %% 똑같은 파일에 추가를 할 것이므로 append로 함
        imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',1/24); 
    end
    
end



  

 

 

핵심은 1. figure를 사전에 지정해주는 것과 imshow()나 plot() 함수 이후 figure 창을 이미지로 전 처리하는 과정입니다. figure를 그대로 저장하다 보니 코드가 진행 중일 때 창을 변형시키면 gif에도 반영되는 것 같습니다.   보통 저는 gif로 변환된 파일을 꿀캠 같은 gif 편집 툴을 활용해서 속도와 크기 등을 그림 1과 같이 2차적으로 편집하곤 합니다.

 

 

 

그림 1. 매트랩으로 생성된 gif 파일 (SOM 클러스터링)

 

 

 

 

# Jetson 시리즈 응용 임베디드 머신러닝 시스템 제작

# 머신러닝 프로젝트 제작, 상담 및 컨설팅  / 머신러닝 접목 졸업작품 컨설팅

# email : deepi.contact.us@gmail.com

# site : www.deep-i.net

반응형