顯示具有 MCU 標籤的文章。 顯示所有文章
顯示具有 MCU 標籤的文章。 顯示所有文章

星期五, 9月 12, 2008

[日誌]誤人子弟

因為老師家裡有事的關係
今天下午的數位媒體概論的課就由我去誤人子弟啦

雖然老師有交代這幾堂課要做什麼事情
但是這是我第一次在這麼多人的面前講話
真的有點害怕...

我在不認識的人面前都超低調的耶
管它的 反正老師每節課要做什麼事情都規劃好了
我只要照本宣科做就好了
而且黃老師應該會過來幫忙吧
雖然話是這樣說
真的在眾目睽睽之下
越過學弟妹們
走到老師的位子坐下來的時候也是超緊張

還好有幾個之前家聚時有看過的熟面孔
才讓我比較安心
不知道是不是因為角色不同的關係
以前小時候(也不過就大學時代)
同樣的教室
在台下也是一直講話
都不會覺得自己那群很吵

今天在台上的時候
好怕對面的老師覺得
這個老師都不會控制場面 讓學生喧嘩
等等丟到我家阿坤的臉就糟了
所以只要我覺得台下的聲音太大
一直叫大家要注意音量

第一節課是叫大家一個一個來前面寄邀請函給自己
電腦不能切廣播
想說讓他們先思考&練習一下程式好了
與其讓他們漫無目的的自己try
 我自己也當過大學生阿
 怎麼可能不知道放牛吃草
 最後一定會變成在網路上逛東逛西
 或是開始玩樂
與其這樣 不如給個題目
讓她們有個目標 也比較有壓力去寫程式
 程式這種能力 都嘛是逼出來的
 只要題目不要太難 寫出來的話 真的會對自己比較有信心一點

隨便問了一個學弟 確定n階對他們而言應該不會太難
應該是一半以上的同學 可以KO才對
跟他們說等等我們會介紹BCB這個程式
在黑板上把 定義 input output 寫出來
反正他們之前上課是用VC or Dev C
請他們先思考一下 要怎麼做
等等我會講解一次

有的學弟妹真的是比較有fu
會自己去開BCB try
或是用VC先寫


經過學弟妹的提醒
我才知道要現場示範給他們看

可能我真的太習慣bcb的指令了
所以會覺得很簡單 講個概念就好了
但是並不是這樣子的
還是有些人需要每一行都要很仔細的講解
這對我而言其實很不可思議
但是後來想想 以前在上XML的時候
也是有遇到看老師講的很簡單 自己卻不知如何下手的情況
真的是忘記以前在當學生時會希望老師怎麼做

因為有些東西真的是要遇到才會知道
我又不希望他們完全照著我的腳步走
因為不想直接把 N! 的指令給他們看
還是希望他們可以思考一下
所以我舉了一個大同小異的累加程式做示範
又跟他們說不一定要用Label 或 Edit 可以多試試看不同的元件
所以就會有用Memo->Caption這樣的情況
所以又跟他們介紹了property的概念

剛剛跑去看大家的心得
其實有點難過
雖然大部分的會寫說在哪邊有收獲
可是有些還是覺得我今天教的不好 感覺在浪費他們的時間
嚴格說起來
並不是難過被抱怨這件事
而是我覺得 一個好的開始 對人是很重要的
在一開始的時候就對BCB有排斥感
我想之後也不會喜歡用BCB去寫程式
而且從喜歡到不喜歡很容易
從不喜歡到喜歡 這個距離 就真的很遠
很抱歉讓這些學弟妹對BCB產生負面的感覺
唉唉唉 果然還是功力不夠的嫩咖

星期四, 5月 22, 2008

[研究]a little paper

今天的行程真是滿滿滿
上禮拜五去聽樂高機器人的教師進修
黃世育老師帶院長的三個男生 黃博峻老師帶我們三個女生
要比賽做個可以提升位能的摩天輪

因為禮拜二要咪聽的關係
約好今天下午一點半要跟資傳的一個老師討論
早上九點半就開始跟阿梅和rosa在實驗室做樂高的東西
好不容易弄到一個段落 也兩點多了
想說慰勞自己一下 就跑去貴族世家吃飯
一走出AA棟 就看到我家阿坤的車子
今天是有啥事發生
老師有來學校耶 他平常禮拜三都不會來的阿
不管 我起床到現在都沒吃東西耶 肚子太餓了
先去吃飯再說

因為有跟Dr.Bell約好四點四十五分咪聽的關係
四點半就跑回來了


哈哈
還好我昨天想說今天那麼忙 咪聽之前一定沒時間看Dr.Bell昨天給的東西
所以昨天晚上就先看了

跑去S601裡面有人在討論
老師今天有來
Dr.Bell該不會是在他辦公室談事情吧
跑去敲老闆的門 結果門一打開 裡面都是老師 小黃 阿坤 蕭桂芳 Bell
人手一台筆電 一開門全部都看我 感覺我打擾到他們重要的事情 真是尷尬

結果黃老師跟我說他們在忙 等等在call我
去等電梯的時候黃老師出來 跟我說他們今天很忙應該沒辦法咪聽
結果Dr.Bell剛好也出來 跟我說叫我等他五分鐘
因為S601有人在討論東西 所以就到黃老師的辦公室咪聽

Oh my god!! 我超感動的
這是第一次遇到 老師跟人家說他這段時間要跟我談事情
而且真的出來 不是說下次再說
感覺昨天那段看paper和想今天討論內容的時間沒有白費
外國人果然比較重視約定...

Dr.Bell那個little paper 是真的要我寫耶
雖然我昨天就在苦惱attack reseed是沒有用的improvement這個idea好像不是很夠
想跟他說我覺得outguess產生出來的圖片
後面block 的 histogram會有問題
感覺這個如果是對的話 好像還比較像個paper會討論的題目
根據他的說法
a paper = "A good idea!! " + some background + what is the next?

結果我才跟他說我覺得我沒有good idea
他整個架構都跟我說
原本很煩惱寫不出來的
可是他這樣一講
好像也不是那麼難
反正我這是baby paper 只是pratice and try my first paper
每個人都有第一次
even 是他的第一次 也是一直揉掉 才有的
他超酷的
"你要用英文還中文寫你的first publish"
"英文好了 這樣我才可以幫你"

外國好像很多辦給學生的conference
他說我可以投到student conference or small conference
接下來是paper 的架構啦 雖然我有請他寫下來
但是他的字很外國人 還是趁我還沒忘記趕快寫下來

This paper have four part.
  1. The first part is the background
    i.e. what is steganography ?
    what techniques in this area.
    show the reader "I know steganography!!"
  2. Related work
    In this part we discuss some techniques have unusual features is not need.
    (Introduced outguess ,summarized in this session)
    because the probability of minimal change is very low. In that paper the figure shows with wrong way.
  3. discuss why should we avoid this technique... like:random data is not easy compression.
  4. conclusion, his idea is useful.But we don't need the XXX 後面的字我看不懂
    • it talastive
    • it doesn't improvement
    • even if it did the improvement is tiny.
    • the changes is insignificant but add complexity
    Lesson: try to keep steganography technique simple and quickly.
題外話
其實有點遺憾
我一直以為我的第一篇paper 會是在阿坤的要求下寫的
沒想到 先要求我的人 是Dr.Bell 雖然他也是我老闆之一
不過和我原先所想的不是同一個人阿...

星期六, 5月 10, 2008

[日誌]工具的選擇

昨天早上老師問我兩件事情
其中一件事情 是Dr.Bell對我的幫助是什麼

另外一件事情是關於我的JPEG Decoder難產的問題
既然我要做分析 程式寫不出來 那要如何取得數據去分析


老師說 他有去問電子系的老師
他們也有派人寫JPEG Decoder
他們是去改別人的source code
就算如此 也是花了一年的時間
我現在研一下了 程式寫不出來

如果我要去改別人的程式
以資工背景的我而言 也有自己去寫過
是不是也要花一年的時間 才能改好

還是我要繼續堅持 用自己的方法寫
但是我要卡多久 也不知道

或著是說 matlab 有沒有辦法快速的讓我做到我想做的事情
老師叫我要好好的想這些問題

因為之前去上院長的影像處理課的關係
我跟matlab有小小的培養了一下感情

程式難產之後
我現在的例子都是用matlab跑出來的
但是 我都是讀了一個JPEG檔
I = imread('Ncover imageG_80.jpg');

我覺得應該是那個指令讀進來就會存成spatial domain的array了

所以 我只好再下指令
fun = @dct2;
J = blkproc(I,[8 8],fun);

不過這樣還是不夠的
我再強迫她轉成整數
intJ = int16(J);

這就是我模擬出來的東東

可是 平常做投影片給人看的data 可以這樣做
自己做研究的data可以這樣用嗎!?

如果我要去分析Feature
那應該是用steganography軟體產生出來的圖片
直接取得Huffmandecoding出來的coefficients
再去做實驗阿!!

不知道matlab這種直接讀出來是spatial domain我再轉回來的誤差
會不會影響到實驗

