張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室

Slides:



Advertisements
Similar presentations
第一讲:导论 The Introduction  哲学与中国哲学  哲学与哲学史  中国哲学史的历史.
Advertisements

渡黑水溝 郁永河. 2 戎克船:是明末清初時期往返兩岸的主要交通工具 ∗ 1. 關於台灣的開發歷史,我們到底了解多少呢?不妨試著說出 就我們所知有關台灣開發史的故事、小說、電影、音樂與大 家分享。 ∗ 2. 什麼是黑水溝?黑水溝為什麼會成為大陸移民渡海來臺時最 大的威脅? ∗ 3. 有聽過「六死三留一回頭」、「有唐山公,無唐山嬤」這兩.
元大京華證券 組員名單 : A 楊之奇 A 廖本揚 A 宋俊承 A 陳冠廷 A 郭峻瑋 A 指導教授 : 許素華 副教授.
達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
第十八章 林肯大郡 第十八章 林肯大郡災變緊急搶救應變措施 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊造成二十八人罹難八十戶住宅倒塌的慘劇 此災變要喚起國人的重視 本章介紹搜救行動緊急應變措施。
职业指导服务系统 欢迎了解职业指导服务系统!
天津1班面试专项练习1 综合分析现象类 主讲:凌宇 时间:5月21日 19:00—22:00.
第五章 话语的语用意义(上) 主讲人:周明强.
45天备考指南 2013年下半年国考资格证笔试系列讲座(2) 华图教师事业部 石杨平.
日期: 六 福 村.
班級:醫管3B 組別:第二組 組員:王品媛、郭雅瑄、謝淑玲、蔡孟蔙
说课课件 感悟工业革命力量,闪耀科技创新光辉 ----《走向整体的世界》教学设计及反思 爱迪生 西门子 卡尔·本茨 诺贝尔 学军中学 颜先辉.
學 習 輔 導 的 實 施 組長: 李貞儀 組員: 吳巧玲 李佳蔚
主办:泰兴市质量强市领导小组办公室 承办:泰 兴 市 市 场 监 督 管 理 局.
2014政法干警备考平台 2014政法干警考试群⑨ 中公教育政法干警考试 ——微博 中公教育政法干警考试
逻 辑 学 主讲:李贤军.
提高自身素质做好 新时期班主任工作 北京市广渠门中学 高金英.
美国史 美利坚合众国创造了一个人类建国史的奇迹,在短短230年的时间从一个被英帝国奴役的殖民地到成为驾驭全世界的“超级大国”、“世界警察”,美国的探索为人类的发展提供了很宝贵的经验。
普通话模拟测试 与学习平台 使用指南.
团队介绍 (1)西湖区社区街道挂职社会实践基地 (2)武义、缙云、双浦乡镇挂职社会实践基地 (3)BOX企业实习社会实践基地
中等职业学校电子信息类教材(计算机技术专业)
资料分析 如何攻破最后瓶颈 主讲老师:姚 剑 4月6日20:00 YY频道:
網路小說劇情建構與伏線營造 Windows98.
台灣廢物物處理機構 邱騰煥 8 號.
爱的表达方式.
?????? ?????? ?????? 他是我生的 我愛怎樣就怎樣 這樣對嗎? 影片欣賞.
1012 MATLAB 教學 彭奕翔 2013/02/27.
第六章 社会主义初级阶段理论 第一节 社会主义初级阶段是我国最大的实际 第二节 社会主初级阶段的基本路线和基本纲领
关于整合检验检测认证机构实施意见的通知(国办发〔2014〕8号)
大肚宮廟巡禮 下一頁.
大嶼山 香港國際機場 及 寶蓮寺.
我的心得報告 經過篩選,挑中我們 十多位學生由學校推薦進入公司,開始他們的學習之旅 學習的過程中有想像不到的意外驚喜
09学前教育班 魏文珍 自我介绍.
推进德育创新 做好新时期班主任工作 北京市广渠门中学 高金英.
《生活与哲学》第一轮复习 第七课唯物辩证法的联系观.
我国的人民民主专政.
XI. Hilbert Huang Transform (HHT)
全球工程師共同的語言 MathWorks 台灣總代理鈦思科技 指導老師 : 郭艷光教授 報告者 : 吳育驊
MATLAB 程式設計進階篇 一般數學函數的處理與分析
MATLAB 程式設計進階篇 一般數學函數的處理與分析
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
MATLAB 程式設計入門篇 握把式圖形與 GUI 設計
Introduction to MATLAB
一、選擇題 ( )1、下列敘述何者錯誤? (A)由彈弓射出的石子具有能量 (B)一物體具有作功的本領,則此物具有能 量 (C)被壓縮的彈簧具有能量,被拉長的彈簧 則不具有能量 (D)將地面的重物,吊到高處則此物具有能 量。 C.
数学建模与数学实验 MATLAB作图.
范洪源 臺灣師範大學數學系 分支宣告與程式設計 范洪源 臺灣師範大學數學系.
第1章 MATLAB操作基础 1.1 绪论 1.2 MATLAB概述 1.3 MATLAB的运行环境与安装 1.4 MATLAB集成环境 1.5 MATLAB帮助系统.
MATLAB 程式設計入門篇 初探MATLAB
給你講一個故事 ﹕ 獻給所有未婚,將要結婚,和已婚的好朋友!!
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
MATLAB 程式設計入門篇 動畫製作.
第九单元 第1课 实验 Matlab动画 1.洛仑兹非线性奇异方程所描述的无序运动 2.作y=sin(x)的程序动画(1)
MATLAB 程式設計入門篇 初探MATLAB
MATLAB 程式設計入門篇 二維平面繪圖 改自張智星講義
MATLAB 程式設計入門篇 三維立體繪圖 (part1)
三維繪圖 Helix t = 0:pi/50:10*pi; % linspace(0,10*pi,500); figure plot3(sin(t),cos(t),t) grid on axis square Remark: zlabel, view, surf.
北投溫泉博物館 建築特色 ★小組成員:高103林孟璇、林念儀、施妤柔★.
或閘的特性與符號 所有的輸入均為0,輸出才為0 ▲ 圖 3-1 或閘的邏輯概念 ▲ 圖 3-2 或閘的電路符號.
第三章 世界文明的蛻變與互動 第一節 歐洲社會的蛻變 第二節 世界文明的交匯 第三節 亞洲大帝國的發展 1.
山清水秀的林芝 yy 曾元一
第二节 MATLAB 图形处理 内容: §1 二维图形显示 §2 图形可视编辑工具 §3 三维图形显示 §4 视角变换与三视图
经济学基础 主讲人:方春龙 安徽财贸职业学院
多姿多彩的世界.
原版:清大資工系 張智星 新增版:方煒 台大生機系
正弦函数余弦函数的性质 (二) 执教:湖南华容一中 黄奇卫老师.
體驗‧探索‧創造─ 〈晉公子重耳之亡〉.
Presentation transcript:

