星期四, 11月 26, 2009

星期三, 11月 18, 2009

Week 09: BMP format (3)

第四個作業 (Homework 4):

 請讀取一張 BMP 影像, 並將其影像內容顯示於 C++ Builder 的影像元件之中。

範例程式: DMC-2009F-SP04.txt

說明:

這個範例程式已經成功地解決同學們在課堂上, 如果沒有把 fseek 加入到迴圈中, 無法正確讀取影像內容的問題, 經過實驗發現, fread 從檔案中成功讀取資料後, 確實會自動將指標移到下一筆資料, 不需要我們用 fseek 指令設定; 然而, fread 會讀取失敗(傳回值為 0 ), 是因為在開啟檔案時, 必須設定開啟模式為"rb"。
imBMP = fopen(OpenDialog1->FileName.c_str(), "rb");
然而, 這個程式還沒有處理 bmp 在儲存處理影像時, 把每一橫列所需的byte數都對齊為 4 的倍數的狀況。假設, 一張 24-bit 彩色影像的寬度為 250, 每一橫列所需之記憶體為 250 * BitCount / 8 = 750, 那麼在存成 bmp 檔時, 每一行最後會補上 2 bytes, 一共需要 752 bytes。

因此, 如果要用上面的範例程式讀取一張彩色影像, 其寬度不是 4 的倍數時, 就會發生錯誤的情況。

以下是一張影像寬度為 250 的影像。



用本範例程式讀取出來的結果。


 

星期四, 11月 05, 2009

Week 08: BMP Format (2)

// 宣告一個資料型態 BMP_Header_TYPE,
// 其結構為 BMP 檔頭中, 有關 File Information 的部分

typedef struct {
 unsigned char ucTyte[2]; // 固定為 'BM', 用以辨認是否為 DIB
 unsigned char ucFileSize[4]; // 檔案長度
 short sReserved1; // 固定為 0 , 保留未用
 short sReserved2; // 固定為 0 , 保留未用
 unsigned char ucOffset[4]; // 儲存圖像資料到檔頭的距離
 } BMP_Header_TYPE;

// 宣告一個變數 Header[1], 其型態為剛剛宣告的 BMP_Header_TYPE

BMP_Header_TYPE Header[1];

// 宣告一個資料型態 BitmapInfoHeader_TYPE ,
// 其結構為 BMP 檔頭中, 有關 Bitmap Information 的部分

typedef struct {
 unsigned char ucSize[4];  // 宣告圖像基本資料的大小 ( = 40 )
 unsigned char ucWidth[4];  // 圖像的寬度, 以 pixel 為單位
 unsigned char ucHeight[4]; // 圖像的高度, 以 pixel 為單位
 unsigned char ucPlanes[2]; // 固定存入 1
 unsigned char ucBitCount[2]; // 宣告每個 pixel 需要多少 bit 儲存
 unsigned char ucCompression[4]; 
      // 宣告圖像壓縮方式, 可能的值有 3 種 : 0, 1, 2

 unsigned char ucImageSize[4]; 
      // 影像大小, 以 Byte 為單位 ( W*H*BitCount / 8 )

 unsigned char ucXPixelsPerMeter[4]; 
      // 宣告圖像在 X 方向於 1 公尺有多少 pixel ,
 unsigned char ucYPixelsPerMeter[4]; 
      // 宣告圖像在 Y 方向於 1 公尺有多少 pixel ,
 unsigned char ucUsedColor[4]; 
      // 宣告圖像資料實際用到的顏色數目 ( 0表示用光 )
 unsigned char ucImportantColor[4];
      // 宣告調色盤中, 多少顏色在顯示時是重要的
 } BitmapInfoHeader_TYPE;

// 宣告一個變數 BitmapInfoHeader[1],
// 其型態為剛剛宣告的 BitmapInfoHeader_TYPE

BitmapInfoHeader_TYPE BitmapInfoHeader[1];

// 宣告一個資料型態 Palette_COLOR_TYPE ,
// 其結構為 BMP 檔頭中, 有關 Palette 的部分

typedef struct {
 Byte bBlue;
 Byte bGreen;
 Byte bRed;
 Byte bReserved;
 } Palette_COLOR_TYPE;

// 宣告 256 個變數 PaletteColors[256] 用來儲存調色盤的顏色,
// 型態為剛宣告的 Palette_COLOR_TYPE

Palette_COLOR_TYPE PaletteColors[256];

// 宣告 2 個變數; 儲存檔案結束控制碼

unsigned char ucFileEnd[2]; // 檔案的最後有 2 個 byte 的 0

 參考程式