晚上跟有Matlab大神之稱的學弟討論了一下
降子的問題
學弟說如果要做到這樣子的話
可能就要自己寫
他給了我一個網站
http://www.mathworks.com/matlabcentral/fileexchange/loadFileList.do
說可以去看看有沒有人寫過
降我就可以去下載.m檔


昨天下載了幾個
打算趁這個週末研究一下
評估一下我該怎麼做比較好
阿哈哈哈

星期五, 4月 18, 2008

[紀錄]指導教授確認書

--其實這篇是上禮拜寫的一點點 加上這禮拜繼續寫的成果--
煩耶

我家阿坤到底在想什麼

明明禮拜二問他可不可以找Dr.Bell共同指導的時候
老師還說:「可以啦 樂意之致好不好」

當時的表情沒有不開心阿
還跟我討論了一下要怎麼問比較好

我禮拜五10點跑去問Dr.Bell
他同意耶
我超開心的啦
本來還在擔心他會拒絕的

回到S601
想跟阿坤分享我的高興的說
結果Boss又問我一堆問題
讓我整個不開心了起來
覺得自己好像做錯事一樣

也不過就Dr.Bell禮拜三跟老師他們吃飯的時候
隨口問了阿坤說
"你現在研究做的怎麼樣 會不會累??"

雖然老師沒有明講
但是我覺得那個意思就是我是不是先去問過Dr.Bell確認之後才問他
不然怎麼會我禮拜二問Dr.Bell
禮拜三Dr.Bell就問他研究會不會累
好像Dr.Bell在暗示什麼
我除了請他幫忙改英文之外
到底還有什麼原因想找他共同指導

搞什麼鬼阿
一切都是巧合好不好

我只是想逼自己用英文寫而已
而且我不想只是被改阿
我是希望可以在他的指導下用英文寫論文
所以才問Boss的耶
要不然其他的東西我直接問老師就好了阿
我就不相信他會了解的比Boss多
禮拜二問你完之後
我也不是馬上跟他聯絡
到禮拜五才跟他講到co-advisor的事情
阿他是禮拜三中午問你的耶

禮拜二Boss跟我說先寫信比較好
我從來沒寫過MAIL給外國人
文法那麼爛 我根本不想動筆
拖拖拖的 等我跟Dr.Bell聯絡 約時間講事情
都是禮拜三半夜禮拜四凌晨的事了

不知道是不是因為之前院長那件事
讓老師一朝被蛇咬 十年怕草繩

我承認那時候我是處理的不好
沒有先跟老師講 就先跑去找院長
讓院長去找老師講
可是Boss那時候都不來學校 也都不太理我
別的老師跟我說有可能是覺得他不想收我了 等我開口求去而已
我覺得這個可能性很大阿 我那麼常惹他生氣
而且他常常說我是別人的學生...

本來也是有打算先跟老師做個了斷
上學期期末有問老師會不會來學校
想跟老師談清楚 到底還有沒有把我當他學生
他自己跟我說禮拜五會來的 結果那個禮拜五沒來
skype問Boss說開學前有沒有打算咪聽 還跟我說沒有

--以下是抱怨的話--
 靠夭咧

 如果還有把我當學生
 會在這麼久沒咪聽的情況下
 還跟我說開學不打算咪聽

 如果還有把我當自己學生
 會這樣浪費我三個月的黃金時光嗎
 你不知道女人最珍貴的時光是20-25歲
 短短的五年裡面 有三個月就這樣浪費掉了耶
 (雖然是我自己願意這樣浪費的)

 如果有把我當自己學生
 會一天到晚說我是別人的學生嗎

 如果有把我當自己學生
 會在我面前跟學妹咪聽
 接著馬上跟我說沒時間咪聽嗎

 跟學妹的咪聽就會出現
 跟我咪聽就會人間蒸發嗎

 只會在說有問題都不問 可是每次問Boss問題都感覺我在給Boss添麻煩
 這樣我就會越不敢問 我越不敢問 Boss越容易生氣 Boss越生氣 我越不敢跟Boss講話
 一直這樣惡性循環 之後又發生Boss生氣的事情
 
 上學期Boss生氣之後的禮拜二禮拜五 我都是去S601看別人咪聽耶 是去看心酸的喔
 我不像阿梅 一路都是修多媒體的課程上來的
 我只是修很多課而已 可是都很雜阿 根本就不夠用
 期末Boss才突然來說我這學期研究都沒有進度
 連唯一看完的paper都是為了論文研討課的作業才看的 不能算自己的研究
 可是卡關就是卡關阿 我又還沒修練到可以自我打破關卡的境界
 講的好像都是我的錯一樣 我卻一點都無法反駁
 
我承認我後來是有轉移重心到上課那邊去
沒辦法阿 Boss都人間蒸發了 一直卡關 也不知道怎麼解決
上課每個禮拜都會有進度阿 有問題都可以提出來討論
這樣很好 很有充實的感覺

結果期末Boss說我怎麼都是院長那邊的東西
我剛開始也是想說去增強影像處理的知識阿
我那麼弱 啥都不懂 怎麼做研究阿
上課上一上 方向就偏掉了咩

去看Master版 他們都說得罪了老闆很麻煩
還沒簽指導教授的 搞不好老闆不想收你了
簽了指導教授的 多的是最後休學的
我覺得我百分之百得罪Boss了啦

本來想說Boss不收我的話 我是不是只能做E-Learning了
除了導師 一定沒有其他老師願意收我的啦 可是我超討厭E-Learning的
難道我要等到最後不得不做E-Learning嗎
還是Boss簽了之後就這樣被掛到最後休學
可是資工哪個老師不知道我是誰的學生 我又沒把握其他老師會收我
時間不知不覺過去 都要開學了 卻還沒下文

反正之前上院長的課我超認真
他也是做影像處理 而且他講的話我聽的懂
劉明洋也跟我說院長挺關心我的 不知道他願不願意收我

開學前鼓起勇氣 在他們會來咪聽的時候
直接跑去問院長 院長果然是個很八面玲瓏的人
同個實驗室 怎麼可能不知道我是誰的學生呢
最後幾乎都快要用求的拜託他 才得到個模凝兩可的答案

這學期老師是有比較積極的來咪聽
不知道是不是有寫mail的原因
可是我都去求院長了 他會不會覺得我半途而廢
也才有後來的一連串事件

說也奇怪
那次被黃老師拖去第二次談話之後
老師居然還願意帶我
如果我是老師 學生這樣對我
你就不要讓我遇見妳 大家走著瞧
老師果然是老師 歷練比我豐富很多
也比我寬宏大量

只是雖然原諒我
可是偶爾還是想發洩一下
再跟他說想找Dr.Bell共同指導的事情之後
「你想換老師我都沒意見了 只是共同指導我怎麼會有話說呢...」
這句話 已經不是第一次對我說了
其實聽了挺難過的 畢竟自己以前是有做這件事
很心虛阿 可是老師說的又是事實 我又不能否認
也沒啥權力叫老師不要再講了
一直提醒我我曾經做過什麼事
雖然說要敢作敢當 可是聽了真的好難過喔...

星期日, 3月 02, 2008

[心情]是與非?

禮拜五發生了一件事
對我目前看似步入軌道的生活而言
投入了一個變數
不知道結果是好還是壞

雖然這件事情的啟動按鈕
是我去按下的

這學期老師對我的態度跟上學期相比之下
真的是差太多了
並不是不好 而是太好了
像正常的老師與學生那樣的穩定咪聽
讓我覺得好像在作夢一樣
一切都好虛幻
如果這真的是夢
那什麼時候會醒

也許有些人會覺得我犯賤吧
明明現在這樣很好
我偏偏卻要故意破壞目前的穩定狀態

箇中道理
不是我的人
永遠也沒辦法了解

現在這樣看似很好
可是跟老師之間的心結沒有解開的話
傷口表面結痂
底下卻化膿
有一天爛到表面之後
一定就要截肢了

與其等到那時候
不如就趁放假期後做好心理準備的現在
看是要把心結解開,合好如初
還是就此說清楚,以後...

而且 我那麼喜歡錯到底
話都說出口了
事情也發生了
不想帶著遺憾

真希望boss禮拜二會願意表態
不管是真的願意解開心結
或是你他媽的給我滾
都好 至少我知道他真正的想法
不要再這麼高深莫測
我會一直猜猜猜的
很累耶...

星期二, 2月 19, 2008

[schedule]這學期的規劃

過完一個年
老師盡釋前嫌
開始緊迫盯人了
內心還真的是五味雜陳
跟上學期的態度相比~整個好太多
感覺好怪...毛毛的...
覺得好像在作夢一樣
好害怕夢醒

他說上學期讓我自由發展
都不知道在幹麻
期末問說這學期坐了什麼
每次我做一做卡關
就跑去作別人的東西
結果期末人家都有東西可以講 就我沒有
所以這學期他要盯緊一點
以下是我這學期要做的事情

Paper分成精讀跟略讀
精讀的paper他給我
他以後每個禮拜都會問我看到哪裡
精讀paper兩個禮拜一篇
多給我一個禮拜緩衝
最晚三個禮拜看完 做投影片報告

略讀的我自己找
禮拜三或禮拜四跟他說我要看哪一篇
讓他心裡有個底 下禮拜二跟我討論
之後回去寫摘要 再給他看

按照這樣子下來
我學期末也累積了十幾篇
就不會沒東西可以講了
(他果然很很介意黃老師的學生有老師那邊的成果 就他的學生沒有...)

程式還是要繼續寫
沒寫完是不可能畢業的
他覺得我明明就快寫完了
不知道再拖什麼


我有跟學弟和政瑋講
他們都覺得真是充實的規劃
我這學期要很拼

我覺得我家阿坤真的是很厲害
每次聽他講的時候
都覺得他要我做的事情都覺得很簡單
排的時間很充分
事後開始執行的時候
才發現根本就沒那麼容易
去年大學時講的一天給他一小時就好
剛開始也覺得超合理
後來發現
一天一小時其實很多耶
一週就七小時
我一個禮拜連五個小時都很勉強了
哪來的七小時阿
可是當時都答應了
只好硬ㄍㄧㄥ

這次也是
剛開始還覺得沒什麼
老師又不希望我太多課
我這學期禮拜三禮拜四都沒課耶
會不會太輕鬆阿
本來還想說要不要去聽個行動視訊串流之類的課

後來實際找paper的時候
時間真是一分一秒的偷偷溜走
好不容易找到
老師又說這跟我沒有太多關係 退件
又得重找
等我確定哪篇ok的時候
都禮拜五了
光找paper就花超多時間的
現在看起來 還是把禮拜三禮拜四的時間用在研究上比較實際
不然我恐怕會無法跟上那個schedule的tempo
gogogo

星期三, 11月 28, 2007

[研究日誌]老闆轉性

這真的是見鬼了
我家阿坤已經連續好一陣子
都是禮拜二早上晃進來一下
問我有沒有問題
接著就不見人影
跑回辦公室去喝咖啡聊天了

下午小黃的課
反正我也不是重點
只不過是選課的人頭之一
之前還實驗我可以消失多久老師不會發現
都測試到一節課半
想說超過兩節課的話
就可以開始計畫
要利用這段時間做什麼事情了

因為我那個interval和MCU 與data unit的關係
還是不太清楚
所以我程式還是會出錯
昨天做了投影片
有點擔心這樣的進度老闆不會滿意
還偷偷的祈禱
Dr.Bell不要太早走
根據家醜不外揚的法則
只要Dr.Bell還在
老闆應該不會當眾罵出來

誰知道他今天來喝個咖啡之後
就說他要回去改期中考考卷了

事情再壞一定會更糟是吧
真是酷斃了
本來還拼命練習用英文報告投影片
這下Dr.Bell不在
用英文對著一堆中國人講話很奇怪耶
本來想說小黃還沒回來
可以等等在開始
可是阿坤說反正我是講JPEG 小黃不在沒關係
所以我就硬著頭皮上台報告了

BOSS今天心情好像還不錯
有耐著性子聽我講話
我有跟他說我覺得問題是出在哪邊
可是我現在還沒辦法確定
老師還拿我那本規格書去翻
"可欣你最近都仔細看規格書齁"

屙...
薑果然是老的辣
真是一針見血
可是他還是有翻耶
如果是以前他早就生氣跑掉叫我再多看幾遍了

之後討論了一下
老闆有提到想用Group基金出總審專刊給高中生看的事情
然後發票要開什麼時候之類的
我怕忘記
就馬上跑下去跟書雯說
結果在系辦聊了二十分鐘

回來的時候
阿梅跟我說剛剛下去真久
老闆有怨念
"可欣咧 怎麼還沒回來 去哪裡了"
(阿我不是跟你說我去系辦嗎...囧)
"一天到晚跑去系辦鬼混 都不知道誰是他老闆了齁!!"
這句怨念就深了

之後就開始改程式
改好的時候有遇到一點問題
我解出來的值啊
跟我用程式壓縮的值
有些會不一樣耶
不是全不都不一樣
也不是差很多
都差一點點而已(1或2吧)

剛好老闆晃進來
就把他拉過來看了
真難得他願意坐過來我旁邊看耶
之前還說他不想在小螢幕看程式
硬是要投影出來的

不過他有說
這種情況是可能的
因為我不知道photoshop在quantized的時候
是怎麼決定進位
比較好的作法是
將原本的bmp檔
用PhotoImapct再存一次
看是不是也會差一點

接下來的動作
就是requantized ,ReDCT ,color transform and draw the Image了
然後
再多試幾個graylevel的圖

關於color transform
我有問老師那我CbCr的值要怎麼給
你怎麼那麼死腦筋
啊就直接把Y值填入就好了啊
這不是灰階嗎 等這個成功
以後要做三個component的時候
再考慮那個問題吧!!

阿哈哈哈
我還是要調整心態啊
不要一直想讓程式寫成一次for all case的
關於MCU DRI RSTm 那邊
我可能要再多看幾個例子
才會懂吧XDD

星期二, 11月 27, 2007

[日誌]久違的網誌

最近很忙啊
寫程式 交報告 修電腦
聽學長proposal
都沒時間好好寫網誌
連篇研究日誌都沒寫
今天去餵鄭小白的時候
發現了這串文字
"2007/11/24 ■RSS取得中に時間切れになりました。ブログサーバーがメンテナンス中か、RSSのURLが間違っている可能性があります。"

噗哈哈
太久沒寫
她以為我網址設錯嗎!!

其實我看不懂日文
不過我上次很久沒寫也有這樣的東西出現
"2007/11/02 ■RSS取得中に時間切れになりました。ブログサーバーがメンテナンス中か、RSSのURLが間違っている可能性があります。"

根據經驗法則
就套進去一樣的意思亂翻了XD

剛剛做完明天要跟Dr.Bell咪聽的ppt
這時候室友就很好用了
尤其是外國人室友
可以很順利的聽我練習用英文報告XDD
在我不知道要講什麼字或發音錯誤的時候跟我講

真開心
我現在的問題
應該是在那個DRI和MCU之間的關係沒搞懂
所以程式不知道怎麼下手
不過就算我今天不睡應該也寫不完
所以就上來寫個網誌
早點睡比較實際
明天可以比較有精神報告

其實我有點擔心這樣的進度有點少
可是Boss的網誌我看不懂
嘖嘖嘖
還是自己多思考看看好了XD

星期三, 11月 21, 2007

[日誌]聯合國咪聽

耶嘿~~~
從上上禮拜開始
每個禮拜二的咪聽
都多了一個外國人- Dr.Bell
本來以為他只是曇花一現
偶而才會來
每次來都是他在寫我們在看
可能過不久就會消失了

一開始對於這件事有點悶
雖然有人可以練習英文很開心
可是我跟Boss之間的咪聽PK就超少
大概只有每個禮拜二早上吧
下午阿坤跑回辦公室
就算我消失ㄧ兩節課
小黃也不會發現
如果禮拜二早上Boss都跟Dr.Bell PK論文
下午又不見
那我僅剩的咪聽時間就沒了耶


反正我也很多事情
很會自己找樂子
乾脆趁Boss這陣子沒空盯我
趕快好好休息
或是整理上課的筆記
反正這種"你做你我做我"也不是一天兩天的事了XDD

沒想到上禮拜四
Boss群突然說
以後每個禮拜二
都要報告十分鐘的進度
而且是 用.英.文
阿坤還跟阿梅說
就叫可欣教你就好了
這對可欣簡單啦
就她每天晚上做的事情

...
我是跟外國人住沒錯
可是跟外國人聊天和用英文報告根本就是兩回事
我跟室友聊天可是中英文交雜耶

結果禮拜二我在接螢幕線的時候
阿坤就叫我跟Dr.Bell說
我們今天的規劃是先報告每個人的進度
之後再看看要怎麼樣

阿阿阿阿啊
我整個好緊張
我不會講規劃
也不會進度的英文
只好隨便亂講
然後阿坤要我把以前到現在我做的東西都跟Dr.Bell說
我整個超驚慌
開始英文交雜著
中文的"我不知道要怎麼講 >"<"
阿坤還說"沒關係啦 他聽的懂"
Dr.Bell還附和 點頭
"恩 我聽的懂"(By Chinese)

有沒有這麼囧的啊
然後Dr.Bell聽完我在幹麻之後
就問了一句"Why are you doing this?"
我還在想要怎麼回答的時候
他又補了一句"Why you write this program?"
阿阿阿

為什麼我要寫JPEG Decoder
我不知道啦
就老師叫我寫我就寫啊
反正我以後的研究領域是在JPEG Domain
我不了解JPEG怎麼做研究

阿要徹底了解
當然要自己寫程式阿
學長們不都是這樣過來的嗎

所以我就亂回答了
"Because I don't want to use the program write by the others"
然後Dr.Bell就開始跟我說
當你在跟一個西方國家的聽眾說話時
他們最主要關心的
是為什麼你要這麼做
你最原始的idea是什麼
一開始講的太細
聽眾會覺得很confused
所以要讓聽眾follow你的思緒
他相信
這不只是在跟西方人講話有用
在其他方面也很有用

嘖...
我報告的功力果然還是不夠火侯
真希望我可以趕快level up
接著換其他人報告的時候
阿坤就跟我說我剛剛不應該這樣講
應該是說"我想獲得JPEG的各項係數來做分析"才對

噗哈哈哈
第一次被人家這樣問
我也傻住了
不小心漏了氣
還好阿坤在旁邊
然後我聽完之後問阿坤說
"那我是不是再跟他講一次"
BOSS點頭
所以我就趁rosa講到一個段落
再用英文跟Dr.Bell講一次
這次Dr.Bell還跟我說
"Don't be afraid when I ask you question,it will help your future presentation ..."

阿哈哈哈
希望下次我可以爭氣一點
有個成功的報告!!

星期二, 11月 13, 2007

[研究日誌]好咪聽

well...
我昨天晚上沒睡
我想我的強迫症終於發生在對的地方了
其實也沒有計畫昨天不睡
事實上
我以為我三點就會受不了跑去睡了
我只是一直寫一直寫
JPEG寫完寫winsocket
可能是上禮拜被老闆刺激到了
總覺得今天要給他看點什麼
我並不是沒有再做
只是不知道要怎麼show給他看

關於老師禮拜五說的要一步一步來
不要一次就想寫for all case
先證明一個block解對了
再寫自動化
可是
寫阿寫的
我突然想到
我的問題
都不是出現在解出來的第一個block
會不會我解出來的是錯的code
只是運氣好可以解下去而已...
所以我就用photoshop畫了一個8X8的圖片
之前有寫過把BMP檔轉成YCbCr->DCT->Quantization
如果這兩個程式都沒有錯的話
理論上而言
Quantized DCT coefficient 應該要和我解出來的一樣
但是!!
還原回來的數值完全不一樣...
而且差很多
昨天認為的問題有可能在於
1.Quantization Table 不一樣
 Solution => 那requantized 應該一樣了吧
 可是 就算乘上Quantized coefficient還是差很多
那 我們先將原本的彩色影像 轉灰階(只有一個component)
就不會有color space transform的問題了吧
唔...還是有問題阿
為什麼在EoI前面
還有剩下的bitstream沒處理
應該要全部用完啊
我可以確定我的huffmantree沒錯
那麼
有可能是
1.我的binary bitstream讀錯了
2.有syntax沒處理
3.我解碼的步驟還漏了點什麼
一直想想想
我覺得
第一個情況發生的機率很小
可是我又找不到其他的syntax沒處理
整個開始想我DC 和AC decode除了要加上diff之外
是不是還缺了什麼
今天早上看了一天的書
終於找出問題在哪裡
原來不只是解出huffmancode的值
Huffmancode後面緊接著的一連串bit
才是真正決定ZZ[i]裡面要放入多少的關鍵
反正老師在跟Dr.Bell討論
叫阿梅過來聽看看我的想法好了
反正當年是一起修影像處理的
如果
我可以說服的了他
應該就沒錯吧
在試圖講我的想法給阿梅聽的時候
我也順面釐清了一些觀念
後來Dr.Bell走了以後
我看機不可失
馬上問Boss有沒有空
跟他確認我的想法是不是對的
阿哈
Boss初步確認了我的想法是對的耶
真開心
其實下午還有討論
不過我好想睡覺喔
明天一早還要上課
就先降啦
大家晚安

星期三, 10月 31, 2007

[閒聊]瑪法達一週星座運勢 10/31~11/06

剛剛閒來沒事
跑去星座版看本週運勢
在眾多的星座運勢中
瑪法達是我覺得屬一屬二準的
(至少在工作方面啦...)
只要有這三個字在標題出現
我一定必看
- - - -
占星預言
為期三週、多災多難的「水星退行週期」在11月1日寫下句點;「蠍子座之月」仍在前段
;且太陽和諸吉星幾度形成有利角度的本週期,從星座角度解讀,意味著大環境氛圍仍將
難以脫離蠍子座星座調性的過敏、專一、執著、頑強與缺乏陽光,通常也是祕密行動、醜
聞祕辛或黑暗勢力較為活躍的時段。而隨著「水星退行」的結束,從個人、社會到國家在
溝通對話上的波折、誤會與衝突可望緩和。

一些歐美理財占星師認為,先前美股市及新興市場在「水星退行」期間價格表現背離基本
面,利空壓力和修正幅度通常會有反應過度跡象。雖然在國際市場潛在利空因素仍在,未
來一週對照星座顯示的逆轉基調,出現落底反彈的機率很高,適合進場買進,逢低佈局。

就個別星座而言,外在環境亂象銳減的本週期,絕大多數星座可望暫緩喘息、少憂多喜。
開心快樂的當運星遠遠超過愁眉苦臉的低潮星,其中特別需要啦啦隊加油的只有水瓶座和
雙魚座,兩者在情感或事業上的夥伴關係上似乎都遇上了某種瓶勁。運勢蟬聯幸運排行榜
第一的獅子座,好事連莊,際遇令人羨慕到極點;白羊座放電轉強、豔遇最多;蠍子座在
專業領域駕輕就熟、幾乎呼風喚雨;魔羯座攀登名利階梯有成,堪稱各有所穫。

星座排行
1. 獅子座:睥睨群雄、獨步武林、引導潮流(衝刺最猛)
2. 白羊座:星光閃耀、魅力四射、深情款款(情事最順)
3. 蠍子座:後盾雄厚、大權獨攬、良有為伴(滿意最多)
4. 魔羯座:佈局縝密、高瞻遠矚、前程似錦(事業最優)

看到那個豔遇最多我整個想大笑
女王我活到現在也有二十年的歲月
艷遇是什麼東西阿
不存在我的字典裡喔
感覺這次會不準的說
結果往下看到星座運勢

牡羊座
風采耀眼,出類拔萃。氣勢和魄力高居階段性顛峰的這段期間,將輕鬆解決疑難雜症。積
極表現和力拼群雄的結果,更是贏得領先,在公開場合大出風頭。事業精彩有料,賣相佳
,鎖定各類市場無不一網打盡。有新合作提案上門。投資運旺。愛情是情有所歸。

靠...
還真的是新合作提案上門咧
今天下午BOSS群跟設計學院的老師們談互動藝術的東西
似乎打算合作了
跟我借筆電播DVD
我只是上去幫他們用東西阿...
誰知道小黃竟然問我要不要一起聽
囧...
在場的五個人裡面
有四個人是老師
剩下那個就是我
有沒有這麼刺激阿
這是鴻門宴吧!!!
後來因為明慧還沒有題目的關係
老師又叫我去叫阿梅跟rosa上來聽
今天談的內容
主要是設計學院的老師跟我們介紹一些互動藝術裝置
像是360度螢幕(林珮淳老師的水泥車)
PDA美術館(類似蝌蚪學長做的東西)
還有互動式電影(影片會跟觀眾做互動 這個互動會影響到結局 有點像RPG的fu)
梁老師之前上課介紹過的can you see me now 也有提到
我印象比較深刻的是最後一個"BabyLove"
老師說是台灣人自己做的喔!!
這個裝置是這樣的
一個娃娃坐在咖啡杯造型的碰碰車裡面
看起來像咖啡杯
實際上是碰碰車
那個娃娃是播放音樂的裝置
人坐在裡面
隨著每個杯子的旋轉 相撞
播放出來的音樂
也會改變
變成什麼樣 我也不知道
但是 可以肯定的是
是由咖啡杯之間的距離 撞擊 等事件
來觸發音樂改變

我個人認為他想表達的意境應該是"人生"
如果說你坐的那個杯子
播放出來的音樂
代表你的人生
那麼隨著你與其他人的遠近 相撞的速度 角度 彈開的速度
(象徵著和其他人互動的模式)
就會有所不同

最後完成的曲子
就可以代表著

每個人一出生都是一樣的
但是隨著你的際遇 (和哪些杯子相撞...)
最後成救出來的妳
也會不同

老師他們很開心的說著說著
竟然打算以後每個禮拜二都一起咪聽了
還打算找人來寫程式
黃世育在問的時候
阿梅跟rosa竟然裝死
裝死就算了
幹麻一起看我
害我變成那個可能會寫的人


網路學程就要會這個嗎
我看那些智慧學程的也沒有比較會AI阿
老娘修TCPIP是兩年前的事了
早就忘光了好不好

老師們整個打蛇隨棍上
變成我要寫了啦!!

這下糟了
寫不出來真的就丟臉丟到設計學院去了...
囧...

算了
往好的方面想
如果撐過去的話
我應該會變強吧!!
這是個磨練自己的好機會!!

星期五, 10月 19, 2007

[研究]小偷法則

恩...
雖然沒掛共同指導了
黃世育老師也是有去幫我跟我老闆探聽
小偷法則到底是啥鬼

我好感動喔~~~~
 謎之音:那只不過是因為他們哥倆好聊天剛好聊到而已...

雖然好像是跟阿梅講完
順便跟我講而已

不過我還想是流淚XD

趁老師剛剛跟我講完
趕快把重點記下來
- - 以下是重點 - - 

我們以一個人的家做舉例
一般人的家
應該都很乾淨
今天如果一個小偷來過
那 屋子就變亂很多

可是第二個小偷來的時候
他還是東翻西翻的找東西啊

但是他弄亂的變化量
就沒有第一個小偷的從乾淨到亂
變那麼多

星期二, 10月 02, 2007

[研究日誌]1002

哇靠
今天早上下午都BOSS的課
真的是超刺激的
早上根本就跟Boss隔空喊話
果然昨天沒把Frame Header和Scan Header
今天會難熬

一開始
Boss還是不懂我的問題在哪
不過他今天感覺就是有備而來
除了把他自己的那本規格書帶來之外
也把之前用Rex.jpg用十六進位讀檔output成的Rex.pdf印出來
整個開始看著兩本討論
我的疑問在於
因為我用wang.jpg去讀檔
發現那個Start of Scan後面
為什麼沒有DRI的TAG
啊這樣我是要怎麼解讀啦
可是老師都是用Rex.jpg去讀
Rex裡面的Start of Scan
後面就直接DRI阿
我問老師這個問題他也楞了一下
不過我有跟他說
可能在Scan Header 和 Frame Header裡面
可以知道
不過我還沒看那邊
我看BOSS要昏倒了
我要去做櫃檯了
先降
晚點再補

星期一, 10月 01, 2007

[研究日誌]Frame header


這陣子為了那個MCU編碼
真的是傷透腦筋
總感覺少了什麼
應該要再有個東西
像是標頭檔之類的
才能夠順利的解出MCU阿

boss一直叫我再多看幾遍
問我Ri是啥鬼
我...我...我...
我真的不知道錒
可是BOSS又說他已經看到了
只是不想跟我講
要我自己去找

煩耶
真的是很不想再看那本都是蝌蚪文的書
可是程式卡在這又不是辦法

想說硬解嘛
又不知道這個MCU要讀哪個table去做解碼

只好耐住性子
認真看規格書P.34的圖和P.37的Scan header syntax
結果在Csj那段發現了個Nf
Nf要去看frame header
oh my god!!!

我當初完全就只知道它是based line DCT 就跳過去姐huffmantable了

該不會這邊的參數是關鍵吧!!
今天晚上要拼了!!

念英文是吧!!
哼...
我跟你拼了!!

星期六, 9月 29, 2007

[閒聊]我是班代

真是見鬼了
從來沒當過班代的我
竟然在研究所時期當了班代
而且還是高票當選
有來都有投我...囧

本來以為班代沒啥事要做的
頂多就每個禮拜到系辦晃晃
反正我可以藉此見到我心愛的主任

誰知道事情還真是多
除了辦兵役緩徵
發學生證
還要幫大家繳機車費

那天趁夜整理哪些人有給我東西
哪些人是完全沒出現的
一確認之下
還真的有人沒給我兵役資料
還好我有跑去找系祕印通訊錄
馬上打電話一個一個問
為了方便我打電話給大家
還自己打了一張通訊錄

簡哥跟馬克傑還沒辦好緩徵
機車証還沒去付錢

以下是我們班的名單

何祖鳳 導師
○李天仁 五年一貫
○范佐瑤 五年一貫
X巫微曦 S411
 楊承穎 S303
○林明慧 糾察 S207
○魏玉雯 學藝 S207
○鄭可欣 班代 S207
○陳致嵩 S206
○黃皓勤 S303
○陳心懋 總務 S412
○賴坤成 S206
○張雁涵 S303
○吳政瑋 S412
○簡聖瑋 體育 S206
○楊順安 服務 S412
○粘嘉菖 衛生 S412
X江昆霖 副班代 S206

打○的是有跟我說他有收到群組寄信的
打X是我有被退信的

星期五, 9月 28, 2007

[學習日誌]9/28論文研討


我現在深深覺得
研究所的課程還真是有趣
既禮拜三賈伯與熊大ㄧ整天的課堂洗禮之後

今天的論文研討
熊大與開暉兩位老師
滔滔不絕的講完了兩堂課

讓我對於我這禮拜的收穫
真的是很滿意阿

由於熊大已經在禮拜三讓我看見了
不同於大學時期修演算法分析與設計課程的教學方式
 我想這也許跟上課的人的心態有關吧
 KENN曾經跟我說過
 他覺得那堂課收穫良多
 我當時還不覺得
 現在想想
 Kenn當時一起修課的人
 是陳政瑜陳韋仲等的狠腳色耶
 難怪他討論的很開心
 這種課還是需要討論的啦

我現在滿腦子是開暉老師那席精彩的簡報
對於開暉老師
我一直覺得他是個冷面笑匠型的人物
說話不溫不火
沒啥tone
上課的內容又大部分跟投影片的內容ㄧ樣
其實會讓人很想睡覺
剛知道另一位帶我們seminar的老師是開暉老師的時候
還頗失望的說

不過今天老師的簡報
真是讓我大大的改觀
整場專心的不得了

我要出門街吳佩慈了
先降啦

星期五, 9月 21, 2007

[JPEG]JPEG簡介

本來以為KO Huffmancoding就可以了

誰知道Boss上禮拜跟我說
後面的才難咧
現在我用完FFDA(Start of scan)了
今天跑去跟老闆確認是不是後面就是MCU
我只要一個bit一個bit讀進來就可以了
老闆跟我說應該是這樣子沒錯啦
可是他不確定
叫我再去看MCU的格式
以下是轉載來的JPEG簡介
原文在這
如果原作者不開心的話
要跟我講喔
我會拿掉的!!


JPEG 壓縮簡介
-------------

1. 色彩模型

JPEG 的圖片使用的是 YCrCb 顏色模型, 而不是電腦上最常用的 RGB. 關於色
彩模型, 這裏不多闡述. 只是說明, YCrCb 模型更適合圖形壓縮. 因為人眼對圖片上
的亮度 Y 的變化遠比色度 C 的變化敏感. 我們完全可以每個點保存一個 8bit 的亮
度值, 每 2x2 個點保存一個 Cr Cb 值, 而圖像在肉眼中的感覺不會起太大的變化.
所以, 原來用 RGB 模型, 4 個點需要 4x3=12 位元組. 而現在僅需要 4+2=6 位元組; 平
均每個點占 12bit. 當然 JPEG 格式裏允許每個點的 C 值都記錄下來; 不過 MPEG 裏
都是按 12bit 一個點來存放的, 我們簡寫為 YUV12.

[R G B] -> [Y Cb Cr] 轉換
-------------------------

(R,G,B 都是 8bit unsigned)

| Y | | 0.299 0.587 0.114 | | R | | 0 |
| Cb | = |- 0.1687 - 0.3313 0.5 | * | G | + |128|
| Cr | | 0.5 - 0.4187 - 0.0813| | B | |128|

Y = 0.299*R + 0.587*G + 0.114*B (亮度)
Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128
Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128

[Y,Cb,Cr] -> [R,G,B] 轉換
-------------------------

R = Y + 1.402 *(Cr-128)
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)
B = Y + 1.772 *(Cb-128)

一般, C 值 (包括 Cb Cr) 應該是一個有符號的數位, 但這裏被處理過了, 方法
是加上了 128. JPEG 裏的資料都是無符號 8bit 的.

2. DCT (離散余弦變換)

JPEG 裏, 要對資料壓縮, 先要做一次 DCT 變換. DCT 變換的原理, 涉及到數學
知識, 這裏我們不必深究. 反正和傅立葉變換(學過高數的都知道) 是差不多了. 經過
這個變換, 就把圖片裏點和點間的規律呈現出來了, 更方便壓縮.JPEG 裏是對每 8x8
個點為一個單位處理的. 所以如果原始圖片的長寬不是 8 的倍數, 都需要先補成 8
的倍數, 好一塊塊的處理. 另外, 記得剛才我說的 Cr Cb 都是 2x2 記錄一次嗎? 所
以大多數情況, 是要補成 16x16 的整數塊.按從左到右, 從上到下的次序排列 (和我
們寫字的次序一樣). JPEG 裏是對 Y Cr Cb 分別做 DCT 變換的.

JPEG 編碼時使用的是 Forward DCT (FDCT) 解碼時使用的 Inverse DCT (IDCT)
下面給出公式:

FDCT:
c(u,v) 7 7 2*x+1 2*y+1
F(u,v) = --------- * sum sum f(x,y) * cos (------- *u*PI)* cos (------ *v*PI)
4 x=0 y=0 16 16

u,v = 0,1,...,7

