2007年8月9日 星期四

中研院數位典藏展

今天下午去中研院看一個數位典藏的展覽,到下禮拜一之前展的是一些地圖、歷史地圖的東西。展出的單位是中研院 GIS 實驗室

裡面還有幾張地圖是國民政府來台之後,跟美國合作,偷偷由中華民國飛行員開美國的偵察機 (好像叫 U2?),飛到大陸那邊去照的數十(百?)萬張地圖。而且解析度還滿高的,不知道有沒有比 google earth 清楚。之前國家不允許這種東西展出,所以現在應該是剛出來見世人吧。

他們用了相當多 google earth 跟 map 來作 demo 平台,加上 multi-touch 的桌椅組 (MITSUBISHIDiamondTouch) 配合 google earth 做簡單的平移、旋轉、跟縮放。

還有 google map 上古今地圖對照,可以看你家幾十年前或一百年前是農田還是什麼的。我們有清楚看到台北市的市民大道以前是鐵路,還有基隆河截彎取直前後的樣子。

其中我覺得最酷的是一個 3D 瑩幕 (他們買來的)。他是一個特殊的瑩幕 "直接"接上顯示卡,畫面上的 3D (OpenGL, DirectX) 就直接變成立體 (當然視角很有限)。身為 CMLab graphics 組的,當然要知道原理啦。我猜他應該是去讀 z-buffer! z-buffer 是顯示卡上記錄瑩幕上每一個 pixel "深度 (離眼睛的距離)" 的記憶體,3D 的程式通常會用到。於是有了景深,這個瑩幕就可以對左右眼射去不一樣的光線 (坐在椅子上),看起來就有立體的感覺!

另一個也很酷的是 3D 印表機 (只展出影片跟成品 不過印表機本身不是他們做的)。他是在一塊板子上一層一層塗上粉,要留下的地方的粉上膠、不留的不上。一層一層塗完之後把粉倒掉,剩下的就是那些有上膠的部分。3D 的模型就這麼印出來了!

這一個下午真是不虛此行! 下禮拜一之前,如果大家有空,可以去看一看 :) 地點在中研院圖書館。

2007年8月4日 星期六

中信局設備選擇器 1.4

中信局設備選擇器更新「電腦及伺服器 (LP5-960018)(契約期間自96年7月31日起至96年12月31日止)」。

中信局併入台銀之後,網址出現一堆 random number。還好 WWW::Mechanize可以用 regular expression 抓一個網頁的網址。

2007年7月30日 星期一

立體地圖

中研院 GIS 小組用 Google Map API 做的立體地圖: http://gissrv5.sinica.edu.tw/GoogleApp/stereo.htm

他有兩種立體地圖,一種是「紅藍立體」(但其實是紅綠,就是小時候玩的那種)、另一種是「光柵立體」。前幾天無聊去買了紅綠玻璃紙來看,還滿有趣的,道路也有高低地伏 XD。不過光柵就不知道怎麼看,LCD 耶? 或是他有其他 output device?

其他的 demo: http://www.ascc.sinica.edu.tw/gis/googlemap/

screen bug #20277

我用 utf-8 跑 screen,上 bbs 用 :encoding big5 來轉碼。但是裝了新的 screen 中文全變成問號。

trace 一下發現是 configure.in 的問題,問題跟解法我 post 在 screen-devel 上: [screen-devel] bug #20277,希望有人理我 ...

後來發現 screen 的 #20277 這個 bug 跟我遇到的一樣。

2007年6月29日 星期五

爆料

今天早上在公司的 mailing list 上看到 Life at Google - The Microsoftie Perspective 這,後來看到「Google離職員工爆料 「免費」背後有代價」這篇的整理,覺得有種莫名奇怪的感覺。我看原文的時候,明明覺得他寫得還滿正面的,至少不是這篇全部都是批評。怎麼翻成中文會差這麼多 XD

2007年6月11日 星期一

Motion Vector Extraction

為了做 MULTIMEDIA ANALYSIS AND INDEXING 這門課的 project,我們這組需要從 MPEG video 裡面取出 motion vector(它在 MPEG video 裡的用途是用來做壓縮。一個物體在畫面裡面移動時,其實只需要描述它的位移,而不需整個重新 encode)。

不知道是不是因為大部分的人需要的都是 video 的 frame,而不是 motion vector(其實在解壓縮時只差一步),我 google 了好久都找不到工具可以用。後來發現 ffmpeg 的 ffplay 可以直接把 motion vector 邊撥邊畫出來,但是還是沒辦法 dump 出來。

$ ffplay -vismv 3 xxx.mpg

vismv 那個參數其實是三個 bit,第一個 bit 代表 P-Frame,第二個代表 B-Frame 的 forward motion vector,第三個 bit 則是 B-Frame 的 backward vector。

不過,這只能看。所以我參考 Using libavformat and libavcodec 跟 ffplay 的 source code 寫了一個程式。這個程式可以把 video 每個 frame (除了沒有 motion vector 的 I-Frame)的 motion vector 取出來。如果要改成取第幾個 frame、或是某個 range 之類的,也很好改。

g++ compile 時需要加上 -lavcodec -lavformat 兩個參數,當然也要先裝上 libavcodec 跟 libavformat 兩個 library。有裝 ffmpeg 就會有。

http://cmlab.csie.org/~victor/archive/motion_vector.cpp

2007年6月9日 星期六

Parallel::ForkManager

在 Perl 裡面如何把這種程式平行化? 假設每次 interation 是獨立的。

foreach $data (@all_data) {
eat_cpu($data);
}



超簡單



use Parallel::ForkManager; # !!
$pm = new Parallel::ForkManager($MAX_PROCESSES);


foreach $data (@all_data) {
$pid = $pm->start and next;
eat_cpu($data);
$pm->finish;
}