欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Opencv圖像添加椒鹽噪聲、高斯濾波去除噪聲原理以及手寫Python代碼實現(xiàn)方法

 更新時間:2022年09月26日 11:43:50   作者:泡泡怡  
椒鹽噪聲的特征非常明顯,為圖像上有黑色和白色的點,下面這篇文章主要給大家介紹了關(guān)于Opencv圖像添加椒鹽噪聲、高斯濾波去除噪聲原理以及手寫Python代碼實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

一、噪聲 

 我們將常會聽到平滑(去噪),銳化(和平滑是相反的),那我們就會有疑惑?什么是噪聲呢?圖像噪聲是指存在于圖像數(shù)據(jù)中不必要的或多余的干擾信息,噪聲的存在嚴重影響了圖像的質(zhì)量。噪聲在理論上是”不可預測“的,所以我們只能用概率論方法認識“隨機誤差”。

二、噪聲的分類

光電管的噪聲、攝像管噪聲、攝像機噪聲、椒鹽噪聲(數(shù)字圖像常見的噪聲,椒鹽噪聲就是在圖像上隨機出現(xiàn)黑色白色的像素)等等。

三、圖像中添加椒鹽噪聲

椒鹽噪聲又被稱作脈沖噪聲,它會隨機改變圖像中的像素值,是由相機成像、圖像傳輸、解碼處理等過程產(chǎn)生的黑白相間的亮暗點噪聲,其樣子就像在圖像上隨機的撒上一些鹽粒和黑椒粒,因此被稱為椒鹽噪聲。

代碼如下:

import numpy as np
import cv2
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
def add_sp_noise(img,sp_number):
    new_image=img
    row,col,channel=img.shape#獲取行列,通道信息
    s=int(sp_number*img.size/channel)#根據(jù)sp_number確定椒鹽噪聲
    #確定要掃椒鹽的像素值
    change=np.concatenate((np.random.randint(0,row,size=(s,1)),np.random.randint(0,col,size=(s,1))),axis=1)
    for i in range(s):
        r=np.random.randint(0,2)#確定撒椒(0)還是鹽(1)
        for j in range(channel):
            new_image[change[i,0],change[i,1],j]=r
    return new_image

注意:在進行實驗的時候,我們需要注意要進行拷貝不然原圖會被破壞。

測試:

img=cv2.imread("C:/Users/bwy/Desktop/peppers.JPG")
im=img.copy()
im2=img.copy()
im3=img.copy()
im=add_sp_noise(im,0.05)
im2=add_sp_noise(im2,0.1)
im3=add_sp_noise(im3,0.3)
r=np.hstack((img,im,im2,im3))
cv_show('r',r)

結(jié)果如圖所示:

 從圖上看出,sp_number越大,噪聲點越多。

四、基于濾波器方法去噪

高斯濾波(手寫代碼):濾掉噪聲的代價就是圖像會有所模糊。

計算過程:

此時還要確保這九個點加起來為1(高斯模板的特性),這9個點的權(quán)重為0.4787147,因此將9個值都除以0.4787147,得到最終的高斯模板。

再與圖像像素進行乘積,四周加和代替中間的。

(1)灰度圖像高斯濾波:

def gaosi_f(img,k_size,sigma):
    ##濾波圖片的尺寸
    h=img.shape[0]
    w=img.shape[1]
    ##用0填充邊緣
    pad=k_size//2
    transform_img=np.zeros((h+2*pad,w+2*pad))
    transform_img[pad:h+pad,pad:w+pad]=img
    new_img=np.zeros((h,w))
    
    ##先計算高斯濾波核
    gaosi_filter=np.zeros((k_size,k_size))
    for x in range(-pad,-pad+k_size):
        for y in range(-pad,-pad+k_size):
            gaosi_filter[y+pad,x+pad]=np.exp(-(x**2+y**2)/(2*sigma**2))/(2*np.pi*sigma**2)
    gaosi_filter=gaosi_filter/np.sum(gaosi_filter)
    
    ##計算濾波后的圖片
    for i in range(pad,h+pad):
        for j in range(pad,w+pad):
            ##取圖像k_size x k_size的像素值
            p_img=transform_img[i-pad:i+pad+1,j-pad:j+pad+1]
            ##進行高斯濾波
            value=np.sum(np.multiply(p_img,gaosi_filter))
            new_img[i-pad,j-pad]=value
    ##對濾波后的圖片中的像素值取整
    new_img=np.round(new_img).astype(np.uint8)
    
    return new_img