{ 1/2 當 u=v=0 時
c(u,v) = {
{ 1 其他情況


IDCT:
1 7 7 2*x+1 2*y+1
f(x,y) = --- * sum sum c(u,v)*F(u,v)*cos (------- *u*PI)* cos (------ *v*PI)
4 u=0 v=0 16 16

x,y=0,1...7

這個步驟很花時間, 另外有種 AA&N 優化演算法, 大家可以去 inet 自己找一下.
在 Intel 主頁上可以找到 AA&N IDCT 的 MMX 優化代碼.

3. 重排列 DCT 結果
DCT 將一個 8x8 的陣列變換成另一個 8x8 的陣列. 但是記憶體裏所有資料都是線
形存放的, 如果我們一行行的存放這 64 個數字, 每行的結尾的點和下行開始的點就
沒有什麼關係, 所以 JPEG 規定按如下次序整理 64 個數字.

0, 1, 5, 6,14,15,27,28,
2, 4, 7,13,16,26,29,42,
3, 8,12,17,25,30,41,43,
9,11,18,24,31,40,44,53,
10,19,23,32,39,45,52,54,
20,22,33,38,46,51,55,60,
21,34,37,47,50,56,59,61,
35,36,48,49,57,58,62,63

這樣數列裏的相鄰點在圖片上也是相鄰的了.

4. 量化
對於前面得到的 64 個空間頻率振幅值, 我們將對它們作幅度分層量化操作.方
法就是分別除以量化表裏對應值並四捨五入.

for (i = 0 ; i<=63; i++ )
vector[i] = (int) (vector[i] / quantization_table[i] + 0.5)

下面有張 JPEG 標準量化表. (按上面同樣的彎曲次序排列)

16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99

這張表依據心理視覺閥製作, 對 8bit 的亮度和色度的圖像的處理效果不錯.
當然我們可以使用任意的量化表. 量化表是定義在 jpeg 的 DQT 標記後. 一般
為 Y 值定義一個, 為 C 值定義一個.
量化表是控制 JPEG 壓縮比的關鍵. 這個步驟除掉了一些高頻量, 損失了很高
細節. 但事實上人眼對高空間頻率遠沒有低頻敏感.所以處理後的視覺損失很小.
另一個重要原因是所有的圖片的點與點之間會有一個色彩過渡的過程. 大量的圖像
資訊被包含在低空間頻率中. 經過量化處理後, 在高空間頻率段, 將出現大量連續
的零.

5. 0 RLC 編碼
現在我們向量中有許多連續的 0. 我們可以使用 RLC 來壓縮掉這些 0. 這裏我們
將跳過第一個向量 (後面將解釋為什麼) 因為它的編碼比較特別. 假設有一組向量
(64 個的後 63 個) 是
57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0, 0 , 0 ,0 , 0,..,0
經過 RLC 壓縮後就是
(0,57) ; (0,45) ; (4,23) ; (1,-30) ; (0,-16) ; (2,1) ; EOB
EOB 是一個結束標記, 表示後面都是 0 了. 實際上, 我們用 (0,0) 表示 EOB
但是, 如果這組數字不以 0 結束, 那麼就不需要 EOB.
由於後面 huffman 編碼的要求, 每組數字前一個表示 0 的數量的必須是 4 bit,
就是說, 只能是 0~15, 所以我們實際這樣編碼:
(0,57) ; (15,0) (2,3) ; (4,2) ; (15,0) (15,0) (1,895) , (0,0)
注意 (15,0) 表示了 16 個連續的 0.

6. huffman 編碼
為了提高儲存效率, JPEG 裏並不直接保存數值, 而是將數值按位數分成 16 組:

數值 組 實際保存值
0 0 -
-1,1 1 0,1
-3,-2,2,3 2 00,01,10,11
-7,-6,-5,-4,4,5,6,7 3 000,001,010,011,100,101,110,111
-15,..,-8,8,..,15 4 0000,..,0111,1000,..,1111
-31,..,-16,16,..,31 5 00000,..,01111,10000,..,11111
-63,..,-32,32,..,63 6 .
-127,..,-64,64,..,127 7 .
-255,..,-128,128,..,255 8 .
-511,..,-256,256,..,511 9 .
-1023,..,-512,512,..,1023 10 .
-2047,..,-1024,1024,..,2047 11 .
-4095,..,-2048,2048,..,4095 12 .
-8191,..,-4096,4096,..,8191 13 .
-16383,..,-8192,8192,..,16383 14 .
-32767,..,-16384,16384,..,32767 15 .

還是來看前面的例子:
(0,57) ; (0,45) ; (4,23) ; (1,-30) ; (0,-8) ; (2,1) ; (0,0)
只處理每對數右邊的那個:
57 是第 6 組的, 實際保存值為 111001 , 所以被編碼為 (6,111001)
45 , 同樣的操作, 編碼為 (6,101101)
23 -> (5,10111)
-30 -> (5,00001)
-8 -> (4,0111)
1 -> (1,1)

前面的那串數字就變成了:
(0,6), 111001 ; (0,6), 101101 ; (4,5), 10111; (1,5), 00001; (0,4) , 0111 ;
(2,1), 1 ; (0,0)

括弧裏的數值正好合成一個位元組. 後面被編碼的數位表示範圍是 -32767..32767.
合成的位元組裏, 高 4 位是前續 0 的個數, 低 4 位元描述了後面數字的位元數.

繼續剛才的例子, 如果 06 的 huffman 編碼為 111000
69 = (4,5) --- 1111111110011001
21 = (1,5) --- 11111110110
4 = (0,4) --- 1011
33 = (2,1) --- 11011
0 = EOB = (0,0) --- 1010

那麼最後對於前面的例子表示的 63 個係數 (記得我們將第一個跳過了嗎?) 按位流
寫入 JPG 檔中就是這樣的:
111000 111001 111000 101101 1111111110011001 10111 11111110110 00001
1011 0111 11011 1 1010

DC 的編碼
---------
記得剛才我們跳過了每組 64 個資料的第一個吧, DC 就是指的這個數字 (後面 63
個簡稱 AC) 代入前面的 FDCT 公式可以得到
c(0,0) 7 7
DC = F(0,0) = --------- * sum sum f(x,y) * cos 0 * cos 0 其中 c(0,0) = 1/2
4 x=0 y=0

1 7 7
= --- * sum sum f(x,y)
8 x=0 y=0

即一塊圖像樣本的平均值. 就是說, 它包含了原始 8x8 圖像塊裏的很多能量. (通常
會得到一個很大的數值)

JPEG 的作者指出連續塊的 DC 率之間有很緊密的聯繫, 因此他們決定對 8x8 塊的
DC 值的差別進行編碼. (Y, Cb, Cr 分別有自己的 DC)

Diff = DC(i) - DC(i-1)

所以這一塊的 DC(i) 就是: DC(i) = DC(i-1) + Diff

JPG 從 0 開始對 DC 編碼, 所以 DC(0)=0. 然後再將當前 Diff 值加在上一個值上得
到當前值.

下面再來看看上面那個例子: (記住我們保存的 DC 是和上一塊 DC 的差值 Diff)

例如上面例子中, Diff 是 -511, 就編碼成

(9, 000000000)

如果 9 的 Huffman 編碼是 1111110 (在 JPG 檔中, 一般有兩個 Huffman 表, 一
個是 DC 用, 一個是 AC 用) 那麼在 JPG 檔中, DC 的 2 進制表示為

1111110 000000000

它將放在 63 個 AC 的前面, 上面上個例子的最終 BIT 流如下:

1111110 000000000 111000 111001 111000 101101 1111111110011001 10111
11111110110 00001 1011 0111 11011 1 1010

下面簡單敍述一下針對一個資料單元的圖片 Y 的解碼
-----------------------------------------------

在整個圖片解碼的開始, 你需要先初始化 DC 值為 0.

1) 先解碼 DC:
a) 取得一個 Huffman 碼 (使用 Huffman DC 表)
b) Huffman解碼, 看看後面的資料位元數 N
c) 取得 N 位, 計算 Diff 值
d) DC + = Diff
e) 寫入 DC 值: " vector[0]=DC "

2) 解碼 63 個 AC:

------- 迴圈處理每個 AC 直到 EOB 或者處理到 64 個 AC

a) 取得一個 Huffman 碼 (使用 Huffman AC 表)
b) Huffman 解碼, 得到 (前面 0 數量, 組號)
[記住: 如果是(0,0) 就是 EOB 了]

c) 取得 N 位(組號) 計算 AC
d) 寫入相應數量的 0
e) 接下來寫入 AC
-----------------

下一步的解碼
------------
上一步我們得到了 64 個向量. 下面我們還需要做一些解碼工作:

1) 反量化 64 個向量 : "for (i=0;i<=63;i++) vector[i]*=quant[i]"
2) 重排列 64 個向量到 8x8 的塊中
3) 對 8x8 的塊作 IDCT

對 8x8 塊的 (Y,Cb,Cr) 重複上面的操作 [Huffman 解碼, 步驟 1), 2), 3)]

4) 將所有的有符號的 8bit 數加上 128
5) 轉換 YCbCr 到 RGB

