image histogram and histogram equalization 影像直方圖與直方圖均化
DESCRIPTION
Image Processing Class #3TRANSCRIPT
影像直方圖與直方圖均化Image Histogram and
Histogram Equalization
影像處理Oct. 20, 2014
銘傳資工李遠坤副教授編撰
大綱
1. 色彩統計 Color Statistics
2. 直方圖與累積直方圖
Histogram and Cumulative Histogram
3. 畫布元件型態 TCanvas ( C++ Builder )
4. 直方圖均化 Histogram Equalization
2
色彩統計
Color Statistics
3
色彩統計 Color Statistics
• 為了進行特定的影像處理程序,有時必須先針對影像內
容進行分析。
• 色彩統計就是忽略每一個像素的座標資料,只針對色彩
出現的次數 (或頻率)進行統計。
4
• 以灰階影像為例,所有可能出現的色彩有 0 – 255 共 256
種灰階值。因此,撰寫一個程式針對所有不同色階進行
統計是容易的。
• 除了針對各個色階出現的次數
(或頻率)進行統計之外,更可
進一步的計算平均值(mean)、
變異數(variance)、中位數
(median)…等,以利進行分析。
色彩統計 Color Statistics (續)
5
• 若是全彩影像,所有可能出現的色彩共有 224種不同的色
彩值。要撰寫一個程式針對所有不同色彩值進行統計,
在宣告儲存各個色彩出現次數
的陣列,就會遭遇到困難。
• 取而代之的作法就是分別針對
紅、綠、藍等三原色進行統計。
或是先將色彩轉換成明亮度後,
再進行統計。
色彩統計 Color Statistics (續)
6
直方圖與累積直方圖
Histogram and Cumulative Histogram
7
直方圖 Histogram
• 直方圖在直覺上和統計學上的機率密度函數(probability
density function, pdf )非常相似。
• 影像色彩直方圖就是
針對所有可能的色彩,
進行像素數量統計,
並將統計結果以直條
圖的方式呈現。
8
直方圖 Histogram (續)
9
灰階影像 Waterlily Photoshop 所顯示的直方圖
直方圖 Histogram (續)
10
全彩影像 Waterlily
Photoshop 所顯示的直方圖
累積直方圖 Cumulative Histogram
• 累積直方圖在直覺上和統計學上的累積密度函數
(cumulative density function, cdf )非常相似。
• 累積直方圖(cumulative histogram) 就是將直方圖中,統計
色階為小於或等於該色階的像素總和。統計結果同樣以
直條圖的方式呈現。
11
畫布元件型態 TCanvas
( C++ Builder )
12
畫布元件型態 TCanvas
• C++ Builder 的影像元件型態 TImage中,包含一個畫布元
件型態 TCanvas。透過畫布元件(canvas),使用者可以直
接在影像元件中作畫。
• 注意!畫布元件僅僅在執行時期(runtime)是可用的
(available)元件,因此,針對畫布元件的所有處理,都必
須透過撰寫程式的方式進行。
• 接下來,我們將介紹一些 C++ Builder 所提供畫布元件型
態中的常用元件與函式,以便完成影像色彩直方圖的繪
製。
13
畫布元件型態 TCanvas (續)
• 畫筆(Pen) 與刷筆(Brush)是畫布元件中最常用的兩項元件。
畫筆主要是用來在畫布上畫線條,至於刷筆則是用來針
對畫布的特定區域進行大面積處理。
14
畫布元件型態 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
畫布元件型態 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
畫布元件型態 TCanvas (續)
• TCanvas提供移動畫筆至特定座標的函式MoveTo。
// 將畫筆移到座標 (100, 100)。
Image1->Canvas->MoveTo(100, 100);
• TCanvas提供從畫筆目前座標畫一條線到特定座標的函式
LineTo。
//從畫筆目前座標 (100, 100)畫一條線到座標 (200, 100)。
Image1->Canvas->LineTo(200, 100);
17
畫布元件型態 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
畫布元件型態 TCanvas (續)
• TBrush亦含有 Property Style,用來設定刷筆的風格,
//指定刷筆風格為實心風格。
Image1->Canvas->Brush->Style = bsSolid;
//指定刷筆風格為斜交叉風格。
Image1->Canvas->Brush->Style = bsDiagCross;
19
畫布元件型態 TCanvas (續)
• TCanvas提供將特定舉行區域填滿的函式 FillRect。
// 將刷筆將 Rect(50, 100, 80, 200)區域填滿。
Image1->Canvas->FillRect(Rect(50, 100, 80, 200));
20
直方圖均化
Histogram Equalization
21
直方圖均化 Histogram Equalization
• 直方圖均化(histogram equalization) 是一種自動調整影像
對比的演算法。
• 直方圖均化演算法非常簡單,只要將原影像 f 的像素色彩
值 f(x, y) 的累積密度函數值乘上最大色階值,即為調整後
影像 g 的像素色彩值 g(x, y)。
g(x, y) = cdf ( f(x, y) ) * 255
22
23
24