椒鹽噪聲


椒鹽噪聲

圖像噪聲之椒鹽噪聲(Salt And Pepper Noise)

概述:

椒鹽噪聲(salt & pepper noise)是數字圖像的一個常見噪聲,所謂椒鹽。椒就是黑,鹽就是白,椒鹽噪聲就是在圖像上隨機出現黑色白色的像素。椒鹽噪聲是一種由於信號脈沖強度引起的噪聲,產生該噪聲的算法也比較簡單。

算法步驟:

我們使用信噪比(Signal NoiseRate)衡量圖像噪聲。

圖象的信噪比應該等於信號與噪聲的功率譜之比,但通常功率譜難以計算,有一種方法能夠近似預計圖象信噪比,即信號與噪聲的方差之比。首先計算圖象全部象素的局部方差。將局部方差的最大值覺得是信號方差,最小值是噪聲方差。求出它們的比值,再轉成dB數。最后用經驗公式修正。

假設是灰度圖像的話,SNR=(潔凈圖片中的像素點的灰度值之和)/abs(噪聲圖片的灰度值之和-潔凈圖片中的灰度值之和)為該圖像的信噪比。

給一副數字圖像加上椒鹽噪聲的過程例如以下:

  • (1)指定信噪比 SNR (其取值范圍在[0, 1]之間)
  • (2)計算總像素數目 SP。 得到要加噪的像素數目 NP = SP * (1-SNR)
  • (3)隨機獲取要加噪的每一個像素位置P(i, j)
  • (4)指定像素值為255或者0。

  • (5)反復3,4兩個步驟完畢全部像素的NP個像素
  • (6)輸出加噪以后的圖像

編程實例:

為簡單起見,直接使用灰度圖進行測試。彩色圖的原理是同樣的。

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

from numpy import*

#讀取圖片,灰度化,並轉為數組
img = im = array(Image.open('./source/test.jpg').convert('L'))

#信噪比
SNR = 0.6

#計算總像素數目 SP, 得到要加噪的像素數目 NP = SP * (1-SNR)
noiseNum=int((1- SNR)*img.shape[0]*img.shape[1])

#於隨機位置將像素值隨機指定為0或者255
for i in range(noiseNum):

    randX=random.random_integers(0,img.shape[0]-1)  

    randY=random.random_integers(0,img.shape[1]-1)  

    if random.random_integers(0,1)==0:  

        img[randX,randY]=0  

    else:  

        img[randX,randY]=255   

#顯示圖像
gray()

imshow(img)

show()         

執行結果:

原圖

這里寫圖片描寫敘述

SNR = 0.8

這里寫圖片描寫敘述

SNR = 0.6

這里寫圖片描寫敘述

SNR = 0.4

這里寫圖片描寫敘述

結語:

本篇博客主要介紹了椒鹽噪聲這樣的常見的圖像噪聲。希望對大家有所幫助~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM