您好,登錄后才能下訂單哦!
1. 基本原理
通過一個變換,將輸入圖像的灰度級轉換為`均勻分布`,變換后的灰度級的概率密度函數為
$$P_s(s) = \frac{1}{L-1}$$
直方圖均衡的變換為
$$s = T(r) = (L-1)\int_0^r {P_r(c)} \,{\rm d}c $$
$s$為變換后的灰度級,$r$為變換前的灰度級$P_r(r)$為變換前的概率密度函數2. 測試結果
圖源自skimage
3.代碼
import numpy as np def hist_equalization(input_image): ''' 直方圖均衡(適用于灰度圖) :param input_image: 原圖像 :return: 均衡后的圖像 ''' output_imgae = np.copy(input_image) # 輸出圖像,初始化為輸入 input_image_cp = np.copy(input_image) # 輸入圖像的副本 m, n = input_image_cp.shape # 輸入圖像的尺寸(行、列) pixels_total_num = m * n # 輸入圖像的像素點總數 input_image_grayscale_P = [] # 輸入圖像中各灰度級出現的概率,亦即輸入圖像直方圖 # 求輸入圖像中各灰度級出現的概率,亦即輸入圖像直方圖 for i in range(256): input_image_grayscale_P.append(np.sum(input_image_cp == i) / pixels_total_num) # 求解輸出圖像 t = 0 # 輸入圖像的灰度級分布函數F for i in range(256): t = t + input_image_grayscale_P[i] output_imgae[np.where(input_image_cp == i)] = 255 * t return output_imgae
4. 數學證明目標變換
4.1 假定
$$p(r_k) = n_k / n$$
$p(r_k)$即為灰度級$r_k$在源圖像中出現的概率估計
4.3 證明
概率密度函數的積分為分布函數,即對分布函數的導數為概率密度函數。
因為$p_r(r)$與$T(r)$已知,則由
$$\frac{{\rm d}r}{{\rm d}S} = \frac{p_s(s)}{p_r(r)}$$
又因為
$$S = T(r)$$
即
$$\frac{{\rm d}S}{{\rm d}r} = \frac{T(r)}{r}$$
聯立上三式及目標變換
$$S = T(r) = (L-1)\int_0^rp_r(w)dw$$
可得
$$p_s(s) = \frac{1}{L-1}$$
故,這意味著變換之后的圖像的灰度級為均勻分布,證畢。
總結
以上所述是小編給大家介紹的Python實現直方圖均衡基本原理解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。