彩色圖像高斯濾波:

def gaosi_fS(img,k_size,sigma):
    h=img.shape[0]
    w=img.shape[1]
    imShape=img.shape
    dim=len(imShape)
    if dim==2:
        eim=gaosi_f(img,k_size,sigma)
    else:
        imR=img[:,:,0]
        imG=img[:,:,1]
        imB=img[:,:,2]
        eim=np.zeros((h,w,3))
        eimr=gaosi_f(imR,k_size,sigma)
        eimg=gaosi_f(imG,k_size,sigma)
        eimb=gaosi_f(imB,k_size,sigma)
        eim[:,:,0]=eimr
        eim[:,:,1]=eimg
        eim[:,:,2]=eimb
    return eim

測試:

new_img=gaosi_fS(im,3,0.5)
cv_show("new_img",new_img)
cv_show("im",im)

結(jié)果如圖所示:

五、opencv高斯濾波調(diào)包 

aussian = cv2.GaussianBlur(im, (5,5), 1)
cv_show("aussian",aussian)

結(jié)果如圖所示:

總結(jié) 

到此這篇關(guān)于Opencv圖像添加椒鹽噪聲、高斯濾波去除噪聲原理以及手寫Python代碼實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Opencv添加椒鹽噪聲高斯濾波去除噪聲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)CART決策樹算法及詳細注釋

    Python實現(xiàn)CART決策樹算法及詳細注釋

    CART算法是一種樹構(gòu)建算法,既可以用于分類任務(wù),又可以用于回歸,本文僅討論基本的CART分類決策樹構(gòu)建,不討論回歸樹和剪枝等問題,感興趣的朋友跟隨小編一起看看吧
    2021-10-10
  • django js實現(xiàn)部分頁面刷新的示例代碼

    django js實現(xiàn)部分頁面刷新的示例代碼

    今天小編就為大家分享一篇django js實現(xiàn)部分頁面刷新的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Pytorch中torch.nn.Softmax的dim參數(shù)用法說明

    Pytorch中torch.nn.Softmax的dim參數(shù)用法說明

    這篇文章主要介紹了Pytorch中torch.nn.Softmax的dim參數(shù)用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Python dict的使用誤區(qū)你知道嗎

    Python dict的使用誤區(qū)你知道嗎

    這篇文章主要為大家介紹了Python dict的使用誤區(qū),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python操作串口的方法

    Python操作串口的方法

    這篇文章主要介紹了Python操作串口的方法,以一個簡單實例分析了Python操作串口echo輸出的方法,需要的朋友可以參考下
    2015-06-06
  • Python利用正則表達式實現(xiàn)計算器算法思路解析

    Python利用正則表達式實現(xiàn)計算器算法思路解析

    這篇文章主要介紹了Python利用正則表達式實現(xiàn)計算器算法思路解析,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-04-04
  • 微信公眾號腳本-獲取熱搜自動新建草稿并發(fā)布文章

    微信公眾號腳本-獲取熱搜自動新建草稿并發(fā)布文章

    本來想寫一個自動化發(fā)布微信公眾號的小綠書的腳本,但是微信公眾號官網(wǎng)沒有小綠書的接口,那就寫一個獲取熱搜微信普通文章的腳本吧,這篇文章主要介紹了微信公眾號腳本-獲取熱搜自動新建草稿并發(fā)布文章
    2025-04-04
  • python爬蟲篩選工作實例講解

    python爬蟲篩選工作實例講解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python爬蟲篩選工作實例講解內(nèi)容,有需要的朋友們可以參考下。
    2020-11-11
  • Python try-except-else-finally的具體使用

    Python try-except-else-finally的具體使用

    本文主要介紹了Python try-except-else-finally的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 程序員的七夕用30行代碼讓Python化身表白神器

    程序員的七夕用30行代碼讓Python化身表白神器

    轉(zhuǎn)眼又到了咱們中國傳統(tǒng)的情人節(jié)七夕了,今天筆者就帶大家來領(lǐng)略一下用Python表白的方式,感興趣的朋友跟隨小編一起看看吧
    2019-08-08

最新評論