国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

這篇具有很好參考價(jià)值的文章主要介紹了(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

基于直方圖修正的圖像增強(qiáng):是一種常見的圖像處理方法。該方法通過對(duì)圖像的像素值分布進(jìn)行調(diào)整,以改善圖像的對(duì)比度和亮度等視覺效果。具體地,直方圖校正方法將圖像的像素值轉(zhuǎn)換為一個(gè)新的值域范圍,使得像素值的分布更加均勻,從而增強(qiáng)圖像的細(xì)節(jié)和對(duì)比度。這種方法通常包括以下步驟

  • 計(jì)算圖像的像素值直方圖,即將像素值分為若干個(gè)區(qū)間并統(tǒng)計(jì)每個(gè)區(qū)間內(nèi)像素的數(shù)量;
  • 根據(jù)像素值直方圖計(jì)算出一個(gè)累積分布函數(shù)(CDF);
  • 將像素值根據(jù) CDF 進(jìn)行映射,將原圖像的像素值映射到新的值域范圍內(nèi),以生成增強(qiáng)后的圖像

直方圖校正方法可以有效地改善圖像的視覺質(zhì)量,但也可能會(huì)導(dǎo)致一些問題,比如增強(qiáng)后的圖像可能出現(xiàn)過度增強(qiáng)或者噪聲增加等情況。因此,在實(shí)際應(yīng)用中需要根據(jù)具體情況選擇適當(dāng)?shù)闹狈綀D校正方法和參數(shù)

一:灰度直方圖

(1)定義

灰度直方圖:表示的是數(shù)字圖像中每一灰度級(jí)與其出現(xiàn)頻數(shù)(即該灰度上出現(xiàn)像素的數(shù)目)間的統(tǒng)計(jì)關(guān)系。具體來說,它將灰度級(jí)的像素值與其在圖像中出現(xiàn)的頻次(或概率)作為縱軸和橫軸上的坐標(biāo),形成一個(gè)直方圖

p ( r k ) = n k N p(r_{k})=\frac{n_{k}}{N} p(rk?)=Nnk??

例如下圖這張圖像,可以得到其灰度直方圖

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

(2)程序

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

MATLAB實(shí)現(xiàn):相關(guān)函數(shù)如下,具體解釋可看MATLAB幫助手冊(cè)

  • imhist(I,N)
Image=rgb2gray(imread('couple.bmp'));
histgram=zeros(256);                                    
[h w]=size(Image);
for x=1:w
    for y=1:h                                         %循環(huán)掃描
        histgram(Image(y,x)+1)=histgram(Image(y,x)+1)+1;   %統(tǒng)計(jì)并累加
    end
end
imwrite(Image,'Gcouple.bmp');
imshow(Image);title('couple灰度圖像');
figure;stem(histgram(),'.'); 
axis tight;
colormap(gray)
figure;imhist(Image);
axis tight;
colormap(gray)

Python實(shí)現(xiàn)

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']

import cv2
import matplotlib.pyplot as plt
import numpy as np

# 讀入圖像并轉(zhuǎn)換為灰度圖
Image = cv2.imread('couple.bmp')
Image = cv2.cvtColor(Image, cv2.COLOR_BGR2GRAY)

# 初始化直方圖
histogram = np.zeros(256)

# 統(tǒng)計(jì)每個(gè)像素值的數(shù)量
h, w = Image.shape[:2]
for x in range(w):
    for y in range(h):
        histogram[Image[y, x]] += 1

# 保存圖像
cv2.imwrite('Gcouple.bmp', Image)

# 顯示圖像和直方圖
plt.subplot(121)
plt.imshow(Image, cmap='gray')
plt.title('couple灰度圖像')

plt.subplot(122)
plt.stem(histogram, use_line_collection=True)
plt.axis('tight')
plt.title('灰度直方圖')
plt.show()

(3)性質(zhì)

灰度直方圖性質(zhì)

  • 直方圖不具有空間特性。直方圖不能反映圖像像素空間位置信息
  • 直方圖反映圖像大致描述
  • 一幅圖像唯一對(duì)應(yīng)相應(yīng)的直方圖,而不同的圖像可以具有相同的直方圖
  • 若一幅圖像可分為多個(gè)子區(qū),則多個(gè)子區(qū)直方圖之和等于對(duì)應(yīng)的全圖直方圖

