第四章點處理4.1 前言

Download Report

Transcript 第四章點處理4.1 前言

第四章 點處理
4.1 前言
• 只要是影像處理運算就會轉換像素的灰階值。
• 影像處理運算可以按照進行轉換時所需的資訊
分成三個等級。
• 複雜度由高至低可排列如下:
1. 轉換(transforms)
2. 鄰域處理(neighborhood processing )
3. 點運算(point operations)
1
第四章 點處理 第72頁
圖 4.1
(
點
運
算
)
2
第四章 點處理 第72頁 圖4.1
圖 4.1
3
4.2 數學運算
• 數學運算對影像中的每個像素灰階值會進行下
列簡單的函數運算。
ex: y=x±C, y=Cx
• 不管是哪一種情況都必須稍微調整輸出結果,
讓結果為落在0 . . . 255 的範圍之內的整數。
4
第四章 點處理 第73頁
圖 4.3
5
第四章 點處理 第74.75頁 圖4.3
圖 4.4、表 4.1
6
第四章 點處理 第75頁 圖4.4
4.2 數學運算
• 補色
– 灰階影像的補色(complement)就是對應到相片的
負片。
– 若影像矩陣m 屬於double 形態(0.0 至1.0): 1-m
– 若為uint8形態影像(0至255): 255-m
7
第四章 點處理 第76頁
圖 4.6
8
第四章 點處理 第76.77頁 圖4.6
4.3 直方圖(灰階值分布圖)
• 灰階影像的直方圖(histogram)是由其灰階值統計量
所構成,也就是一張標示每個灰階值在影像中出現次
數的圖表。>>imhist函數
• 對比不明顯的
影像可透過擴
展其灰階分布
來加強對比:
-直方圖擴展法。
-直方圖等化。
9
第四章 點處理 第78頁
4.3.1 直方圖擴展法(對比擴展法)
• 假設現有如圖4.9 所示影像直方圖,其灰階分
布ni 如下表:
• 在此可執
行圖4.9
右半部之
片段線性
函數。
10
第四章 點處理 第79頁
4.3.1 直方圖擴展法(對比擴展法)
• 此函數可依照下列方程式將灰階層次5 至9 擴
展成灰階層次2 至14。
• i 是原始灰階層次,j 是轉換後的結果。
11
第四章 點處理 第79頁
圖 4.10
• imadjust 的用法
• imadjust對於double、uint8或uint16
形態的影像執行效果一樣好。
• a、b、c 和d 的數值必須介於0
與1 之間。
• 此函數會在必要的時候自動將
影像im 轉換為double形態。
• imadjust(im,[a,b],[c,d])
注意:imadjust
與圖4.9 顯示的運
算方式不盡相同。
12
第四章 點處理 第80頁 圖4.10
4.3.1 直方圖擴展法(對比擴展法)
• imadjust函數還有另一個可選用的參數:
gamma值
13
第四章 點處理 第80.81頁
圖 4.12 & 4.13
14
第四章 點處理 第81.82頁 圖4.12
4.3.1 直方圖擴展法(對比擴展法)
• 片段線性擴展函數
• 函數的核心便為如下所示的程式片段:
其中im 是輸入的影像,out是輸出的影像。
15
第四章 點處理 第83頁
圖 4.16
參考圖 4.15
16
第四章 點處理 第83.84頁 圖4.16
Function histpwl
function out = histpwl(im,a,b)
%
% HISTPWL(IM,A,B) applies a piecewise linear transformation to the pixel values
% of image IM, where A and B are vectors containing the x and y coordinates
% of the ends of the line segments. IM can be of type UINT8 or DOUBLE,
% and the values in A and B must be between 0 and 1.
%
% For example:
N=length(a);
%
out=zeros(size(im));
% histpwl(x,[0,1],[1,0])
%
for i=1:N-1
% simply inverts the pixel values.
pix=find(im>=a(i) & im<a(i+1));
%
out(pix)=(im(pix)-a(i))*(b(i+1)-b(i))/(a(i+1)-a(i))+b(i);
classChanged = 0;
end
if ~isa(im, 'double'),
classChanged = 1;
pix=find(im==a(N));
im = im2double(im);
out(pix)=b(N);
end
if length(a) ~= length (b)
error('Vectors A and B must be of equal size');
17 end
if classChanged==1
out = uint8(255*out);
end
4.3.2 直方圖等化
• 完全自動的處理方式。
• 假設影像中有L 個不同的灰階值0, 1, 2, . . . , L –
1。在影像中出現ni 次灰階值i
n0 + n1 + n2 + ... + nL-1 = n
• 範例: 假設一個4 位元灰階影像灰階直方圖如
圖4.17 所示,其灰階值分布ni如下表:
18
第四章 點處理 第85頁
4.3.2 直方圖等化
(L-1)/n
19
第四章 點處理 第86頁
圖 4.19
• histeq
20
第四章 點處理 第87頁 圖4.19
圖 4.20
21
第四章 點處理 第88頁 圖4.20
圖 4.21
22
第四章 點處理 第88.89頁 圖4.21
4.3.2 直方圖等化
• 運作原理
– 如果可以將影像視為連續函數f(x, y),將直方圖視
為某一範圍灰階值出現次數的積分,就可以將直
方圖當作機率密度函數來處理。
23
第四章 點處理 第89頁
4.4 查詢表格
• 使用查詢表格(lookup table)(縮寫LUT)來
執行點運算會十分有效率。
• 舉例來說,「除以2」的LUT 表格如下:
• 若T 為MATLAB的查詢表格,im為影像,則可
使用下列簡單指令執行表格查詢:
24
第四章 點處理 第90頁
4.4 查詢表格
• 例如
>> b = b+1;
• 再舉一個例子,假設我們要用圖
4.23 的對比擴展函數執行LUT。
代入4.3.1節中的方程式,得到三個直線方程
式為:
25
第四章 點處理 第90頁
圖 4.23
26
第四章 點處理 第91頁 圖4.23