星期四, 10月 29, 2009

Week 07: BMP Format (1)

1. 本週所要練習的題目是如何從BMP檔案中讀出相關的圖片資料 ?

 BMP Format (BMP檔案格式 )

2. 同學如果不確定從檔案中讀取出來的資料正不正確, 可以用 PSPad 這個文書編輯器來檢視檔案的原始內容:

    

3. 範例程式: 用結構 struct 的方式, 一次讀入一大堆資料 ...

  DMC-2009F-SP02.txt

4. 第三個作業(homework 3) :
  請讀取 BMP 影像的檔頭資料, 然後將其顯示出來。
 

Week 06: File Access

1.本週所要練習的指令是 C 語言中關於檔案存取的指令:

 a. fopen
 b. fclose
 c. fseek
 d. fread
 e. fwrite

2. 範例程式:

 DMC-2009F-SP01.txt

星期四, 10月 15, 2009

Week 05: Image Bitmap


 



第二個作業 (Homework 2):

 讀入一個 24-bit 彩色 .bmp 影像, 將其轉換成 8-bit 灰階影像儲存!
 

星期四, 10月 08, 2009

Week 04: Data and Meta-Data

1. Data & Meta-Data
 a. 文字檔(.txt)與文件檔(.doc)之間的差異
 b. 記事本與 MS Word 之間的差異
 c. Blogger 部落格文件編輯器的兩個模式之間的差異
 
2. BCB Programming 基本概念: (第二次講解)

 

 a. 元件 (component)
 b. 屬性 (property)
 c. 事件 (event)
 d. 方法 (method)
 e. 事件處理程序 (event-driven procedure)

我們今天特地再次講解了什麼是物件(object), 屬性(property), 事件(event), 與方法(method)。並用 BCB 中的 Object Inspector 作示範, 用實例來講解這些名詞之間的關係。

3. BCB 程式示範
 a. Panel component
 b. ScrollBox component
 c. Visible property

星期五, 10月 02, 2009

Week 03: 如何在影像物件上畫線?

1. 本週程式示範:
 a. OpenImageDialog,
 b. ColorDialog
 c. MoveTo(); LineTo();
 d. Image1->Canvas->Pen->Color
 e. Image1->Canvas->Pen->Width

2. 有關在影像上繪圖的相關資料, 請同學參考課本 § 11-5 繪圖功能
 類別 Canvas

3. 第一個作業: 請完成本週課堂上所練習之程式, 並將程式執行結果秀到 Homework Show @ DMC 作業部落格中, 並寫上程式撰寫心得。
 

星期四, 9月 24, 2009

Week 02: C++ Builder 程式架構

1. 本週程式示範:
 ShowMessage("Hello");
 Components: Button, MainMenu

2. 教室更動通知:
 從第 3 週起, 本課程教室更改到 S513 教室上課。

3. 本週指定閱讀進度:
 請閱讀課本至第三章結束。

星期四, 9月 17, 2009

Week 01: 本課程的評分原則

1. 本課程的主要目標是培養同學具備以下之基本能力:
 a. 了解各種多媒體資料的基本儲存格式,
 b. 撰寫簡單程式來處理與分析各種多媒體資料。

2. 本課程 98 學年度的評分原則如下:

 a. C++ Builder 程式撰寫作業共 7 次 ( 70% )

 b. 學習態度 ( 30% )

  點名未到者(包含遲到者), 一次扣 1 分, 以 10 分為限。
  上課睡覺 or 玩電玩 (電腦遊戲, 掌上遊戲機, 手機遊戲) 一次扣一分。
  上課學習認真, 互動良好者, 一次加一分, 以 20 分為限。
  所以原則上, 每位同學目前有 10 分的基本分。

3. 教科書: C++ Builder 6 完全攻略

 

 定價 690 元, 團購價 25% OFF, 518 500 元
 已向上奇科技(與金禾圖書合併), 預計下週三會寄 35 本到資工系辦公室。
 上奇科技聯絡業務: 林金穎 小姐

4. 作業繳交部落格 Homework Show @ DMC

 請修課同學在本篇文章中, 留下學號與 email , 我會發共同作者的邀請信給你, 讓你有權限可以在作業部落格繳交作業。
 

星期五, 1月 09, 2009

Note: 成績已經繳交送出

請同學直接上學校學生系統查詢自己成績即可...

祝 同學 假期愉快!
 

星期一, 1月 05, 2009

Note: 請檢查平時成績登記是否有誤?

