霧看OpenCV 6 椒鹽雜訊與高斯雜訊

2021-10-20 12:55:10 字數 3368 閱讀 7429

參考(1) 椒鹽雜訊

椒鹽雜訊也稱脈衝雜訊,它是一種隨機出現的白點或者黑點,可能是亮的區域有黑色畫素或是在暗的區域有白色畫素(或是兩者皆有)。

影象模擬新增椒鹽雜訊是通過:隨機獲取畫素點,並設定為高亮度點和低亮度點來實現的。

(2) 高斯雜訊

高斯雜訊是指概率密度函式服從高斯分布的一類雜訊。

特別的,如果乙個雜訊,它的幅度分布服從高斯分布,而它的功率譜密度服從均勻分布,則稱這個雜訊為高斯白雜訊。

高斯白雜訊 功率譜密度頻譜圖 和 雜訊幅值分布圖的如下:

效果圖

code

import cv2 as cv

import numpy as np

# 將rgb顏色通道的影象轉為灰色

def rgb2gray

(img)

: h=img.shape[0]

w=img.shape[1]

img1=np.

zeros

((h,w)

,np.uint8)

for i in range

(h):

for j in range

(w):

# 變成灰色的公式

img1[i,j]

=0.144

*img[i,j,0]

+0.587

*img[i,j,1]

+0.299

*img[i,j,2]

return img1

# 新增雜訊

def sp_noise

(img,snr)

: h=img.shape[0]

w=img.shape[1]

img1=img.

copy()

sp=h*w # 計算影象畫素點個數

np=int(sp*(1

-snr)

) # 計算影象椒鹽雜訊點個數

for i in range (np)

: randx=np.random.

randint(1

,h-1

) # 生成乙個 1 至 h-

1 之間的隨機整數

randy=np.random.

randint(1

,w-1

) # 生成乙個 1 至 w-

1 之間的隨機整數

if np.random.

random()

<=

0.5: # np.random.

random

()生成乙個 0 至 1 之間的浮點數

img1[randx,randy]=0

else

: img1[randx,randy]

=255

return img1

# 新增高斯雜訊

def gasuss_noise

(image, mean=

0, var=

0.001):

''' 新增高斯雜訊

mean : 均值

var : 方差

) # 將訊雜比設定為0.98

# cv2.gaussianblur(grayimage, ksize=(9, 9), sigmax=0, sigmay=0) 這段**也是可以新增高斯雜訊的,更方便,但是不符合實驗的初衷

gasuss_noiseimage=

gasuss_noise

(grayimage,0,

0.02

) # 將訊雜比設定為0.98,就是將雜訊的比例設定為0.02

()

在這裡面,我也用imwrite寫入資料夾之中了。讓後續可用。

給影象新增各種雜訊

opencv6 最小外接矩形minAreaRect

最近在做目標跟蹤相關的實驗,其中牽涉到最小外接矩形或最小外接圓形的函式使用,把自己實驗的過程記錄一下,希望可以幫助大家。minarearect 函式用於給定的2d點集,函式原型 rotatedrect minarearect inputarray points 只有乙個輸入引數,型別可以是vecto...

OpenCV實踐之路 暗通道去霧簡單實現

參考 環境引數 vs2010 opencv 2.4.13 i x 待去霧的影象 j x 無霧影象 a 全球大氣光成分 t 折射率 大氣傳遞係數 在無霧影象中,每乙個區域性區域都很有可能會有陰影,或者是純顏色的東西,又或者是黑色的東西。因此,每乙個區域性區域都很有可能有至少乙個顏色通道會有很低的值。把...

OpenCV學習記錄6

一 學習內容 1 獲取影象座標處的畫素值,並修改圖對比度 二 include include using namespace std using namespace cv int main int argc,char ar char figure name figure1 namedwindow f...