影像的點運算
1、灰度直方圖
灰度直方圖描述了一幅影像的灰度級統計資訊,主要應用于影像分割和影像灰度變換等處理程序中,
1.1、理論基礎
從數學上來說,影像直方圖描述影像的各個灰度級的統計特性,它是影像灰度值的函式,統計一幅影像中各個灰度級出現的次數或概率,有一種特殊的直方圖叫做歸一化直方圖,可以直接反映不同灰度級出現的頻率,
從圖形上來說,灰度直方圖是一個二維圖,橫坐標為影像中各個像素點的灰度級別,縱坐標表示具有各個灰度級別的像素在影像中出現的次數或概率,
灰度直方圖的計算是根據其統計定義進行的,影像的灰度直方圖是一個離散函式,它表示影像每一灰度級與該灰度級出現的頻率的對應關系,假設一幅影像的像素總數為 N,灰度級總數為 L,其中灰度級與該灰度級出現的頻率為 Ng,則這幅數字影像的灰度直方圖橫坐標即為灰度 g(0 ≤ g ≤ L-1),縱坐標則為灰度值出現的次數 Ng,實際上,用像素總數 N 去除以各個灰度值出現的次數 Ng 即得到各個灰度級出現的頻率 Pg = Ng/N = Ng /∑Ng ,從而得到歸一化的灰度直方圖,其縱坐標為概率 Pg ,
1.2、Matlab 實作
Matlab 中的 imhist 函式可以進行影像的灰度直方圖運算,呼叫語法如下:
imhist(I)
imhist(I,n)
[counts,x] = imhist(...)
引數說明
- I 為需要計算灰度直方圖的影像;
- n 為指定的灰度級數目,如果指定引數 n,則會將所有的灰度級均分分布在 n 個小區間內,而不是將所有的灰度級全部分開,
回傳值
- counts 為直方圖資料向量,counts(i) 表示第 i 個灰度區間中的像素數目;
- x 是保存了對應的灰度小區間的向量,
若呼叫時不接收這個函式的回傳值,則直接顯示直方圖;在得到這些回傳資料之后,也可以使用 stem(x,counts) 來手動繪制直方圖,
-
一般直方圖
灰度直方圖的生成與顯示:
I = imread('pout.jpeg"/>因為相近的灰度值所具有的含義往往是相似的,所以常常沒有必要在每個灰度級上都進行統計,下面的命令將 0~255 總共 256 個灰度級劃分為 64 個長度為 4 的灰度區間,此時縱坐標分別統計每個灰度區間中的像素在影像中出現次數,

-
歸一化直方圖
在 imhist 函式的回傳值中,counts 保存了落在每個區間的像素的個數,通過計算 counts 與影像中像素點的商可以得到歸一化的直方圖,
繪制有 32 個灰度區間的歸一化直方圖程式如下:
figure; [M,N] = size(I); %計算影像大小 [counts,x] = imhist(I,32); %計算有 32 個小區間的灰度直方圖 counts = counts / M / N; %計算歸一化灰度直方圖各區間的值 stem(x,counts); %繪制歸一化直方圖

分析影像的灰度直方圖往往可以得到很多有用的資訊,例如:可以很直觀地看出影像的亮度和對比度特性(對比度:灰度影像最大亮度與最小亮度的比值),如果影像較亮,則直方圖的峰值出現在直方圖的較右部分;如果影像較暗,則直方圖的峰值出現在直方圖的較左部分,如果直方圖只有中間一小部分非零值,則這張圖片的對比度較低;反之,如果直方圖的非零值分別很寬而且比較均勻,則影像的對比度較高,
2、灰度的線性變換
將影像的像素值通過指定的線性函式進行變換,以此增強或減弱影像的灰度,
2.1、理論基礎
線性灰度變換函式 f(x) 是一個一維線性函式:
D
B
=
f
(
D
A
)
=
f
A
D
A
+
f
B
D_B=f(D_A)=f_AD_A+f_B
DB?=f(DA?)=fA?DA?+fB?
式中:引數 fA 為線性函式的斜率;fB 為線性函式在 y 軸的截距;DA 表示輸入影像的灰度;DB 表示輸出影像的灰度,
- 當 fA > 1 時,輸出影像的對比度將增大;當 fA < 1 時,輸出影像的對比度將減小;
- 當 fA = 1 時且 fB ≠ 1 時,操作僅使所有的像素的灰度值上移或下移,其效果是使整個影像更暗或更亮;如 fA < 0 時,暗區域將變亮,亮區域將變暗,這種線性變換可能由于像素亮度達到飽和(小于 0 或超過 255)從而丟失一些細節;
- 特殊情況下,當 fA = 1, fB = 0 時,輸出影像與輸入影像相同;當 fA = -1, fB = 255 時,輸出影像的灰度正好反轉,灰度反轉處理適用于增強暗色影像中的亮度較大的細節部分,這也是人的視覺性決定的,
2.2、Matlab 實作
% 灰度的線性變換
% 無需專門的函式
% 增加對比度、減小對比度、線性平移增加亮度和反相顯示 4 種線性變換
I = imread('pout.jpeg"/>

結論:改變影像的對比度是對直方圖的縮放與平移,改變影像的亮度則只是平移直方圖在橫軸上的位置,而反相則是將直方圖水平鏡像,
3、灰度對數變換
3.1、理論基礎
對數變換的一般運算式如下:
t
=
c
l
o
g
(
1
+
s
)
t=c \quad log(1+s)
t=clog(1+s)
其中 c 為尺度比例常數,s 為源灰度值,t 為變換后的目標灰度值,
由對數函式曲線可知,這種變換可以增強一幅影像中較暗部分的細節,從而可用來擴展被壓縮的高值影像中較暗像素,因此對數變換被廣泛地應用于頻譜影像的顯示中,一個典型的應用是傅里葉頻譜,
3.2、Matlab 實作
對數變換不需要專門的影像處理函式,下面的例子比較了對傅里葉頻譜影像進行對數變換前后的效果:
% 對傅里葉頻譜影像進行對數變換
I = imread('pout.jpeg"/>
經過對數灰度處理的影像,其低灰度區域對比度將會增加,暗部細節被增強,
4、伽瑪變換
4.1、理論基礎
伽瑪變換的一般運算式:
y
=
(
x
+
e
s
p
)
γ
y=(x+esp)^\gamma
y=(x+esp)γ
式中:x 與 y 的取值范圍是 [0,1];esp 為補償系數;γ 則為伽瑪系數,
與對數變換不同,伽瑪變換可以根據 γ 的不同取值選擇性增強低灰度區域的對比度或是高灰度區域的對比度,
γ 是影像灰度校正中非常重要的一個引數,其取值決定了輸入影像和輸出影像之間的灰度映射方式,即決定了是增強灰度值(陰影區域)還是增強高灰度(高亮區域),
- γ > 1 時,影像的高灰度區域對比度得到增強;
- γ < 1 時,影像的低灰度區域對比度得到增強;
- γ = 1 時,這一灰度變換是線性的,即不改變原影像,
在進行變換時,我們通常將 0~255 的灰度動態范圍首先變換到 0~1 的動態范圍,執行伽瑪變換后再恢復原動態范圍,

4.2、Matlab 實作
Matlab 中為我們提供了實作灰度變換的基本工具 imadjust,其呼叫方式如下:
J = imadjust(I,[low_in high_in],[low_out high_out],gamma);
該函式將輸入影像 I 中從 low_in 至 high_in 之間的映射到輸出影像 J 的 low_out 和 high_out 之間的值,其余的值將被裁掉,
引數說明:
-
[low_in high_in] 和 [low_out high_out]:確定源灰度范圍到目標灰度范圍的映射,需要按照 double 型別給定,即取值范圍在 0~1 之間;
空([])相當于默認值([0 1]),若 high_out 小于 low_out,則輸出影像 J 的亮度將會反轉,
-
引數 gamma 指定了變換曲線的形狀,其默認值為 1,表示線性映射,若 gamma < 1,則映射被加權至最高的輸出值;若 gamma > 1,則映射被加權至最低的輸出值,
% 當 gamma 分別取不同值時的伽瑪變換效果
I = imread('pout.jpeg"/>
5、灰度閾值變換
灰度閾值變換可以將一幅灰度影像轉換成黑白的二值影像,
5.1、理論基礎
灰度閾值變換的函式運算式如下:
f
(
x
)
=
{
0
x
<
T
255
x
≥
T
f(x)=\begin{cases}0 & x < T \\ 255 &x ≥ T \end{cases}
f(x)={0255?x<Tx≥T?
5.2、Matlab 實作
Matlab 中和閾值變換有關的函式主要有兩個——im2bw 和 graythresh,
-
函式 im2bw 可用于實作閾值變換,呼叫語法如下:
BW = im2bw(I,level);
引數說明:
- 引數 level 給出了具體的變換閾值,它是一個 0~1 之間的雙精度浮點數,例如輸入影像灰度范圍為 0~255 之間的 unit8 影像,如果 level = 0…5,則對應于分割閾值為 128,
-
函式 graythresh 可以自適應地確定變換所用的 “最優” 閾值,呼叫方式如下:
thresh = graythresh(I)
下面的程式顯示了如何利用 graythresh 函式獲得的閾值和自行設定閾值進行閾值變換:
% 閾值變換
I = imread('pout.jpeg"/>
6、分段線性變換
6.1、理論基礎
利用分段線性變換函式來增強影像對比度的方法實際是增強原圖各部分的反差,即增強輸入影像中感興趣的灰度區域,相對抑制那些不感興趣的灰度區域,分段線性函式的主要優勢在于它的形式可任意給出,而缺點是需要更多的用戶輸入,
分段線性變換的函式形式如下:
f
(
x
)
=
{
y
1
x
1
x
x
<
x
1
y
2
?
y
1
x
2
?
x
1
(
x
?
x
1
)
+
y
1
x
1
≤
x
≤
x
2
255
?
y
2
255
?
x
2
(
x
?
x
2
)
+
y
2
x
>
x
2
f(x)=\begin{cases} \frac{y_1}{x_1}x & x < x_1 \\ \frac{y_2 - y_1}{x_2 - x_1}(x-x_1)+y_1 & x_1 \leq x \leq x_2 \\ \frac{255-y_2}{255-x_2}(x-x_2)+y_2 & x > x_2 \end{cases}
f(x)=??????x1?y1??xx2??x1?y2??y1??(x?x1?)+y1?255?x2?255?y2??(x?x2?)+y2??x<x1?x1?≤x≤x2?x>x2??
7、直方圖均衡化
7.1、理論基礎
直方圖均衡化又稱為灰度均衡化,是指通過某種灰度映射使輸入影像轉換為在每一灰度級上都有近似相同的像素點數的輸出影像(輸出的直方圖是均勻的),
灰度均衡的轉換公式:
D
B
=
f
(
D
A
)
=
D
m
a
x
∫
0
D
A
p
D
A
(
μ
)
d
μ
D_B=f(D_A)=D_{max}\int_{0}^{D_A}p_{D_A}(\mu)d\mu
DB?=f(DA?)=Dmax?∫0DA??pDA??(μ)dμ
式中:DB 為轉換后的灰度值;DA 為轉換前的灰度值,
而對于離散灰度值,相應的轉換公式為:
D
B
=
f
(
D
A
)
=
D
m
a
x
A
0
∑
i
=
0
D
A
H
i
D_B=f(D_A)=\frac{D_{max}}{A_0}\sum_{i=0}^{D_A}H_{i}
DB?=f(DA?)=A0?Dmax??i=0∑DA??Hi?
式中:Hi 為第 i 級灰度的像素個數;A0 為影像的面積,即像素總數,
7.2、Matlab 實作
Matlab 影像處理工具提供了用于直方圖均衡化的函式 histeq,呼叫語法如下:
[J,T] = histeq(I)
引數說明:
- J 為經過直方圖均衡化的輸出影像;
- T 為變換矩陣,
影像易受光照、視角、方位、噪聲等的影響,在這些因素的作用下,同一類影像的不同變形體之間的差距有時大于該類影像與另一類影像之間的差距,這就給影像識別、分類帶來了困擾,影像歸一化就是將影像轉換成唯一的標準形式以抵抗各種變換,從而可消除同類影像不同變體之間的外觀差異,
當影像歸一化用于消除灰度因素(光照等)造成的影像外觀變化時,稱為(影像)灰度歸一化,
% 讀入圖片,然后對其進行增加對比度、減小對比度、線性增加亮度和線性減少亮度的處理
% 接著又分別對這 4 幅影像進行了直方圖均衡化處理并顯示處理前后的直方圖
I = imread('pout.jpeg"/>
8、直方圖規定化
直方圖均衡化可以自動確定灰度變換函式,從而獲得具有均勻直方圖的輸出影像,它主要用于增強動態范圍偏小的影像對比度,豐富影像的灰度級,
但是有時候希望可以對變換程序加以控制,如能夠人為修正直方圖的形狀,或者說是獲得具有指定直方圖的輸出影像,這樣就可以有選擇地增強某個范圍內的對比度或使影像灰度值滿足某種特定的分布,稱為直方圖規定化,或直方圖匹配,
8.1、理論基礎
直方圖規定化是在運用均衡化原理的基礎上,通過建立原始影像和期望影像之間的關系,使原始影像的直方圖匹配特定的形狀,從而彌補直方圖不具備互動作用的特性,
其匹配原理是先對原始的影像均衡化:
s
=
f
(
r
)
=
∫
0
r
p
r
(
μ
)
d
μ
s=f(r)=\int_0^rp_r(\mu)d\mu
s=f(r)=∫0r?pr?(μ)dμ
同時對待匹配直方圖的影像進行均衡化處理:
v
=
g
(
z
)
=
∫
0
z
p
z
(
λ
)
d
λ
V
v=g(z)=\int_0^zp_z(\lambda)d\lambda V
v=g(z)=∫0z?pz?(λ)dλV
由于都是均衡化,故可令 s = v,則:
v
=
g
?
1
(
s
)
=
g
?
1
(
f
(
r
)
)
v=g^{-1}(s)=g^{-1}(f(r))
v=g?1(s)=g?1(f(r))
于是,我們可以按照如下的步驟由輸入影像得到一個具有規定概率密度函式(PDF)的影像:
- 根據式 8 得到變換關系 f?;
- 根據式 9 得到變換關系 g(z);
- 求得反變換函式 g-1;
- 對輸入影像所有像素應用式 10 的變換,從而得到輸出影像,
8.2、Matlab 實作
histeq 函式不僅可以用于直方圖均衡化,也可以用于直方圖規定化,此時需要提供可選引數 hgram:
[J,T] = histeq(I,hgram)
下面的例子實作了從影像 I 到影像 I1 和 I2 的直方圖匹配:
% 實作了從影像 I 到影像 I1 和 I2 的直方圖匹配
I = imread('pout.jpeg"/>
直方圖規定化本質上一種擬合程序,因此變換得到的直方圖與標準影像的直方圖并不會完全一致,然而即使只是相似的擬合,仍然使規定化的影像在亮度與對比度上具有類似標準影像的特性,這正是直方圖規定化的目的所在,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/204167.html
標籤:其他
上一篇:IP網路攝像頭RTSP協議視頻平臺EasyNVR如何通過用戶權限設定給用戶屏蔽指定通道?
下一篇:git獲取大容量工程出錯:RPC failed; curl GnuTLS recv error : Decryption has failed.