目前成績的結算工作只完成同學的平時成績登錄與結算,
還有完成登記部分同學的自評成績,
尚未完成自評報告的同學, 請盡快上傳, 我快沒時間等了,
我下星期二要到日本東京發表論文, 所以星期五就會把成績全部送出去!


基本上, 若是 (互評+自評) > 50 的同學, 應該已經過關了,
換句話說, 你可以假設師評的成績為 10 分,

至於 "期末專案 Bonus" 的部分,
我會仔細看過同學撰寫專案的過程, 收穫多少,
再給同學加分!

請同學先看看成績登記是否有誤,
如果發現我登記錯了, 請直接在這邊回應就可以了!

成績初算 PDF 檔下載 (2009/01/07 9:00 AM 更新 專案 Bonus)

祝 大家 期末考 順利...
 

星期五, 1月 02, 2009

News: 指紋膠帶貼手 韓女成功闖日

指紋辨識是影像處理研究領域的老題目了, 在我還在當研究生的年代中, 實驗室的研究主題之一就是指紋辨識...
指紋膠帶貼手 韓女成功闖日

原始新聞連結
( 自由時報 2009/01/02 編譯鄭曉蘭 綜合報導 )

日本耗資數十億日圓的入境辨識系統,不敵一片小小的特製膠布!

一名南韓女子在掮客協助下,傳出利用特製膠布假造指紋,順利從日本青森機場入境,數月後才被相關單位查獲,驅逐出境。女子供稱還有多名南韓人以相同手法入境,日方正全力追查。

日本「讀賣新聞」一日以頭版頭條報導,1 名 51 歲南韓女子於 2007 年 7 月因違法居留被日方驅逐出境,去年 4 月卻持假護照,並且利用特製膠布偽造指紋,成功騙過青森機場的入境審查系統後入境,直到同年 8 月才在東京某公寓被逮,訊後被遣送回南韓。

調查指出,女子在南韓聽從掮客指示,購買飛往青森的機票,掮客還給她特製膠布,教她入境按指紋前將膠布貼在指頭上。日本入境管理局實驗證實,指頭上若貼市售膠帶按指紋,辨識系統會顯示「錯誤」訊息,故偽造指紋用的應為特製膠帶。

目前人在南韓的該名女子,接受媒體訪問時表示:「特製膠帶呈現膚色,觸感類似橡膠,上頭印有指紋圖樣。」她說,當初付出約台幣 47 萬元的代價給掮客。該掮客透露,已協助多名南韓人違法入境日本,選擇青森機場是因為小機場的審查較為鬆散。

為強化反恐對策,日本耗資 40 億日圓以上(約台幣 14 億 5000 萬元以上),自 2007 年 11 月開始實施外籍人士入境指紋以及面孔辨識系統。日本也成為繼美國之後,全球第二個實施指紋以及面孔入境審查制度的國家。

過去一年來,約有 936 萬名外籍入境旅客接受這項審查,其中有 846 人被日本拒絕入境。

國內鑑識專家: 理論可行

原始新聞連結
〔自由時報 2009/01/02 記者黃敦硯、蘇宇暉 台北報導〕

國內鑑識專家程曉桂表示,從未聽過可偽造指紋的特殊膠布,她推測很可能是先用凝膠或蠟做出指紋模型,再貼在膠布上,利用光學活體掃描感應紋路的特性騙過機器。她研判,有可能是移民官未注意到偷渡者在指紋上動手腳,讓其闖關成功。

據了解,指紋的形成,是因手指指腹有汗腺分布,會分泌汗液,當手摸到東西時,便留下指紋,鑑識人員可以經由化學方式讓指紋現形,在國外電影中仿造他人指紋的劇情,現實生活並不常見,但理論上是有可能做到的。

程曉桂猜測,韓籍女子躲避指紋檢查的方式,可能是類似夜市攤販利用蠟製作人手的原理,以凝膠或蠟等材料,在膠帶上製作指紋,再貼在偷渡者手指,藉以躲避機場指紋活體掃描機檢查。

目前的指紋辨識,主要透過指紋機採集指紋的「節點」,即紋路上的分岔、終止或打圈處的座標位置,然後利用辨識軟體比對指紋的特徵資訊,以確定指紋擁有者的身分,但一般的指紋機不會做太多偵測,所以有心人還是有可能用造假的手法通過辨識。

星期三, 12月 31, 2008

Note: 期末平時成績計算

由於同學的埋怨, 因此, 關於期末平時成績的計算, 缺交作業的同學, 該次成績請直接用 0 分計算 !

星期六, 12月 27, 2008