總的來說,不同直方圖引起不同的視覺效果,同一直方圖可以對(duì)應(yīng)不同的圖像

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

二:直方圖修正法理論

直方圖修正法理論:圖像的灰度動(dòng)態(tài)范圍太小或者說其直方圖集中在某一個(gè)灰度區(qū)間,視覺效果不理想;當(dāng)圖像直方圖占滿所有灰度級(jí)區(qū)間,且所有灰度級(jí)的概率分布相接近,即直方圖均勻分布的圖像其視覺效果會(huì)最理想。另一方面,從隨機(jī)信號(hào)及信息量的角度來看,各個(gè)灰度級(jí)的概率分布等概率時(shí),信息量最大,熵最大。因此,需要尋找這一個(gè)變換,使得變換后圖像直方圖均勻,這就是直方圖均衡化

設(shè) 0 ≤ r ≤ 1 0\leq r \leq 1 0r1為要增強(qiáng)像素灰度級(jí), 0 ≤ s ≤ 1 0 \leq s \leq 1 0s1為增強(qiáng)后新灰度級(jí),直方圖修正公式為 s = T ( r ) s=T(r) s=T(r)(或 r = T ? 1 ( s ) r=T^{-1}(s) r=T?1(s)),式中 T ( r ) T(r) T(r)為變換函數(shù),需要滿足以下兩個(gè)條件

  • T ( r ) T(r) T(r) 0 ≤ r ≤ 1 0\leq r \leq 1 0r1區(qū)域內(nèi)單增,以保證灰度級(jí)從黑到白的次序不要出現(xiàn)反轉(zhuǎn)
  • T ( r ) T(r) T(r) 0 ≤ r ≤ 1 0\leq r \leq 1 0r1區(qū)域內(nèi)滿足 0 ≤ s ≤ 1 0\leq s \leq 1 0s1,保證變換的像素仍在允許的灰度級(jí)范圍內(nèi)

三:直方圖均衡化

直方圖均衡化:又叫做直方圖均勻化。其目的是使所有灰度級(jí)出現(xiàn)的相對(duì)頻數(shù)(概率)相同,此時(shí)圖像所包含的信息量最大。也就是使得原圖像的灰度直方圖修正為均勻分布的直方圖,實(shí)現(xiàn)圖像的全局整體均勻化

(1)直方圖均衡化變換函數(shù)T?的求解

設(shè) p r ( r ) p_{r}(r) pr?(r) p s ( s ) p_{s}(s) ps?(s)分別表示 r r r s s s的灰度概率密度函數(shù),則變換前后有

p s ( s ) d s = p r ( r ) d r ∫ 0 s p s ( s ) d s = ∫ 0 r p r ( r ) d r \begin{array}{l}p_{s}(s) d s=p_{r}(r) d r \\\int_{0}^{s} p_{s}(s) d s=\int_{0}^{r} p_{r}(r) d r\end{array} ps?(s)ds=pr?(r)dr0s?ps?(s)ds=0r?pr?(r)dr?

因?yàn)榫饣笥?span id="n5n3t3z" class="katex--inline"> p s ( s ) = 1 p_{s}(s)=1 ps?(s)=1,因此直方圖均衡化變化函數(shù)為 s = T ( r ) = ∫ 0 r p r ( ω ) d ω s=T(r)=\int_{0}^{r} p_{r}(\omega) d \omega s=T(r)=0r?pr?(ω)dω

(2)數(shù)字圖像的直方圖均衡化

A:概述

數(shù)字圖像的直方圖均衡化:一幅離散數(shù)字圖像,共 L L L個(gè)灰度等級(jí),其中第 k k k個(gè)灰度級(jí) r k r_{k} rk?出現(xiàn)的像素個(gè)數(shù)為 n k n_{k} nk?,圖像總像素個(gè)數(shù)為 N N N。則第 k k k個(gè)灰度級(jí)出現(xiàn)的概率為

P ( r k ) = n k N 0 ≤ r k ≤ 1 , k = 0 , 1 , … , L ? 1 P\left(r_{k}\right)=\frac{n_{k}}{N} \quad 0 \leq r_{k} \leq 1, k=0,1, \ldots, L-1 P(rk?)=Nnk??0rk?1,k=0,1,,L?1

