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

2011年10月28日 星期五

Homework 1: Histogram & Histogram Equalization

1.Form 設計

為了讓圖片及直方圖都能夠以較大的圖片顯示出來, 因此, 在 Form1 上, 放置了 PageControl 元件, 讓影像和直方圖分別放在不同 Page 之中。





在 Histogram Page 中, 直方圖是用一張高 256 寬 768 的圖形來繪製, 寬之所以為 768 的原因是需要顯示紅、綠、藍等三個色彩的直方圖, 每個色彩需要 256 條直線, 一共 256*3=768 條直線繪製完整的直方圖。

直方圖分成兩類, 第一類是原始的直方圖, 第二類是累積直方圖。在 Histogram Page 中, 可以使用 RadioGroup 元件來選定要顯定的直方圖種類。


原始直方圖


累積直方圖

除此, 還可以使用 GroupBox 來選定要顯示的色彩直方圖, 下圖是三個色彩均選擇所呈現出來的直方圖。


原始直方圖


累積直方圖

Up 與 Down 兩個 BitBtn 元件, 則是可以用來放大或是縮小直方圖的垂直線條的長度, 每按一下 Up 按鈕, 就會放大 1.2 倍; 同理, 每按一下 Down 按鈕, 就會縮成原來長度的 0.8 倍。另外, Save Button 元件則是提供將直方圖影像元件儲存成 bmp 檔案。

直方圖 image 元件, 在 OnMouseMove Event 中, 讀取滑鼠位於 image 元件的 X 座標, 將其轉換成色階, 再將該色階的像素個數, 比率, 累積像素總數及其比率等基本資訊用 Label 元件顯示出來。

2. 實驗結果:

直方圖均化處理的目的是將低對比的影像轉化成高對比的影像, 因此特別從以前拍的相片找到一張多年前黃昏後, 在北投貴子坑步道, 突然發現一隻紫嘯鶇, 在急忙拍攝的情況下, 忘了開閃光燈, 所以拍成黑壓壓一片。



整張影像的對比度相當低, 如果不仔細看, 會以為是一張全黑的圖片。



直方圖顯示大部分的色彩都集中在色階最暗的地方。 



經過直方圖均化處理過後的影像, 對比已經被強化了, 步道完全顯示出來了, 紫嘯鶇也看得見了。



直方圖顯示出色彩已經擴展到 0 - 255 之間, 不再集中在暗的區域。

2011年10月26日 星期三

Week 8: 銳化空間濾波器









Homework 2: 空間濾波器實作

本次作業分成以下 3 部分:

a. 實作以下三類空間濾波器: 平滑化, 銳化, 中值濾波器。

b. 對不同圖片進行實驗。

c. 實驗結果討論

d. 心得

本作業繳交日期: 2011/11/11

2011年1月11日 星期二

Note: 2010F 作業成績公布

有缺交作業者, 請盡快繳交, 預定星期三晚上星期四早上, 送出成績!

2010年12月24日 星期五

Week 15: 濾鏡處理 filtering

1. 摺積 (convolution): Joy of Convolution

2. 影像處理的濾鏡處理, 其原理本身就是摺積運算的二維情況!

 範例程式: DIP2010-SP-Filtering

作業三: 3D 立體影像創作

 本次作業分成以下三部分:

 1. 用數位相機分別拍攝左眼影像與右眼影像

 2. 用 C++ Builder 將上述兩張影像創作出一張紅藍濾鏡的 3D 立體影像。

 3. 討論 3D 影像創作之效果

作業四: 濾鏡處理程式

 用 C++ Builder 撰寫一個 3*3 的濾鏡處理程式, 功能包括:

 1. 平滑化 (smoothing)。

 2. 銳利化 (sharping)

 3. 中位數濾鏡處理 (medium filtering), 去除胡椒鹽雜訊。




2010年12月17日 星期五

Week 14: 程式實作: 直方圖均化處理 (hishogram equalization)