JPG 檔(Byte 級)裏怎樣組織圖片資訊
-----------------------------------
注意 JPEG/JFIF 檔格式使用 Motorola 格式, 而不是 Intel 格式, 就是說, 如果
是一個字的話, 高位元組在前, 低位元組在後.

JPG 檔是由一個個段 (segments) 構成的. 每個段長度 <=65535. 每個段從一個標
記字開始. 標記字都是 0xff 打頭的, 以非 0 位元組和 0xFF 結束. 例如 'FFDA' ,
'FFC4', 'FFC0'. 每個標記有它特定意義, 這是由第2位元組指明的. 例如, SOS (Start
Of Scan = 'FFDA') 指明了你應該開始解碼. 另一個標記 DQT (Define Quantization
Table = 0xFFDB) 就是說它後面有 64 位元組的 quantization 表

在處理 JPG 檔時, 如果你碰到一個 0xFF, 而它後面的位元組不是 0, 並且這個位元組
沒有意義. 那麼你遇到的 0xFF 位元組必須被忽略. (一些 JPG 裏, 常用用 0xFF 做某
些填充用途) 如果你在做 huffman 編碼時碰巧產生了一個 0xFF, 那麼就用 0xFF
0x00 代替. 就是說在 jpeg 圖形解碼時碰到 FF00 就把它當作 FF 處理.

另外在 huffman 編碼區域結束時, 碰到幾個 bit 沒有用的時候, 應該用 1 去填充.
然後後面跟 FF.

下面是幾個重要的標記
--------------------

SOI = Start Of Image = 'FFD8'
這個標記只在檔開始出現一次
EOI = End Of Image = 'FFD9'
JPG 文件都以 FFD9 結束

RSTi = FFDi ( i = 0..7) [ RST0 = FFD0, RST7=FFD7]
= 重定標記
通常穿插在資料流程裏, 我想是擔心 JPG 解碼出問題吧(應該配合 DRI 使用). 不過很
多 JPG 都不使用它

(SOS --- RST0 --- RST1 -- RST2 --...
...-- RST6 --- RST7 -- RST0 --...)

----
標記
----
下面是必須處理的標記

SOF0 = Start Of Frame 0 = FFC0
SOS = Start Of Scan = FFDA
APP0 = it's the marker used to identify a JPG file which uses the JFIF
specification = FFE0
COM = Comment = FFFE
DNL = Define Number of Lines = FFDC
DRI = Define Restart Interval = FFDD
DQT = Define Quantization Table = FFDB
DHT = Define Huffman Table = FFC4

JPG 檔中 Haffman 表的儲存
---------------------------
JPEG 裏定義了一張表來描述 Haffman 樹. 定義在 DHT 標記後面. 注意: Haffman
代碼的長度限制在 16bit 內.

一般一個 JPG 檔裏會有 2 類 Haffman 表: 一個用於 DC 一個用於 AC (實際有 4
個表, 亮度的 DC,AC 兩個, 色度的 DC,AC 兩個)

這張表是這樣保存的:
1) 16 位元組:
第 i 位元組表示了 i 位元長的 Huffman 代碼的個數 (i= 1 到 16)

2) 這表的長度 (位元組數) = 這 16 個數字之和
現在你可以想像這張表怎麼存放的吧? 對應位元組就是對應 Haffman 代碼等價數字. 我
不多解釋, 這需要你先瞭解 Haffman 演算法. 這裏只舉一個例子:

Haffman 表的表頭是 0,2,3,1,1,1,0,1,0,0,0,0,0,0,0,0
就是說長度為 1 的代碼沒有
長度為 2 的代碼為 00
01
長度為 3 的代碼是 100
101
110
長度為 4 的代碼是 1110
長度為 5 的代碼是 11110
長度為 6 的代碼是 111110
長度為 7 的代碼沒有 (如果有一個的話應該是 1111110)
長度為 8 的代碼是 11111100
.....
後面都沒有了.

如果表下面的資料是
45 57 29 17 23 25 34 28

就是說
45 = 00
57 = 01
29 = 100
17 = 101
23 = 110
等等...

如果你懂 Haffman 編碼, 這些不難理解

採樣係數
--------
下面講解的都是真彩 JPG 的解碼, 灰度 JPG 的解碼很簡單, 因為圖形中只有亮度信
息. 而彩色圖形由 (Y, Cr, Cb) 構成, 前面提到過, Y 通常是每點採樣一次, 而 Cr,
Cb 一般是 2x2 點採樣一次, 當然也有的 JPG 是逐點採樣, 或者每兩點採樣 (橫向
兩點, 縱向一點) 採樣係數均被定義成對比最高採樣係數的相對值.

一般情況 (即: Y 逐點採樣, Cr Cb 每 2x2 點一次) 下: Y 有最高的採樣率, 橫向采
樣係數HY=2 縱向採樣係數 VY=2; Cb 的橫向採樣係數 HCb=1, 縱向採樣係數 VCb=1;
同樣 HCr=1, VCr=1

在 Jpeg 裏, 8x8 個原始資料, 經過 RLC, Huffman 編碼後的一串資料流程稱為一個
Data Unit (DU) JPG 裏按 DU 為單位的編碼次序如下:

1) for (counter_y=1;counter_y<=VY;counter_y++)
for (counter_x=1;counter_x<=HY;counter_x++)
{ 對 Y 的 Data Unit 編碼 }

2) for (counter_y=1;counter_y<=VCb ;counter_y++)
for (counter_x=1;counter_x<=HCb;counter_x++)
{ 對 Cb 的 Data Unit 編碼 }

3) for (counter_y=1;counter_y<=VCr;counter_y++)
for (counter_x=1;counter_x<=HCr;counter_x++)
{ 對 Cr 的 Data Unit 編碼 }

按我上面的例子: (HY=2, VY=2 ; HCb=VCb =1, HCr,VCr=1) 就是這樣一個次序
YDU,YDU,YDU,YDU,CbDU,CrDU
這些就描述了一塊 16x16 的圖形. 16x16 = (Hmax*8 x Vmax*8) 這裏 Hmax=HY=2
Vmax=VY=2

一個 (Hmax*8,Vmax*8) 的塊被稱作 MCU (Minimun Coded Unix) 前面例子中一個
MCU = YDU,YDU,YDU,YDU,CbDU,CrDU

如果 HY =1, VY=1
HCb=1, VCb=1
HCr=1, VCr=1
這樣 (Hmax=1,Vmax=1), MCU 只有 8x8 大, MCU = YDU,CbDU,CrDU

對於灰度 JPG, MCU 只有一個 DU (MCU = YDU)

JPG 檔裏, 圖像的每個組成部分的採樣係數定義在 SOF0 (FFC0) 標記後

簡單說一下 JPG 文件的解碼
-------------------------
解碼程式閑從 JPG 檔中讀出採樣係數, 這樣就知道了 MCU 的大小, 算出整個圖像
有幾個 MCU. 解碼程式再迴圈逐個對 MCU 解碼, 一直到檢查到 EOI 標記. 對於每個
MCU, 按正規的次序解出每個 DU, 然後組合, 轉換成 (R,G,B) 就 OK 了

附:JPEG 檔格式
~~~~~~~~~~~~~~~~

- 文件頭 (2 bytes): $ff, $d8 (SOI) (JPEG 檔標識)
- 任意數量的段 , 見後面
- 文件結束 (2 bytes): $ff, $d9 (EOI)

段的格式:
~~~~~~~~~

- header (4 bytes):
$ff 段標識
n 段的類型 (1 byte)
sh, sl 該段長度, 包括這兩個位元組, 但是不包括前面的 $ff 和 n.
注意: 長度不是 intel 次序, 而是 Motorola 的, 高位元組在前,
低位元組在後!
- 該段的內容, 最多 65533 位元組

注意:
- 有一些無參數的段 (下面那些前面注明星號的)
這些段沒有長度描述 (而且沒有內容), 只有 $ff 和類型位元組.
- 每一個段結束到下一個 $ff 間的資料都是合法的, 必須被忽略掉.

段的類型:
~~~~~~~~~

*TEM = $01 可以忽略掉

SOF0 = $c0 幀開始 (baseline JPEG), 細節附後
SOF1 = $c1 dito
SOF2 = $c2 通常不支持
SOF3 = $c3 通常不支持

SOF5 = $c5 通常不支持
SOF6 = $c6 通常不支持
SOF7 = $c7 通常不支持

SOF9 = $c9 arithmetic 編碼(Huffman 的一種擴展演算法), 通常不支援
SOF10 = $ca 通常不支持
SOF11 = $cb 通常不支持

SOF13 = $cd 通常不支持
SOF14 = $ce 通常不支持
SOF14 = $ce 通常不支持
SOF15 = $cf 通常不支持

DHT = $c4 定義 Huffman Table, 細節附後
JPG = $c8 未定義/保留 (引起解碼錯誤)
DAC = $cc 定義 Arithmetic Table, 通常不支援

*RST0 = $d0 RSTn 用於 resync, 通常被忽略
*RST1 = $d1
*RST2 = $d2
*RST3 = $d3
*RST4 = $d4
*RST5 = $d5
*RST6 = $d6
*RST7 = $d7