進(jìn)行均衡化處理的變換函數(shù) T ( r ) T(r) T(r)

  • r k = T ? 1 ( s k ) r_{k}=T^{-1}(s_{k}) rk?=T?1(sk?)

s k = T ( r k ) = ∑ j = 0 k p r ( r j ) = ∑ j = 0 k n j N s_{k}=\boldsymbol{T}\left(r_{k}\right)=\sum_{j=0}^{k} p_{r}\left(r_{j}\right)=\sum_{j=0}^{k} \frac{n_{j}}{N} sk?=T(rk?)=j=0k?pr?(rj?)=j=0k?Nnj??

數(shù)字圖像的直方圖均衡化算法步驟為

  • 統(tǒng)計(jì)原始圖像直方圖
  • 計(jì)算新的灰度級(jí): s k = T ( r k ) = ∑ j = 0 k p r ( r j ) = ∑ j = 0 k n j N s_{k}=\boldsymbol{T}\left(r_{k}\right)=\sum_{j=0}^{k} p_{r}\left(r_{j}\right)=\sum_{j=0}^{k} \frac{n_{j}}{N} sk?=T(rk?)=j=0k?pr?(rj?)=j=0k?Nnj??
  • 修正 s k s_{k} sk?為合理灰度級(jí)
  • 求新直方圖
  • 用處理后的新灰度代替處理前的灰度,生成新圖像

B:示例

如下,給定一幅64×64的8級(jí)灰度圖像,其灰度級(jí)分布如表中所示,對(duì)其進(jìn)行直方圖均衡化

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

首先計(jì)算新灰度級(jí)

  • s 0 = T ( r 0 ) = ∑ j = 0 0 p r ( r j ) = P r ( r 0 ) = 0.19 s_{0}=T\left(r_{0}\right)=\sum_{j=0}^{0} p_{r}\left(r_{j}\right)=P_{r}\left(r_{0}\right)=0.19 s0?=T(r0?)=j=00?pr?(rj?)=Pr?(r0?)=0.19
  • s 1 = T ( r 1 ) = ∑ j = 0 1 P r ( r j ) = P r ( r 0 ) + P r ( r 1 ) = 0.19 + 0.25 = 0.44 s_{1}=T\left(r_{1}\right)=\sum_{j=0}^{1} P_{r}\left(r_{j}\right)=P_{r}\left(r_{0}\right)+P_{r}\left(r_{1}\right)=0.19+0.25=0.44 s1?=T(r1?)=j=01?Pr?(rj?)=Pr?(r0?)+Pr?(r1?)=0.19+0.25=0.44
  • s 2 = 0.65 s_{2}=0.65 s2?=0.65
  • s 3 = 0.81 s_{3}=0.81 s3?=0.81
  • s 4 = 0.89 s_{4}=0.89 s4?=0.89
  • s 5 = 0.95 s_{5}=0.95 s5?=0.95
  • s 6 = 0.98 s_{6}=0.98 s6?=0.98
  • s 7 = 1 s_{7}=1 s7?=1

接著修正 s k s_{k} sk?為合理的灰度級(jí) s k ′ s^{\prime}_{k} sk?

  • s 0 = 0.19 ≈ 1 7 s_{0}=0.19\approx \frac{1}{7} s0?=0.1971?
  • s 1 = 0.44 ≈ 3 7 s_{1}=0.44\approx \frac{3}{7} s1?=0.4473?
  • s 2 = 0659 ≈ 5 7 s_{2}=0659\approx \frac{5}{7} s2?=065975?
  • s 3 = 0.81 ≈ 6 7 s_{3}=0.81\approx \frac{6}{7} s3?=0.8176?
  • s 4 = 0.89 ≈ 6 7 s_{4}=0.89\approx \frac{6}{7} s4?=0.8976?$
  • s 5 = 0.95 ≈ 1 s_{5}=0.95\approx 1 s5?=0.951
  • s 6 = 0.98 ≈ 1 s_{6}=0.98\approx 1 s6?=0.981
  • s 7 = 1 s_{7}=1 s7?=1

則新圖像對(duì)應(yīng)只有5個(gè)不同的灰度級(jí)別

  • s 0 ′ = 1 7 s_{0}^{\prime}=\frac{1}{7} s0?=71?
  • s 1 ′ = 3 7 s_{1}^{\prime}=\frac{3}{7} s1?=73?
  • s 2 ′ = 5 7 s_{2}^{\prime}=\frac{5}{7} s2?=75?
  • s 3 ′ = 6 7 s_{3}^{\prime}=\frac{6}{7} s3?=76?
  • s 4 ′ = 1 s_{4}^{\prime}=1 s4?=1