1. 本週課程進度為程式實作課程, 主題是: 直方圖均化處理。
 請同學在課堂上撰寫程式, 將一張拍攝對比不是很好的影像做直方圖均化處理。

直方圖均化處理前影像:



直方圖均化處理後影像:


 
作業二: 直方圖顯示與直方圖均化處理

 本次作業分成以下 3 部分:

1. 用 C++ Builder 將一張影像的直方圖與其相關基本訊息顯示出來。

2. 用 C++ Builder 將一張對比不明顯的影像用直方圖均化處理後, 重新顯示出來。

3. 心得與討論
 

2010年11月26日 星期五

Week 11: Histogram 直方圖統計

1. 作業一的延伸討論:

Binary Image 演算法與 範例程式 講解

2. Region Growing 演算法與 範例程式 講解

3. Histogram 直方圖統計 (作業二: Part 1)

From Image Processing Class

2010年11月8日 星期一

Week 8: 量化程式之實作與討論 (作業一)

作業一:

繳交期限: Week 8 (2010/11/05)

將一張彩色影像轉成灰階影像後, 再對灰階影像進行色彩量化處理, 分別用 128 色, 64 色, 32 色, 16 色, 8 色, 4 色, 2 色(黑白影像) 顯示。

 原圖: 彩色影像

  

 灰階影像: 256 色階
  

 灰階影像: 128 色階

  

 灰階影像: 64 色階

  

 灰階影像: 32 色階

  

 灰階影像: 16 色階

  

 灰階影像: 8 色階

  

 灰階影像: 4 色階

  

 黑白影像(binary image)

  
 
 延伸討論:

 1. 由於同學要求: "希望老師可以指導如何使用內建的物件直接達成PixelFormat:= pf2bit 的方法" , 因此, 我特地將如何直接將一張 PixelFormat = pf24bit 的彩色影像, 直接轉換成一張新的 PixelFormat = pf1bit 的黑白影像的範例程式提供給同學參考。

  範例程式: DIP2010-SP-BinaryImage.c

  

  同學們可以使用滑鼠右鍵, 看影像檔案的基本資訊, 如下圖示,

  

  就會看到這張黑白影像 BinaryModeBird.bmp 的檔案大小是 9.77 KB (10,006 bytes),

  

  而原先的黑白檔案 BinaryBird.bmp, 其實只有顯示出黑白二色, 儲存格式還是 PixelFormat = pf8bit 的灰階影像, 檔案大小是 78.74 KB (80,630 bytes), 如下圖所示。

  
 

2010年1月8日 星期五

Week 17: Edge Detection (梯度計算)

1. 梯度是什麼?

2. Sobel 運算子

3. 作業 7 : Sobel 運算子實作 (Sobel Operator Implementation)

4. 作業 8 : 期末心得與檢討報告 ( 可加分 1~3 分 )

2009年12月25日 星期五

Week 15: 空間濾波器實作(spatial filter Implementation)

本週我們請同學們直接在課堂上撰寫程式:

1. 請同學先執行範例程式 IPC-2009F-SP07.txt

2. 請同學將範例程式改成既可以處理彩色影像, 也可以處理灰階影像的程式:

3. 請同學將範例程式改成既可以由使用者輸入 filter 的功能。


作業6 :
完成 空間濾波器 (spatial filtering) 程式實作。
    程式必須能夠自動判斷影像模式, 由使用者輸入依照需求輸入不同的 filters。

2009年11月29日 星期日

Note: 本學期作業一覽表

在同學的期中課程檢討報告中, 有同學提到不知道哪些程式是作業, 要繳交到 作業分享部落格 ? 哪些只是課堂上的程式練習, 不需繳交到課程部落格? 因此, 我特地將本學期到目前為止的作業一覽表公告出來, 請同學盡快繳交作業。

作業1 : 開啟並讀取一張影像到二維陣列中。
    公告於 Week 02

作業2 : 影像旋轉。
    公告於 Week 04