張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室 MATLAB 程式設計入門篇 動畫製作 張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室

6-1 MATLAB 動畫簡介 MATLAB 產生動畫的方式有兩種: 電影方式: 物件方式: 以影像的方式預存多個畫面,再將這些畫面快速的呈現在螢幕上,就可以得到動畫的效果。此種方式類似於電影的原理,可以產生很繽紛亮麗的動畫,但是其缺點為每個畫面都必需事先備妥,無法進行及時成像(Real-time Rendering),而且每個畫面,以至於整套動畫,都必須佔用相當大的記憶體空間。 物件方式: 在 MATLAB 的「握把式圖形」(Handle Graphics,詳見本書第七章)概念下,所有的曲線或曲面均可被視為一個物件,MATLAB 可以很快的抹去舊曲線,並產生相似但不同的新曲線,此時就可以看到曲線隨時間而變化的效果。使用物件方式(即握把式圖形)所產生的動畫,可以呈現即時的變化,也不需要太高的記憶體需求,但其缺點是較難產生太複雜的動畫。

6-2 以電影方式產生動畫 以電影方式來產生動畫,可由下列兩個步驟來達成: 使用 getframe 指令來抓取圖形做為電影的畫面,每個畫面都是以一個行向量的方式,置放於整個代表電影的矩陣。 使用 movie 指令來播放電影,並可指定播放的重複次數及每秒播放的畫面數目。