然后計(jì)算新的直方圖

  • P s ( s 0 ′ ) = P s ( 1 7 ) = P r ( r 0 ) = 0.19 P_{s}\left(s_{0}^{\prime}\right)=P_{s}\left(\frac{1}{7}\right)=P_{r}\left(r_{0}\right)=0.19 Ps?(s0?)=Ps?(71?)=Pr?(r0?)=0.19
  • P s ( s 1 ′ ) = P s ( 3 7 ) = P r ( r 1 ) = 0.25 P_{s}\left(s_{1}^{\prime}\right)=P_{s}\left(\frac{3}{7}\right)=P_{r}\left(r_{1}\right)=0.25 Ps?(s1?)=Ps?(73?)=Pr?(r1?)=0.25
  • P s ( s 2 ′ ) = P s ( 5 7 ) = P r ( r 2 ) = 0.21 P_{s}\left(s_{2}^{\prime}\right)=P_{s}\left(\frac{5}{7}\right)=P_{r}\left(r_{2}\right)=0.21 Ps?(s2?)=Ps?(75?)=Pr?(r2?)=0.21
  • P s ( s 3 ′ ) = P s ( 6 7 ) = P r ( r 3 ) + P r ( r 4 ) = 0.16 + 0.08 = 0.24 P_{s}\left(s_{3}^{\prime}\right)=P_{s}\left(\frac{6}{7}\right)=P_{r}\left(r_{3}\right)+P_{r}\left(r_{4}\right)=0.16+0.08=0.24 Ps?(s3?)=Ps?(76?)=Pr?(r3?)+Pr?(r4?)=0.16+0.08=0.24
  • P s ( s 4 ′ ) = P s ( 1 ) = P r ( r 5 ) + P r ( r 6 ) + P r ( r 7 ) = 0.06 + 0.03 + 0.02 = 0.11 P_{s}\left(s_{4}^{\prime}\right)=P_{s}(1)=P_{r}\left(r_{5}\right)+P_{r}\left(r_{6}\right)+P_{r}\left(r_{7}\right)=0.06+0.03+0.02=0.11 Ps?(s4?)=Ps?(1)=Pr?(r5?)+Pr?(r6?)+Pr?(r7?)=0.06+0.03+0.02=0.11

最后生成新圖像

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

新舊直方圖對(duì)比

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

C:程序

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

MATLAB實(shí)現(xiàn):相關(guān)函數(shù)如下,具體解釋可看MATLAB幫助手冊(cè)

  • histeq(I,N)
Image=rgb2gray(imread('couple.bmp'));
histgram =imhist(Image);    %統(tǒng)計(jì)圖像直方圖
[h w]=size(Image);
NewImage1=zeros(h,w);
NewImage2=zeros(h,w);
s=zeros(256);
s(1)=histgram(1);
for t=2:256
    s(t)=s(t-1)+histgram(t);  %計(jì)算新的灰度值    
end
for x=1:w
    for y=1:h
        NewImage1(y,x)=s(Image(y,x)+1)/(w*h);                 %生成新圖像
   end
end
NewImage2=histeq(Image,256);%調(diào)用Matlab函數(shù)
imshow(Image);title('couple灰度圖像');
figure;imhist(Image);title('couple灰度圖像的直方圖'); 
axis tight;
figure;imshow(NewImage1);title('全局直方圖均衡化處理后圖像');
figure;imhist(NewImage1);title('全局直方圖均衡化處理后圖像的直方圖');
axis tight;
figure;imshow(NewImage2);title('Matlab函數(shù)全局均衡化處理后圖像');
figure;imhist(NewImage2);title('Matlab函數(shù)全局均衡化處理后圖像的直方圖');
axis tight;

Python實(shí)現(xiàn)

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']

# 讀取圖像
img = cv2.imread('couple.bmp')
# 轉(zhuǎn)換為灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 統(tǒng)計(jì)圖像直方圖
histogram = cv2.calcHist([gray_img], [0], None, [256], [0, 256])

