Image histogram and histogram equalization 影像直方圖與直方圖均化
description
Transcript of Image histogram and histogram equalization 影像直方圖與直方圖均化
影像直方圖與直方圖均化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