SOI = $d8 圖片開始
EOI = $d9 圖片結束
SOS = $da 掃描行開始, 細節附後
DQT = $db 定義 Quantization Table, 細節附後
DNL = $dc 通常不支持, 忽略
DRI = $dd 定義重新開始間隔, 細節附後
DHP = $de 忽略 (跳過)
EXP = $df 忽略 (跳過)

APP0 = $e0 JFIF APP0 segment marker (細節略)
APP15 = $ef 忽略

JPG0 = $f0 忽略 (跳過)
JPG13 = $fd 忽略 (跳過)
COM = $fe 注釋, 細節附後

其他的段類型都保留必須跳過

SOF0: Start Of Frame 0:
~~~~~~~~~~~~~~~~~~~~~~~

- $ff, $c0 (SOF0)
- 長度 (高位元組, 低位元組), 8+components*3
- 資料精度 (1 byte) 每個樣本位元數, 通常是 8 (大多數軟體不支援 12 和 16)
- 圖片高度 (高位元組, 低位元組), 如果不支援 DNL 就必須 >0
- 圖片寬度 (高位元組, 低位元組), 如果不支援 DNL 就必須 >0
- components 數量(1 byte), 灰度圖是 1, YCbCr/YIQ 彩色圖是 3, CMYK 彩色圖
是 4
- 每個 component: 3 bytes
- component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q)
- 採樣係數 (bit 0-3 vert., 4-7 hor.)
- quantization table 數

DRI: Define Restart Interval:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- $ff, $dd (DRI)
- 長度 (高位元組, 低位元組), 必須是 4
- MCU 塊的單元中的重新開始間隔 (高位元組, 低位元組),
意思是說, 每 n 個 MCU 塊就有一個 RSTn 標記.
第一個標記是 RST0, 然後是 RST1 等, RST7 後再從 RST0 重複

DQT: Define Quantization Table:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- $ff, $db (DQT)
- 長度 (高位元組, 低位元組)
- QT 信息 (1 byte):
bit 0..3: QT 號(0..3, 否則錯誤)
bit 4..7: QT 精度, 0 = 8 bit, 否則 16 bit
- n 位元組的 QT, n = 64*(精度+1)

評論:
- 一個單獨的 DQT 段可以包含多個 QT, 每個都有自己的資訊位元組
- 當精度=1 (16 bit), 每個字都是高位在前低位元在後

DAC: Define Arithmetic Table:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
法律原因, 現在的軟體不支援 arithmetic 編碼.
不能生產使用 arithmetic 編碼的 JPEG 檔

DHT: Define Huffman Table:
~~~~~~~~~~~~~~~~~~~~~~~~~~

- $ff, $c4 (DHT)
- 長度 (高位元組, 低位元組)
- HT 信息 (1 byte):
bit 0..3: HT 號 (0..3, 否則錯誤)
bit 4 : HT 類型, 0 = DC table, 1 = AC table
bit 5..7: 必須是 0
- 16 bytes: 長度是 1..16 代碼的符號數. 這 16 個數的和應該 <=256
- n bytes: 一個包含了按遞增次序代碼長度排列的符號表
(n = 代碼總數)

評論:
- 一個單獨的 DHT 段可以包含多個 HT, 每個都有自己的資訊位元組

COM: 注釋:
~~~~~~~~~~

- $ff, $fe (COM)
- 注釋長度 (高位元組, 低位元組) = L+2
- 注釋為長度為 L 的字元流

SOS: Start Of Scan:
~~~~~~~~~~~~~~~~~~~

- $ff, $da (SOS)
- 長度 (高位元組, 低位元組), 必須是 6+2*(掃描行內元件的數量)
- 掃描行內元件的數量 (1 byte), 必須 >= 1 , <=4 (否則是錯的) 通常是 3
- 每個元件(部分): 2 bytes
- component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q), 見 SOF0
- 使用的 Huffman 表00-1-14:
- bit 0..3: AC table (0..3)
- bit 4..7: DC table (0..3)
- 忽略 3 bytes (???)

評論:
- 圖片資料 (一個個掃描行) 緊接著 SOS 段.

星期六, 8月 18, 2007

[閒聊]送舊

前天實驗室送舊
跑去吃衣碟鬥牛士的燒肉放題

因為那天跑去問boss其他老師來了沒
打斷了他跟學妹的談話
BOSS似乎不開心
驚嚇之於
對boss的態度又退縮了一下

想想這樣不行
決定趁送舊的時候
坐老闆附近
可以趁機閒聊

可是我們到的比較晚

坐位已經分配好了

   ●   陳 院 王   ● ● ●   R 梅
┌───┐ ┌─────┐ ┌─────┐ ┌───┐
 研一桌    老師桌     研二桌    研零桌
└───┘ └─────┘ └─────┘ └───┘
 ● ●   黃 梁 坤   ● ● ●   cos

這下囧了
我那麼孬
怎麼有膽越過六顆人頭
跑去跟老師講話
只好陷入烤肉烤肉烤肉的世界

有學長在真是件不錯的事
雖然我很喜歡烤肉
可是吃不下那麼多
現在可以一直烤一直烤
都不用煩惱吃不完的問題

黃老師真的很喜歡晃晃晃耶
吃到一半就每桌看一看
啦咧一下

到我們這桌還坐下來吃了烤魚
還點菜說他要吃金針菇XDD

天啊
這真是個好機會
可以巴結老闆耶
rosa和阿梅瞬間就叫我拿海鮮烤干貝過去

不過我還是很孬
不敢直接端去給老闆
只好端給黃世育
反正他有來點菜嘛
比較不諂媚的樣子XDD

不過黃世育老師跟我比老闆
老闆又比黃世育
比來比去的害我愣在那邊
最後丟在黃世育桌上就跑了

回到桌子之後
跟阿梅和rosa懊惱剛剛的諂媚失敗之行
決定再來一次

可是這次烤好的是金針菇耶
黃世育剛剛有說他要吃
所以...
就還是給了黃世育了

學長說我太弱了啦
怎麼可以不先給自己老闆
一再的跟我強調

不會諂媚 這是應該的!!

才讓我又鼓起勇氣
跑去強迫老師收下


這次終於成功了
老師雖然有推拒了一下
不過看起來有比較開心了XD

--
燒肉放題有點弱耶
都沒甜點
也沒麻糬
吃完有空虛感....

星期二, 8月 14, 2007

[jpeg]Huffmancode

姆哈哈哈~~

太久沒跟老闆見面

程式卡關之後就給它放在那邊

都快忘記自己怎麼寫的了

不過老闆禮拜二要討論啊

而且又看到老闆對在他的blog上面發表了兩篇Huffman table的東西

這下我如果說忘記了的話

一定會死的很難看

好不容易老闆要理我的說

怎麼可以放棄掉這個好機會

本來想說我程式只是卡關

沒想到之前寫的還是有問題

為什麼我多好多個huffmantable阿

一樣的JPEG用老師的程式就可以正常開

 我之前可以開只是剛好吧
 果然還是要多做實驗才行
 
 
昨天與程式奮鬥了一天

發現原來問題在我陣列的位置算錯啊

少算到table index 所佔到的那個BYTE

應該要改成這樣才對...

begH += (LiCount+17); //用來skip上面那行指令--> HuffmanTable(begH)
hLength -=(17 + LiCount);

唔...

雖然跟我想像會進行到的地方不太一樣

不過先找出問題也是好的

至少自己解決了XDD


加入書籤:MyShareHemiDemiDel.icio.usfurlGoogle BookmarksYahoo! My Webtechnorati

星期五, 8月 10, 2007

[日誌]被晃點了

昨天老闆大人跟我說


師:"我明天可能會去學校..."
"你會來嗎??"

開玩笑
我那麼想咪聽
就算本來沒計劃要來
聽到老闆這樣說
當然要來ㄚ!!

cos:"會會會 我會去啊"

師:"喔~~~那 我應該是12點以後會到吧 如果我有去的話啦"

那...那...那...
是在等我說我幾點會到嗎!?
算了
早點去也好
可以把程式整理一下
趕快寫一寫
難得可以報告程式給老闆聽耶
cos:"喔 我應該早上就會到了吧"

結果...
今天到實驗室時還跟阿梅說
我今天不能玩喔
要寫程式
一登入windows
就看到SKYPE與BOSS的對話視窗
還想說是我昨天忘記關掉咧
結果原來是

.
.
.
.
.
.
.


[2007/8/9 下午 11:29:39] YKLee :) 說 : 我明天不會去學校了
[2007/8/9 下午 11:30:20] YKLee :) 說 : 下星期二再和你討論JPEG Decoder
[2007/8/9 下午 11:30:27] YKLee :) 說 : bye

頓時有一種妙感
我到底是要開心boss沒來
可以打電動
還是要煩惱boss沒來
沒得報告進度阿


嘖嘖
真是麻煩!!

加入書籤:MyShareHemiDemiDel.icio.usfurlGoogle BookmarksYahoo! My Webtechnorati