# 計(jì)算新的灰度值
s = np.zeros((256,))
s[0] = histogram[0]
for t in range(1, 256):
    s[t] = s[t-1] + histogram[t]

# 生成新圖像
new_img1 = np.zeros_like(gray_img)
h, w = gray_img.shape[:2]
for y in range(h):
    for x in range(w):
        new_img1[y, x] = s[gray_img[y, x]] / (w * h)

# 調(diào)用OpenCV自帶的全局均衡化函數(shù)
new_img2 = cv2.equalizeHist(gray_img)

# 顯示圖像和直方圖
plt.subplot(2, 2, 1)
plt.imshow(gray_img, cmap='gray')
plt.title('couple灰度圖像')

plt.subplot(2, 2, 2)
plt.hist(gray_img.ravel(), 256, [0, 256])
plt.title('couple灰度圖像的直方圖')
plt.axis('tight')

plt.subplot(2, 2, 3)
plt.imshow(new_img1, cmap='gray')
plt.title('全局直方圖均衡化處理后圖像')

plt.subplot(2, 2, 4)
plt.hist(new_img1.ravel(), 256, [0, 256])
plt.title('全局直方圖均衡化處理后圖像的直方圖')
plt.axis('tight')

plt.show()

# 顯示OpenCV自帶函數(shù)處理后的圖像和直方圖
cv2.imshow('Matlab函數(shù)全局均衡化處理后圖像', new_img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

plt.figure()
plt.hist(new_img2.ravel(), 256, [0, 256])
plt.title('Matlab函數(shù)全局均衡化處理后圖像的直方圖')
plt.axis('tight')
plt.show()

(3)局部直方圖均衡化

A:概述

局部直方圖均衡化:根據(jù)區(qū)域的局部直方圖統(tǒng)計(jì)特性來定義灰度級(jí)變換函數(shù),進(jìn)行均衡化處理,這就是局部直方圖均衡化。給出一幅數(shù)字圖像,選定大小為 w × h w×h w×h的矩形子塊 S S S,子塊 S S S內(nèi)進(jìn)行直方圖均衡化處理,有

s k = T ( r k ) = ∑ j = 0 k p S ( r j ) = ∑ j = 0 k n j w × h s_{k}=\boldsymbol{T}\left(r_{k}\right)=\sum_{j=0}^{k} p_{S}\left(r_{j}\right)=\sum_{j=0}^{k} \frac{n_{j}}{w \times h} sk?=T(rk?)=j=0k?pS?(rj?)=j=0k?w×hnj??

可以分為如下三類

  • 子塊不重疊局部直方圖均衡化
    • 將圖像劃分為一系列不重疊的相鄰矩形子塊集合 { S i ∣ i = 1 , 2 , . . . , n u m } \{S_{i}|i=1,2,...,num\} {Si?i=1,2,...,num} ,逐個(gè)獨(dú)立地對(duì)每個(gè)子塊中所有像素進(jìn)行直方圖均衡化處理并輸出
    • 由于劃分的各子塊的灰度分布統(tǒng)計(jì)差異較大,因此增強(qiáng)處理后輸出圖像有明顯的塊效應(yīng)
  • 子塊重疊局部直方圖均衡化
    • 利用劃分的子塊的直方圖信息,對(duì)子塊進(jìn)行直方圖均衡化處理,然后把均衡化處理后的子塊中心像素的值作為該像素的輸出值,將子塊在圖像中逐像素移動(dòng),重復(fù)上述過程,直至遍歷圖像中所有像素
    • 算法效率較低
  • 子塊部分重疊局部直方圖均衡化
    • 劃分大小為 w × h w×h w×h的子塊進(jìn)行直方圖均衡化,將子塊在圖像中按照一定水平步長(zhǎng)wstep和垂直步長(zhǎng)hstep移動(dòng),重復(fù)上述過程,直至遍歷圖像中所有像素。將重疊區(qū)域的多次均衡化處理的結(jié)果取平均值作為該重疊區(qū)域中像素的輸出值
    • 該算法使用頻繁

B:程序

(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)


MATLAB實(shí)現(xiàn)

Image=(rgb2gray(imread('couple.bmp')));
imshow(Image);title('原始圖像');
result1=blkproc(Image,[32 32],@histeq);
figure,imshow(result1);title('無重疊的局部直方圖均衡化圖像');
imwrite(result1,'NLHE.bmp');
[height,width]=size(Image);
result2=zeros(height,width);
n=16;%鄰域模板半徑
hh=height+2*n;  ww=width+2*n;
ff=zeros(hh,ww);%圖像對(duì)外邊緣擴(kuò)充ff
ff(n+1:hh-n,n+1:ww-n)=Image;
ff(1:n,n+1:ww-n)=Image(1:n,:);
ff(hh-n+1:hh,n+1:ww-n)=Image(height-n+1:height,:);
ff(:,1:n)=ff(:,n+1:n*2);
ff(:,ww-n+1:ww)=ff(:,ww+1-n*2:ww-n);
ff=uint8(ff);
for i=n+1:hh-n
    for j=n+1:ww-n  
        lwc=histeq(ff(i-n:i+n,j-n:j+n),256);
        result2(i-n,j-n)=lwc(n+1,n+1);%實(shí)現(xiàn)對(duì)子塊中心像素點(diǎn)的均衡化處理
    end
end
figure,imshow(uint8(result2));title('重疊的局部直方圖均衡化圖像');
imwrite(uint8(result2),'LHE.bmp');
sumf=int16(zeros(hh,ww));%%轉(zhuǎn)化成int16型數(shù)據(jù)
num=zeros(hh,ww);
for i=n+1:8:hh-n
    for j=n+1:8:ww-n 
        lwc=int16(histeq(ff(i-n:i+n,j-n:j+n),256));%計(jì)算子塊的局部直方圖均衡化
        sumf(i-n:i+n,j-n:j+n)=sumf(i-n:i+n,j-n:j+n)+lwc;%像素的均衡化結(jié)果進(jìn)行累加
        num(i-n:i+n,j-n:j+n)=num(i-n:i+n,j-n:j+n)+1;%像素被均衡化的累加次數(shù)
    end
end
result3(:,:)=double(sumf(n+1:hh-n,n+1:ww-n));
result3(:,:)=result3(:,:)./num(n+1:hh-n,n+1:ww-n);%像素的均衡化結(jié)果取平均值
rr(:,:)=uint8(result3(:,:));
figure,imshow(uint8(result3(:,:)));title('部分重疊的局部直方圖均衡化圖像');
imwrite(uint8(result3(:,:)),'POSHE.bmp');

Python實(shí)現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-417897.html

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 讀入圖像
Image = cv2.imread('couple.bmp')
Image = cv2.cvtColor(Image, cv2.COLOR_BGR2GRAY)

# 顯示原始圖像
plt.imshow(Image, cmap='gray')
plt.title('原始圖像')
plt.show()

# 無重疊的局部直方圖均衡化
result1 = cv2.normalize(cv2.boxFilter(Image, -1, (32, 32)), None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
plt.imshow(result1, cmap='gray')
plt.title('無重疊的局部直方圖均衡化圖像')
plt.show()
cv2.imwrite('NLHE.bmp', result1)

# 重疊的局部直方圖均衡化
n = 16
hh, ww = Image.shape[0] + 2 * n, Image.shape[1] + 2 * n
ff = np.zeros((hh, ww), dtype=np.uint8)
ff[n:hh-n, n:ww-n] = Image
ff[0:n, n:ww-n] = Image[0:n, :]
ff[hh-n:hh, n:ww-n] = Image[Image.shape[0]-n:Image.shape[0], :]
ff[:, 0:n] = ff[:, n:2*n]
ff[:, ww-n:ww] = ff[:, ww-2*n:ww-n]

result2 = np.zeros_like(Image, dtype=np.uint8)
for i in range(n, hh-n):
    for j in range(n, ww-n):
        lwc = cv2.equalizeHist(ff[i-n:i+n+1, j-n:j+n+1])
        result2[i-n, j-n] = lwc[n, n]

plt.imshow(result2, cmap='gray')
plt.title('重疊的局部直方圖均衡化圖像')
plt.show()
cv2.imwrite('LHE.bmp', result2)

# 部分重疊的局部直方圖均衡化
result3 = np.zeros_like(Image, dtype=np.float32)
num = np.zeros((hh, ww), dtype=np.uint8)
for i in range(n, hh-n, 8):
    for j in range(n, ww-n, 8):
        lwc = cv2.equalizeHist(ff[i-n:i+n+1, j-n:j+n+1]).astype(np.float32)
        result3[i-n:i+n+1, j-n:j+n+1] += lwc
        num[i-n:i+n+1, j-n:j+n+1] += 1

result3 /= num[n:hh-n, n:ww-n]
result3 = result3.astype(np.uint8)

plt.imshow(result3, cmap='gray')
plt.title('部分重疊的局部直方圖均衡化圖像')
plt.show()
cv2.imwrite('POSHE.bmp', result3)

到了這里,關(guān)于(數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 第五章 圖像處理

    第五章 圖像處理

    本章講講解圖像處理相關(guān)內(nèi)容,包括圖像金字塔、圖像輪廓模板提取、直方圖、圖像傅里葉變換等。 含義: 圖像金字塔是一種用于圖像處理和計(jì)算機(jī)視覺的技術(shù)。它是一系列圖像的集合,其中每個(gè)圖像比前一個(gè)圖像分辨率更低, 從而形成一種金字塔形的結(jié)構(gòu)。這些圖像可以由

    2024年02月05日
    瀏覽(27)
  • 第五章 Opencv圖像處理框架實(shí)戰(zhàn) 5-3 圖像閾值與平滑處理

    第五章 Opencv圖像處理框架實(shí)戰(zhàn) 5-3 圖像閾值與平滑處理

    ret, dst = cv2.threshold(src, thresh, maxval, type) src: 輸入圖,只能輸入單通道圖像,通常來說為灰度圖 dst: 輸出圖 thresh: 閾值 maxval: 當(dāng)像素值超過了閾值(或者小于閾值,根據(jù)type來決定),所賦予的值 type:二值化操作的類型,包含以下5種類型: cv2.THRESH_BINARY; cv2.THRESH_BINARY

    2024年02月14日
    瀏覽(26)
  • 圖像處理與計(jì)算機(jī)視覺--第五章-圖像分割-Canny算子

    圖像處理與計(jì)算機(jī)視覺--第五章-圖像分割-Canny算子

    2.1.Canny算子簡(jiǎn)單介紹 Canny算子是一種非常常用的邊緣檢測(cè)算子,其效果圖如下所示: 2.2.Canny算子邊緣檢測(cè)指標(biāo) Canny算子是基于邊緣檢測(cè)來實(shí)現(xiàn)的,那么邊緣檢測(cè)的指標(biāo)如下所示: (1)好的信噪比,即將非邊緣點(diǎn)判定為邊緣點(diǎn)的概率要低。 (2)高定位,檢測(cè)出的邊緣要在實(shí)際邊緣中

    2024年02月07日
    瀏覽(25)
  • 圖像處理與計(jì)算機(jī)視覺--第五章-圖像分割-自適應(yīng)閾值分割

    圖像處理與計(jì)算機(jī)視覺--第五章-圖像分割-自適應(yīng)閾值分割

    ??在圖片處理過程中,針對(duì)鋪前進(jìn)行二值化等操作的時(shí)候,我們希望能夠?qū)D片相應(yīng)區(qū)域內(nèi)所有的信息提供保留。實(shí)驗(yàn)室環(huán)境下,相應(yīng)的素材是模板化的,但是將實(shí)驗(yàn)室方法應(yīng)用于現(xiàn)實(shí)環(huán)境中時(shí),我們會(huì)發(fā)現(xiàn)光影環(huán)境對(duì)于效果的影響其實(shí)是很大的。在這種情況下進(jìn)行處理,

    2024年02月07日
    瀏覽(22)
  • (數(shù)字圖像處理MATLAB+Python)第三章圖像基本運(yùn)算-第二節(jié):圖像代數(shù)運(yùn)算

    (數(shù)字圖像處理MATLAB+Python)第三章圖像基本運(yùn)算-第二節(jié):圖像代數(shù)運(yùn)算

    A:概述 加法運(yùn)算 :指將兩幅同大小的圖像進(jìn)行像素級(jí)別的加法操作,得到一幅新的圖像。設(shè)兩幅圖像對(duì)應(yīng)的像素值分別為 f 1 ( x , y ) f_{1}(x,y) f 1 ? ( x , y ) 和 f 2 ( x , y ) f_{2}(x,y) f 2 ? ( x , y ) ,則它們的加法運(yùn)算可表示為 g ( x , y ) = f 1 ( x , y ) + f 2 ( x , y ) g(x,y)=f_{1}(x,y) + f_{

    2023年04月12日
    瀏覽(109)
  • (數(shù)字圖像處理MATLAB+Python)第八章圖像復(fù)原-第一、二節(jié):圖像復(fù)原概述和圖像退化模型

    (數(shù)字圖像處理MATLAB+Python)第八章圖像復(fù)原-第一、二節(jié):圖像復(fù)原概述和圖像退化模型

    圖像復(fù)原 :在圖像生成、記錄、傳輸過程中,由于成像系統(tǒng)、設(shè)備或外在的干擾,會(huì)導(dǎo)致圖像質(zhì)量下降,稱為 圖像退化 ,如大氣擾動(dòng)效應(yīng)、光學(xué)系統(tǒng)的像差、物體運(yùn)動(dòng)造成的模糊、幾何失真等。圖像復(fù)原是指通過使用圖像處理技術(shù)來恢復(fù)受損圖像的原始信息,使其盡可能接

    2024年02月12日
    瀏覽(110)
  • (數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第一、二節(jié):圖像銳化概述和微分算子

    (數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第一、二節(jié):圖像銳化概述和微分算子

    圖像銳化 :是一種用于改善圖像質(zhì)量的技術(shù),它可以 增強(qiáng)圖像中的高頻細(xì)節(jié)信息 ,從而使得圖像更加清晰和有視覺沖擊力。在圖像處理和計(jì)算機(jī)視覺中,圖像銳化通常被用于特征提取、圖像增強(qiáng)、目標(biāo)識(shí)別等應(yīng)用中 圖像邊緣分析 :是一種用于在圖像中找到 明顯的邊緣或輪

    2024年02月01日
    瀏覽(110)
  • (數(shù)字圖像處理MATLAB+Python)第九章圖像形態(tài)學(xué)運(yùn)算-第三節(jié):二值圖像的形態(tài)學(xué)處理

    (數(shù)字圖像處理MATLAB+Python)第九章圖像形態(tài)學(xué)運(yùn)算-第三節(jié):二值圖像的形態(tài)學(xué)處理

    形態(tài)濾波 :是一種在數(shù)字圖像處理中常用的圖像處理技術(shù),用于改善圖像的質(zhì)量、提取圖像的特定特征或去除圖像中的噪聲。形態(tài)濾波主要基于形態(tài)學(xué)運(yùn)算,通過結(jié)構(gòu)元素(也稱為模板)對(duì)圖像進(jìn)行局部區(qū)域的操作,從而改變圖像的形狀和結(jié)構(gòu)。選擇不同形狀(如各向同性的

    2024年02月08日
    瀏覽(96)
  • (數(shù)字圖像處理MATLAB+Python)第十章圖像分割-第一、二節(jié):閾值分割和邊界分割

    (數(shù)字圖像處理MATLAB+Python)第十章圖像分割-第一、二節(jié):閾值分割和邊界分割

    圖像分割 :在對(duì)圖像的研究和應(yīng)用中,人們往往僅對(duì)圖像中的某些目標(biāo)感興趣,這些目標(biāo)通常對(duì)應(yīng)圖像中具有特定性質(zhì)的區(qū)域。圖像分割是指把一幅圖像分成不同的具有特定性質(zhì)區(qū)域的圖像處理技術(shù),將這些區(qū)域分離提取出來,以便進(jìn)一步提取特征和理解 圖像分割方法多種

    2024年02月16日
    瀏覽(96)
  • (數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第三節(jié):高斯濾波與邊緣檢測(cè)

    (數(shù)字圖像處理MATLAB+Python)第七章圖像銳化-第三節(jié):高斯濾波與邊緣檢測(cè)

    高斯函數(shù) :是一種常見的連續(xù)函數(shù),通常用符號(hào) G ( x ) G(x) G ( x ) 表示。它可以用下面的公式定義 G ( x ) = 1 σ 2 π e ? x 2 2 σ 2 G(x)=frac{1}{sigma sqrt{ 2pi }}e^{-frac{x^{2}}{2sigma^{2}}} G ( x ) = σ 2 π ? 1 ? e ? 2 σ 2 x 2 ? 其中, x x x 是自變量, σ sigma σ 是一個(gè)正實(shí)數(shù),表示高斯函

    2024年02月06日
    瀏覽(104)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包