Note: 關於期末專案

由於期末專案並沒有在學期成績占明顯的份量,
因此, 我決定將用額外加分的方式來獎勵同學對於撰寫期末專案程式的努力。

注意: Bonus 分數無上限!

星期四, 12月 25, 2008

Note: 成績計算公式更改

原先的成績計算公式:

A = 100, B = 60, C = 20

初步決定調整為:

A = 100, B = 70, C = 30

換句話說, 就是 B, C 各加 10 分, A 已經到頂了, 沒法再加了!

我會請負責修改計分系統的同學儘快修改程式, 讓大家用新的分數計算平時成績!

Week 16: Final Project Programming (3)

1. 同學提出的問題討論:
 a. Drag-and-Drop 程式實作
   為什麼是在 Form 的 Event 上寫程式呢?
 b. 如何在 MainMenu 中加入分隔線?
   將 Caption 設定為 "-"

2. Linux 傳奇閱讀報告 互評分享

星期四, 12月 18, 2008

Week 15: Final Project Programming (2)

1. 本週課程延續上週的期末專案程式撰寫, 希望同學可以順利完成專案內容。

2. 完成本週報告之互評程序。

星期日, 12月 14, 2008

bnext: 誰是賈伯斯接班人?

數位時代雜誌 174 期 2008/11 pp. 106-108
原文連結

蘋果未來最關鍵的挑戰

絕美的產品設計與賈伯斯,似乎總是蘋果迷津津樂道的話題。賈伯斯擁有獨特的創新點子與個人魅力,往往成為產品銷售的重要推手。有賈伯斯的蘋果看起來一切美好,但若有一天賈伯斯退位了呢?誰才能成為萬中選一的接班者?

很難想像沒有賈伯斯(Steve Jobs)的日子。在最近全球金融風暴的超低氣壓籠照下,裁員、縮編、減少資本支出等關鍵詞,出現在國內外各種財經新聞標題中。也因此十月二十日蘋果公布第三季財報的亮眼表現後,當天即時新聞和隔天的版面頭條都放上這則消息。此時此刻,市場最缺的就是信心。

