範例:一維與二維柱狀圖
使用
imhist、imhist2 及
hist2d 函數可產生一維或二維柱狀圖。
如需使用此範例的資訊,請參閱
<關於圖像處理範例>。
imhist
此函數會透過將強度範圍分為 n 個柱狀,產生矩陣 M 之元素的柱狀圖。每個柱狀包含擬合其強度等級範圍的像素數。例如,若 n = 256,則會針對 8 位元灰階圖像中每個可能的強度等級各有一個柱狀。若有 256 個以下的柱狀,強度等級會以下列方式分為不同的柱狀:
柱狀標籤設定開始於 0。若有 256 個以上的柱狀,柱狀大小會小於 1。
1. 定義小型矩陣,以查看柱狀圖的數值與外觀之間的關係。
2. 定義柱狀數,以將 imhist 函數套用至以上矩陣。
由於 n = 255,因此 256 個強度等級每一個皆會有自己的獨立柱狀。如矩陣 P 所示,唯一應計算多次的柱狀為 150。
3. 繪製強度等級的柱狀圖。
4. 將 n 設為較小的數字 (例如 5),並觀察差異。
由於 n = 5,因此 256 個強度等級必須分為 5 個不同的柱狀。柱狀 0 包含 0 至 256/5 的強度值,柱狀 1 包含 256/5 至 512/5 的值,依此類推。
如矩陣 P 與以上柱狀圖所示,強度值的分佈如下:
◦ 0、30、40 位於柱狀 0 (0-51)
◦ 柱狀 1 (52-103) 中沒有任何強度值
◦ 120 與三個 150 位於柱狀 2 (103-154)
◦ 200 位於柱狀 3 (154-205)
◦ 240 位於柱狀 4 (205-256)
(pattern.bmp)
6. 將 imhist 函數套用至圖像。
空白 (強度值=255) 在圖像中會顯示為右側的突波。其他柱狀中會顯示黑色與其他不同的灰色色調。
7. 計算柱狀 0 (黑色) 與柱狀 255 (白色) 中的項目數。
不同的灰色區域網底在圖片中會顯示為延著 x 軸的徐波。
imhist2
利用此函數可以柱狀繪出位於 0–255 值域外的數據。
1. 定義包含 0–255 值域以外的元素之矩陣。
2. 定義柱狀數,並計算 n-bin 柱狀圖。
3. 計算 n 個柱狀的端點。
hist2d
此函數產生兩個圖像 M 與 N 的二維柱狀圖,並在每個維度中建立 n 個柱狀。M 與 N 的大小必須相同。若兩張圖像在強度相似處的像素數相似,則 hist2d 的輸出矩陣會有強對角。此函數將 0–255 值域分為 n 個柱狀。
1. 定義柱狀數與兩個大小相等的圖像矩陣。
2. 搭配使用向量化運算子與以上定義的 bin_label 函數,可計算 P 與 Q 的柱狀數。
二維柱狀圖是 n x n 矩陣,只要 Pbins 之元素的柱狀數為 c,且 Qbins 之對應元素的計數為 r,即會在欄 c 與列 r 計數一次。例如,Pbins 與 Qbins 的第一個元素為 0 與 2,因此會在柱狀圖矩陣的欄 0、列 2 產生一個計數。
3. 先產生零矩陣再加入計數,以計算柱狀圖矩陣。
4. 比較以上輸出與 hist2d 的輸出。
5. 下列彩色圖像提供需更具體的範例。
(smallwar.bmp)
6. 使用
extract 函數分別萃取綠色與藍色色差,以比較兩個顏色色差。
7. 顯示二維柱狀圖。
(hist2d.bmp)
8. 將二維柱狀圖顯示為對數刻度上的強度圖像。
檢查圖像並觀察不同的強度。二維柱狀圖的強對角表示對應位置之大部份像素的強度類似。兩個顏色色差來自同一張相片是很合理的一件事。若兩個圖像的材質迥異,則對角將比較不明顯。