Image histogram and histogram equalization 影像直方圖與直方圖均化

24
影像直方圖與直方圖均化 Image Histogram and Histogram Equalization 影像處理 Oct. 20, 2014 銘傳資工 李遠坤 副教授 編撰

description

Image Processing Class #3

Transcript of Image histogram and histogram equalization 影像直方圖與直方圖均化

Page 1: Image histogram and histogram equalization 影像直方圖與直方圖均化

影像直方圖與直方圖均化Image Histogram and

Histogram Equalization

影像處理Oct. 20, 2014

銘傳資工李遠坤副教授編撰

Page 2: Image histogram and histogram equalization 影像直方圖與直方圖均化

大綱

1. 色彩統計 Color Statistics

2. 直方圖與累積直方圖

Histogram and Cumulative Histogram

3. 畫布元件型態 TCanvas ( C++ Builder )

4. 直方圖均化 Histogram Equalization

2

Page 3: Image histogram and histogram equalization 影像直方圖與直方圖均化

色彩統計

Color Statistics

3

Page 4: Image histogram and histogram equalization 影像直方圖與直方圖均化

色彩統計 Color Statistics

• 為了進行特定的影像處理程序,有時必須先針對影像內

容進行分析。

• 色彩統計就是忽略每一個像素的座標資料,只針對色彩

出現的次數 (或頻率)進行統計。

4

Page 5: Image histogram and histogram equalization 影像直方圖與直方圖均化

• 以灰階影像為例,所有可能出現的色彩有 0 – 255 共 256

種灰階值。因此,撰寫一個程式針對所有不同色階進行

統計是容易的。

• 除了針對各個色階出現的次數

(或頻率)進行統計之外,更可

進一步的計算平均值(mean)、

變異數(variance)、中位數

(median)…等,以利進行分析。

色彩統計 Color Statistics (續)

5

Page 6: Image histogram and histogram equalization 影像直方圖與直方圖均化

• 若是全彩影像,所有可能出現的色彩共有 224種不同的色

彩值。要撰寫一個程式針對所有不同色彩值進行統計,

在宣告儲存各個色彩出現次數

的陣列,就會遭遇到困難。

• 取而代之的作法就是分別針對

紅、綠、藍等三原色進行統計。

或是先將色彩轉換成明亮度後,

再進行統計。

色彩統計 Color Statistics (續)

6

Page 7: Image histogram and histogram equalization 影像直方圖與直方圖均化

直方圖與累積直方圖

Histogram and Cumulative Histogram

7

Page 8: Image histogram and histogram equalization 影像直方圖與直方圖均化

直方圖 Histogram

• 直方圖在直覺上和統計學上的機率密度函數(probability

density function, pdf )非常相似。

• 影像色彩直方圖就是

針對所有可能的色彩,

進行像素數量統計,

並將統計結果以直條

圖的方式呈現。

8

Page 9: Image histogram and histogram equalization 影像直方圖與直方圖均化

直方圖 Histogram (續)

9

灰階影像 Waterlily Photoshop 所顯示的直方圖

Page 10: Image histogram and histogram equalization 影像直方圖與直方圖均化

直方圖 Histogram (續)

10

全彩影像 Waterlily

Photoshop 所顯示的直方圖

Page 11: Image histogram and histogram equalization 影像直方圖與直方圖均化

累積直方圖 Cumulative Histogram

• 累積直方圖在直覺上和統計學上的累積密度函數

(cumulative density function, cdf )非常相似。

• 累積直方圖(cumulative histogram) 就是將直方圖中,統計

色階為小於或等於該色階的像素總和。統計結果同樣以

直條圖的方式呈現。

11

Page 12: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas

( C++ Builder )

12

Page 13: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas

• C++ Builder 的影像元件型態 TImage中,包含一個畫布元

件型態 TCanvas。透過畫布元件(canvas),使用者可以直

接在影像元件中作畫。

• 注意!畫布元件僅僅在執行時期(runtime)是可用的