作業3 : 請完成類似 Photoshop 或 PhotoImpact 的 Histogram 顯示功能。
    公告於 Week 07

作業4 : 完成乘冪律 (Gamma) 轉換程式實作。
    公告於 Week 09

作業5 : 完成位元平面 (bit-planes) 程式實作。
    公告於 Week 11

作業6 : 完成空間濾波器 (spatial filtering) 程式實作。
    公告於 Week 15

作業7 : 完成Sobel 運算子實作 (Sobel Operator Implementation)
    公告於 Week 17

作業8 : 期末心得與檢討報告 ( 可加總分 1~3 分 )
    公告於 Week 17
 

想要知道課程部落格的最新狀況, 除了訂閱本課程部落格之外, 也可以使用 blogger 的追蹤功能, 除此, Follow 我的噗浪 也是一種方式啦!
 

2009年11月27日 星期五

Week 11: 逐段線性轉換函數



Homework 5: 完成位元平面 (bit-planes) 程式實作。

PS1: 負片範例程式 已經上網...

2009年11月13日 星期五

Week 09: 乘冪律(Gamma)轉換程式實作

§ 3.2.3 乘冪律(Gamma)轉換  課本 P. 107

  s = c * r ^ γ        ( 3.2-3 )
 


圖 3.8 (a) 人類破碎脊椎的磁共振影像;



圖 3.8 (b) 執行 (3.2-3) 式轉換後的結果; γ = 0.6



圖 3.8 (c) 執行 (3.2-3) 式轉換後的結果; γ = 0.4



圖 3.8 (d) 執行 (3.2-3) 式轉換後的結果; γ = 0.3 



圖 3.9 (a) 空照影像;



圖 3.9 (b) 執行 (3.2-3) 式轉換後的結果; γ = 3.0



圖 3.9 (c) 執行 (3.2-3) 式轉換後的結果; γ = 4.0




圖 3.9 (d) 執行 (3.2-3) 式轉換後的結果; γ = 5.0


彩色影像的實驗結果:



原始彩色圖



 γ = 0.3 



 γ = 2.0 

 
Homework 4: 完成乘冪律(Gamma)轉換程式實作。
 

2009年10月30日 星期五

Week 07: 簡介用於數位影像處理的數學工具

本週我們要討論的主題是 § 2-6 簡介用於數位影像處理的數學工具, 這些數學工具真的很好用, 我們下學期的 互動視訊遊戲製作 這門課, 就會用到這些工具來撰寫程式。



第三個作業: 請完成類似 Photoshop 或 PhotoImpact 的 Histogram 顯示功能。
 

 

2009年10月9日 星期五

Week 04: 影像如何旋轉? (1)



課堂討論主題:
1. 影像旋轉的演算法
 a. 什麼是演算法?
 b. 要解決的問題是什麼?
 c. 影像旋轉演算法的輸入是什麼?
 d. 影像旋轉演算法的輸出是什麼?
 e. 維基百科上的 旋轉 條目
 
本課程第二個作業: 影像旋轉

2009年9月28日 星期一

Week 02: 如何開啟並讀取一張影像?

1. 本週的程式示範是如何開啟一張影像?

2. 如果同學從來沒有使用過 C++ Builder, 請務必準備一本 C++ Builder 的相關使用手冊, 這樣會對你撰寫本課程作業有很大的助益。我們推薦的是:

More about C++ Builder 6完全攻略

3. 本課程第一個作業是: 開啟並讀取一張影像到二維陣列中。

 作業參考網頁
 林詣棋學長的優良作業

注意: 如果是一張彩色影像, 那每個像素就會有紅, 綠, 藍三個顏色的資料。在這個資料中, 用 0 ~ 255 值(unsigned char) 來告訴你紅色的成分有多紅, 綠色的成分有多綠, 藍色的成分有多藍。因此, 你勢必要動態宣告三個二維陣列來儲存這些色彩資料。

4. 本週課本指定閱讀範圍:
 從第一章起到第二章第三節 (pp. 1 - 49)