椒鹽噪聲

椒鹽噪聲

圖像噪聲之椒鹽噪聲(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

這裏寫圖片描述

結語:

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

發佈了87 篇原創文章 · 獲贊 204 · 訪問量 76萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章