「在蘋果亮麗一季的背後」(Behind Apple's impressive quarter),這是《財星》(Fortune)雜誌網站隔天的頭條新聞標題,前言則是:「儘管經濟疲軟,賈伯斯向信眾們保證,蘋果仍將持續痛擊對手。」 他似乎具有某種魔力,總是能在對的時間,對的地點,做對的事。

源源不絕的創新魔力

一九七六年,越戰結束的第二年,大學輟學生賈伯斯和高中學長沃茲尼克(Steve Wozniak),也是另一位大學輟學生,在矽谷成立了蘋果電腦。兩位二十出頭的加州嬉皮,振奮了在海外打敗仗而信心低迷的美國社會,讓他們相信美國夢仍然存在。一九九七年,當個人電腦業因供過於求,開始走入低價,甫回任蘋果執行長的賈伯斯,旋即以一系列色彩炫麗的iMac電腦,告訴市場和消費者:「且慢,電腦還不是低價產品,起碼蘋果電腦不是。」其後的 iPod 和 iTunes,則為那些認為網路是侵權和盜版溫床的唱片業者,找到了商業模式。

更特別的,是他的魔力源源不絕,總讓市場驚艷。兩年前,當蘋果在紐約第五大道開起專賣店,與那些時裝和珠寶品牌比鄰而居,人們再次見識到這位金童點石成金的功力:「原來科技產品還可以這樣賣」。

《數位時代》去年底開辦的「遇見創新者」論壇,陸續邀請趨勢科技創辦人張明正、新浪網創辦人蔣顯斌和年代電視創辦人邱復生等擔任主講者。當這群在台灣被認為最具創新力的人,被問到「你認為最創新的人是誰」時,答案驚人地相似:「賈伯斯」。

伊夫接班呼聲最高

下一個問題,也是所有關心蘋果和賈伯斯的人所要追問的,不是賈伯斯還有哪些新概念要推出,而是在賈伯斯之後,誰能接班?這不僅是接下賈伯斯在蘋果的位子,還有他在美國社會和全球業界的地位。隨著賈伯斯癌症復發的消息不時傳出,以及兩個月前富比士網站誤貼他過世的新聞流出後,蘋果股價應聲重挫一五%,「誰是賈伯斯接班人」已成為必須盡快找到答案的問題。畢竟像先前可口可樂和麥當勞那種執行長因病猝逝,導致接班安排不及,造成領導真空,誰都不樂見。

目前呼聲最高的,是負責蘋果工業設計的靈魂人物伊夫(Jonathan Ive)。他是賈伯斯和蘋果過去十年重新成為媒體焦點的關鍵,也是賈伯斯每天熱線通話的對象。這位不到四十歲的英國設計師,精準詮釋了蘋果「Think Different」的精神,把當年另一位創辦人沃茲尼克做出「友善好用」產品的概念,做了新的演繹。

在蘋果還未浮出水面的接班人當中,伊夫的知名度最高,但他除了工業設計之外,在預測產業前景和銷售能力方面,是否具備賈伯斯的天分,將被一一檢驗。

 

悠遊矽谷和好萊塢的能力

首先是橫跨科技和娛樂業的能力。蘋果總部所在的庫柏提諾市(Cupertino),位於矽谷南邊,往南開車到好萊塢僅三小時車程,但兩地心靈距離遠大於此。科技和娛樂,是加州的兩大支柱產業,但彼此交流並不多。矽谷的主流是「工程師」(engineer)文化,專注某一項創新技術做到世界領先,再找市場;好萊塢的主流是「製作人」(producer)文化,從市場需求反向思考,去整合各種專才產生一個產品。

矽谷的代表人物是葛洛夫(Andy Grove,英特爾創辦人)和佩吉(Larry Page,Google創辦人),好萊塢的代表人物是盧卡斯(George Lucas,《星際大戰》製作人)和史匹柏(Steven Spielberg),但你很難想像葛洛夫和盧卡斯能對談並合作。

迄今,矽谷創業家經常出現在娛樂版的,只有賈伯斯和甲骨文創辦人艾利生(Larry Ellison)兩位。艾利生以休閒時開戰鬥機和參加帆船賽出名,但賈伯斯卻是率領皮克斯(Pixar)做動畫,與盧卡斯和史匹柏的夢工廠(Dream Works)競爭,並聯手迪士尼(Disney)與華納兄弟(Warner Bros)抗衡。賈伯斯既非工程師也非製作人,但悠遊於兩者間,在矽谷和好萊塢都闖出名堂,樹立很難被跨越的門檻。

其次,是銷售願景的能力。蘋果被多位品牌學者定位為「宗教品牌」(cult brand),消費者就像教徒般忠誠且狂熱,把賈伯斯當成教主崇拜,每次他一出場發言,都讓人引頸期盼。在多本研究蘋果和賈伯斯的書裡都提到,許多後來成功的想法和產品點子,並非來自賈伯斯,甚至一開始他還提了反對意見。但是等到產品上市,賈伯斯將其包裝成願景並推銷出去的演講功力,卻是關鍵。《財星》雜誌以「忠誠信徒」(the faithful)來形容蘋果迷。

沃茲尼克回憶,當年開發蘋果一號時,需要很多晶片,但受限於經費,只能等待,可是賈伯斯總有辦法,「拿起電話打到晶片公司,他們就願意免費送晶片過來測試。」這種能力可否複製或轉移,是賈伯斯接班人的一大難題。

順利交棒才能再創蘋果高峰

賈伯斯和比爾.蓋茲(Bill Gates)創業時間及經歷類似,蓋茲雖然事業做更大、財富更多,但影響力只在電腦業,魅力也不如賈伯斯,但他於今年七月順利交棒,而且交棒計畫在幾年前就啟動。沒有蓋茲的微軟,一切正常運作,但是沒有賈伯斯的蘋果,結局則是一個大大的問號。

這兩人三十多年來亦敵亦友,很像職業網球界的山普拉斯(Pete Sampras)和阿格西(Andre Agassi)這兩位美國選手。山普拉斯專注打球,贏得大滿貫數目遠多於阿格西,但在球場以外的生活很普通,連上麥當勞排隊買漢堡都被當新聞報。相較之下,自己買私人飛機當交通工具、有過兩次婚姻外加諸多緋聞、球場造型標新立異的「壞小子」阿格西,身上有更多賣點,也讓網球這項運動被廣為認識。

山普拉斯退休後,新生代球王費德勒(Roger Federer)很快頂上來,未來成就很可能超越山普拉斯;但是阿格西退休後,現役選手沒有一位像他這樣,球場上能拿冠軍,球場下一樣精采。山普拉斯退休前,就看好費德勒將接下他的位置,但是下一個阿格西在哪裡,迄今沒有答案。

也因為挑戰更大,如果賈伯斯能順利找到接班人並交棒,那將是他再創生涯高峰的另一個起點,而不是終點;如果失敗,賈伯斯的這趟神奇之旅可能止步於此。