(available)元件,因此,針對畫布元件的所有處理,都必

須透過撰寫程式的方式進行。

• 接下來,我們將介紹一些 C++ Builder 所提供畫布元件型

態中的常用元件與函式,以便完成影像色彩直方圖的繪

製。

13

Page 14: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• 畫筆(Pen) 與刷筆(Brush)是畫布元件中最常用的兩項元件。

畫筆主要是用來在畫布上畫線條,至於刷筆則是用來針

對畫布的特定區域進行大面積處理。

14

Page 15: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• 畫筆元件型態 (TPen) 包含 Property Color,用來設定畫筆

的顏色。

// 用預先定義的常數 clRed、clGreen... 指定畫筆的顏色。

Image1->Canvas->Pen->Color = clRed;

//用RGB marco指定畫筆的顏色。

Image1->Canvas->Pen->Color = (TColor) RGB(255,0,0);

//用色彩選擇對話視窗來指定畫筆的顏色。

Image1->Canvas->Pen->Color = ColorDialog1->Color;

15

Page 16: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• TPen內含 Property Width,用來設定畫筆的寬度(粗細程

度),整數資料型態,其內定值為 1。

//指定畫筆寬度為 2。

Image1->Canvas->Pen->Width = 2;

• TPen亦含有 Property Style,用來設定畫筆的風格,列舉

資料型態{ psSolid, psDash, psDot, psDashDot, DashDotDot },

其內定值為 psSolid。

//指定畫筆風格為點線風格。

Image1->Canvas->Pen->Style = psDot;

16

Page 17: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• TCanvas提供移動畫筆至特定座標的函式MoveTo。

// 將畫筆移到座標 (100, 100)。

Image1->Canvas->MoveTo(100, 100);

• TCanvas提供從畫筆目前座標畫一條線到特定座標的函式

LineTo。

//從畫筆目前座標 (100, 100)畫一條線到座標 (200, 100)。

Image1->Canvas->LineTo(200, 100);

17

Page 18: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• 刷筆元件型態 (Tbrush) 包含 Property Color,用來設定刷

筆的顏色,其設定的方法和設定畫筆的方法是一樣的。

// 用預先定義的常數 clRed、clGreen... 指定刷筆的顏色。

Image1->Canvas->Brush->Color = clGreen;

//用RGB marco指定刷筆的顏色。

Image1->Canvas->Brush->Color = (TColor) RGB(0, 255, 0);

//用色彩選擇對話視窗來指定刷筆的顏色。

Image1->Canvas->Brush->Color = ColorDialog1->Color;

18

Page 19: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• TBrush亦含有 Property Style,用來設定刷筆的風格,

//指定刷筆風格為實心風格。

Image1->Canvas->Brush->Style = bsSolid;

//指定刷筆風格為斜交叉風格。

Image1->Canvas->Brush->Style = bsDiagCross;

19

Page 20: Image histogram and histogram equalization 影像直方圖與直方圖均化

畫布元件型態 TCanvas (續)

• TCanvas提供將特定舉行區域填滿的函式 FillRect。

// 將刷筆將 Rect(50, 100, 80, 200)區域填滿。

Image1->Canvas->FillRect(Rect(50, 100, 80, 200));

20

Page 21: Image histogram and histogram equalization 影像直方圖與直方圖均化

直方圖均化

Histogram Equalization

21

Page 22: Image histogram and histogram equalization 影像直方圖與直方圖均化

直方圖均化 Histogram Equalization

• 直方圖均化(histogram equalization) 是一種自動調整影像

對比的演算法。

• 直方圖均化演算法非常簡單,只要將原影像 f 的像素色彩

值 f(x, y) 的累積密度函數值乘上最大色階值,即為調整後

影像 g 的像素色彩值 g(x, y)。

g(x, y) = cdf ( f(x, y) ) * 255

22

Page 23: Image histogram and histogram equalization 影像直方圖與直方圖均化

23

Page 24: Image histogram and histogram equalization 影像直方圖與直方圖均化

24