電影動畫之範例一 在下例中,我們將以不同的角度來顯示 peaks 函數,並將其結果以電影的方式來呈現動畫。 範例6-1: movie01.m clear M % 清除電影資料矩陣 M n = 50; % 抓取 50 個畫面 figure('Renderer','zbuffer'); % Only used in MS Windows peaks; fprintf('抓取畫面中...\n'); for i = 1:n view([-37.5+i*360/n, 30]); % 改變觀測角度 M(i) = getframe; % 抓取畫面,並存入電影資料矩陣 M end fprintf('播放電影中...\n'); movie(M, 3); % 播放電影三次

電影動畫之範例一 最後一個 frame 的畫面

電影動畫之範例二 將 peaks 函數畫在圓盤上,然後再變換此函數的高度,以動畫呈現 範例6-2: movie02.m clear M % 清除電影資料矩陣 M r=linspace(0, 4, 30); % 圓盤的半徑 t=linspace(0, 2*pi, 50); % 圓盤的極座標角度 [rr, tt]=meshgrid(r, t); xx=rr.*cos(tt); % 產生圓盤上的 x 座標 yy=rr.*sin(tt); % 產生圓盤上的 y 座標 zz=peaks(xx,yy); % 產生 peaks 在極座標的資料 n = 30; % 抓取 30 個畫面 scale = cos(linspace(0, 2*pi, n)); figure('Renderer','zbuffer'); % Only used in MS Windows fprintf('抓取畫面中...\n'); for i = 1:n surf(xx, yy, zz*scale(i)); % 畫圖 axis([-inf inf -inf inf -8.5 8.5]); % 固定圖軸的範圍 box on M(i) = getframe; % 抓取畫面,並存入電影資料矩陣 M end fprintf('播放電影中...\n'); movie(M, 5); % 播放電影 5 次

電影動畫之範例二 最後一個 frame 的畫面

電影動畫之範例三 改變影像的色盤矩陣,讓影像出現「從正片變到負片」的效果 範例6-3: movie03.m clear M % 清除電影資料矩陣 M load clown.mat image(X); colormap(map); % 畫出小丑臉 n = 30; % 抓取 30 個畫面 fprintf('抓取畫面中...\n'); for i = 1:n colormap(((i-1)*(1-map)+(n-i)*map)/n); % 改變色盤矩陣 M(i) = getframe; % 抓取畫面,並存入電影資料矩陣 M end fprintf('播放電影中...\n'); movie(M, -5); % 播放電影 5 次(含正向與逆向播放)

電影動畫之範例三 在上述範例中,正片(如下張投影片圖左)的色盤矩陣是 map,而 1-map 則是負片(如下張投影片圖右)的色盤矩陣,因此我們在抓影片時,讓色盤矩陣進行漸進式的變化,因此呈現的電影就有「從正片變到負片」的效果。 另外,movie(M, -5) 代表電影將播放 5 次,但由於第二個參數是負數,所以每次播放會包含一次「正向播放」及一次「逆向播放」。

電影動畫之範例三 正片 色盤矩陣是 map 負片 色盤矩陣是 1-map

6-3 以物件方式產生動畫 以電影方式產生動畫可以說是「暴力法」,因為此方法佔掉了許多記憶體空間。另一個技巧性較高的方法則是以物件方式產生動畫,此種方法不需要大量的記憶體,而且可以產生「即時」(Real-time)或「互動式」(Interactive)的動畫。 MATLAB 的所有圖形元件(曲線、曲面、圖軸等)都是物件,您可以控制這些物件的各種性質,此種特性稱為「握把式圖形」(Handle Graphics),可詳見第七章。握把式圖形包含的層面很廣,但牽涉到動畫部份的基本概念並不複雜,以下我們以曲線的動畫來說明。

曲線的動畫 我們可以快速地改變圖形物件的性質(如顏色、座標等),就可以達到動畫的效果 每一條曲線都有下列三種性質: xdata:此為一向量,代表曲線的 x 座標值 ydata:此為一向量,代表曲線的 y 座標值 EraseMode:此為一字串,代表曲線被抹除的方式,亦即當 xdata 或 ydata 被改變時,對於舊曲線的處理方式。

曲線的 EraseMode EraseMode 對於動畫的呈現相當重要,此字串可是下列幾種選擇: normal:重畫整個畫面。 xor:將舊曲線的點以 xor 的方式還原。 background:將舊曲線的點改成背景顏色。 none:保留舊曲線的點,不做任何處理。 在上述四種 EraseMode 中,耗費時間的次序是 normal > xor > background > none xor 和 background 很接近,但是 background 會抹去其他舊曲線所掃過的其他物件(如圖軸、格線、另一條曲線等),所以較少用到,所以一般在產生動畫時,最常用到的 EraseMode 就是 xor。

曲線的動畫 有了這些概念後,產生曲線的動畫就很容易了!其主要步驟有兩點: 產生一條曲線,其 EraseMode 為下列四種 'normal'  重畫所有物件,最慢 'xor'  以 xor 補色 'background' 以背景補色 'none'  不補色,最快 在 for-loop 之中,改變此曲線的 xdata 或 ydata(或兩者)。

物件動畫之範例一 我們產生一條衰減的正弦曲線 讓 k 隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。 範例6-1: movie04.m x = 0:0.1:8*pi; h = plot(x, sin(x).*exp(-x/5), 'EraseMode', 'xor'); axis([-inf inf -1 1]); % 設定圖軸的範圍 grid on % 畫出格線 for i = 1:5000 y = sin(x-i/50).*exp(-x/5); set(h, 'ydata', y); % 設定新的 y 座標 drawnow % 立即作圖 end

物件動畫之範例一 最後一個 frame 的畫面

物件動畫之範例一 在上例中,我們使用 set 指令,總共改變曲線的 y 座標 5000 次,並以 xor 的方式抹掉舊曲線。 drawnow 的作用是使 MATLAB 立刻處理 set 指令,若無 drawnow,MATLAB 會累積 set 指令,直到 for-loop 結束時再一併處理圖形的變化,這時就不會看到動畫的效果。 如果您將上例的 EraseMode 改成 background,則會發現曲線會“抹掉”圖形中的格線及代表圖軸的直線。 如果您將上例的 EraseMode 改成 none,則舊的曲線會被保留下來,產生不同的效果。

有關xor的進一步說明 當eraseMode=‘xor’時,事實上是進行xnor 假設背景物件顏色值是x,動畫物件的顏色值是y 當動畫物件蓋過背景物件時,顏色變為z=(x⊕y)’ 當動畫物件離開背景物件時,將顏色改回 (z⊕y)’ = ((x⊕y)’⊕y)’ = x. 範例請見 movie041.m x=red=100 y=blue=001 z=(x⊕y)’ = (101)’=010=green (z⊕y)’ = 100 = red = x

How to Prove… For any given logical variables x and y, we have x⊕y⊕y=x

當電腦夠快時 當你的電腦夠快時,產生動畫變得更簡單! movie042.m x = 0:0.1:8*pi; for i = 1:5000 plot(x, sin(x-i/50).*exp(-x/5)); axis([-inf inf -1 1]); grid on drawnow end

動畫範例: MATLAB MATLAB 有很多物件動畫之範例: lorenz:以3D動畫呈現的 Lorenz 混沌方程式(Chaotic Equation),好像慧星在運行。 truss:一座橋樑在地震時的震動方式,共有 12 種喔! travel:顯示如何以雜亂搜尋(Random Search)的方式來解 Traveling Salesperson Problem. fitdemo:顯示如何以 Downhill Simplex Search 來解決非線性曲線擬合(Nonlinear Curve Fitting)的問題。

動畫範例: Simulink 若您有安裝 Simulink,可試試下列動態系統模擬加上動畫呈現: onecart:傳統的彈簧加上砝碼的動態系統。 dblcart1:一條彈簧加上兩個砝碼的動態系統。 simppend:簡單的單擺系統。 dblpend1:兩截的擺動系統。 dblpend2:更複雜的擺動系統。 penddemo:倒單擺系統。

動畫範例: 模糊邏輯工具箱 如果您有安裝 Fuzzy Logic Toolbox,可以試試由張老師開發的各項模擬及動畫展示: fcmdemo: Fuzzy C-means Clustering。 juggler:用板子接皮球。 invkine:兩截機器手臂的 Inverse Kinematics。 slcp1:倒單擺,桿子長度隨時間而變,您可以控制所欲到達的位置。 slcpp1:雙倒單擺,其中一個桿子的長度隨時間而變,您可以控制所欲到達的位置。 slbb:蹺蹺板加上滾球系統,您可以控制球的最後位置。 sltbu:倒車入庫系統