欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

幾種常見的數(shù)字圖像噪聲,及使用python添加噪聲

系統(tǒng) 2958 0

參考文章:
https://blog.csdn.net/zhoufan900428/article/details/37695357

常見噪聲:高斯噪聲,椒鹽噪聲,泊松噪聲,乘性噪聲

高斯噪聲

概率密度函數(shù)服從高斯分布的噪聲。
產(chǎn)生原因:
1)圖像傳感器在拍攝時(shí)市場(chǎng)不夠明亮、亮度不夠均勻;
2)電路各元器件自身噪聲和相互影響;
3)圖像傳感器長(zhǎng)期工作,溫度過高

泊松噪聲

泊松噪聲,就是符合泊松分布的噪聲模型,泊松分布適合于描述單位時(shí)間內(nèi)隨機(jī)事件發(fā)生的次數(shù)的概率分布。如某一服務(wù)設(shè)施在一定時(shí)間內(nèi)受到的服務(wù)請(qǐng)求的次數(shù),電話交換機(jī)接到呼叫的次數(shù)、汽車站臺(tái)的候客人數(shù)、機(jī)器出現(xiàn)的故障數(shù)、自然災(zāi)害發(fā)生的次數(shù)、DNA序列的變異數(shù)、放射性原子核的衰變數(shù)等等

乘性噪聲

乘性噪聲一般由信道不理想引起,它們與信號(hào)的關(guān)系是相乘,信號(hào)在它在,信號(hào)不在他也就不在。

椒鹽噪聲

椒鹽噪聲,椒鹽噪聲又稱脈沖噪聲,它隨機(jī)改變一些像素值,是由圖像傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點(diǎn)噪聲。
椒鹽噪聲往往由圖像切割引起。

瑞利噪聲

瑞利噪聲相比高斯噪聲而言,其形狀向右歪斜,這對(duì)于擬合某些歪斜直方圖噪聲很有用。
瑞利噪聲的實(shí)現(xiàn)可以借由平均噪聲來(lái)實(shí)現(xiàn)。其matlab實(shí)現(xiàn)如下:

            
              a = -0.2;
b = 0.03;
n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;

            
          

伽馬噪聲

伽馬噪聲的分布,服從了伽馬曲線的分布。伽馬噪聲的實(shí)現(xiàn),需要使用b個(gè)服從指數(shù)分布的噪聲疊加而來(lái)。指數(shù)分布的噪聲,可以使用均勻分布來(lái)實(shí)現(xiàn)。(b=1時(shí)為指數(shù)噪聲,b>1時(shí)通過若干個(gè)指數(shù)噪聲疊加,得到伽馬噪聲)

            
              a = 25;
b = 3;
n_Erlang = zeros(M,N); 
 
 for j=1:b
    n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));
end

            
          

均勻噪聲

使用python的skimage.util.random_noise(image, mode=‘gaussian’, seed=None, clip=True, **kwargs)來(lái)添加噪聲

1.先安裝必要的依賴庫(kù): numpy , scipy , matpoltlib
2.安裝scikit-image

            
              pip install scikit-image

            
          

3.導(dǎo)入util庫(kù)

            
              import skimage
from skimage import util

            
          

4.函數(shù)介紹

            
              
                def
              
              
                random_noise
              
              
                (
              
              image
              
                ,
              
               mode
              
                =
              
              
                'gaussian'
              
              
                ,
              
               seed
              
                =
              
              
                None
              
              
                ,
              
               clip
              
                =
              
              
                True
              
              
                ,
              
              
                **
              
              kwargs
              
                )
              
              
                :
              
              
功能:為浮點(diǎn)型圖片添加各種隨機(jī)噪聲
參數(shù):
image:輸入圖片(將會(huì)被轉(zhuǎn)換成浮點(diǎn)型),ndarray型
mode: 可選擇,
              
                str
              
              型,表示要添加的噪聲類型
	gaussian:高斯噪聲
	localvar:高斯分布的加性噪聲,在“圖像”的每個(gè)點(diǎn)處具有指定的局部方差。
	poisson:泊松再生
	salt:鹽噪聲,隨機(jī)將像素值變成
              
                1
              
              
	pepper:椒噪聲,隨機(jī)將像素值變成
              
                0
              
                -
              
              
                1
              
              ,取決于矩陣的值是否帶符號(hào)
	s
              
                &
              
              p:椒鹽噪聲
	speckle:均勻噪聲(均值mean方差variance),out
              
                =
              
              image
              
                +
              
              n
              
                *
              
              image
seed: 可選的,
              
                int
              
              型,如果選擇的話,在生成噪聲前會(huì)先設(shè)置隨機(jī)種子以避免偽隨機(jī)
clip: 可選的,
              
                bool
              
              型,如果是
              
                True
              
              ,在添加均值,泊松以及高斯噪聲后,會(huì)將圖片的數(shù)據(jù)裁剪到合適范圍內(nèi)。如果誰(shuí)
              
                False
              
              ,則輸出矩陣的值可能會(huì)超出
              
                [
              
              
                -
              
              
                1
              
              
                ,
              
              
                1
              
              
                ]
              
              
mean: 可選的,
              
                float
              
              型,高斯噪聲和均值噪聲中的mean參數(shù),默認(rèn)值
              
                =
              
              
                0
              
              
var:  可選的,
              
                float
              
              型,高斯噪聲和均值噪聲中的方差,默認(rèn)值
              
                =
              
              
                0.01
              
              (注:不是標(biāo)準(zhǔn)差)
local_vars:可選的,ndarry型,用于定義每個(gè)像素點(diǎn)的局部方差,在localvar中使用
amount: 可選的,
              
                float
              
              型,是椒鹽噪聲所占比例,默認(rèn)值
              
                =
              
              
                0.05
              
              
salt_vs_pepper:可選的,
              
                float
              
              型,椒鹽噪聲中椒鹽比例,值越大表示鹽噪聲越多,默認(rèn)值
              
                =
              
              
                0.5
              
              ,即椒鹽等量

              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
返回值:ndarry型,且值在
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ]
              
              或者
              
                [
              
              
                -
              
              
                1
              
              
                ,
              
              
                1
              
              
                ]
              
              之間,取決于是否是有符號(hào)數(shù)

              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
                -
              
              
注意:略(見源碼)

            
          

python中的**kwargs是什么?

https://www.jianshu.com/p/037b6ea516f1這個(gè)講的也很標(biāo)準(zhǔn)(關(guān)于位置參數(shù),默認(rèn)參數(shù),非鍵值可變參數(shù),鍵值可變參數(shù))
*args **kwargs 稱為“可變參數(shù)”,主要用與與函數(shù)定義,它們表示你可以將多個(gè)參數(shù)傳遞給這個(gè)函數(shù)。
這個(gè)“多個(gè)”的含義是,預(yù)先不知道會(huì)傳遞多少個(gè)(由于有些函數(shù)的mode參數(shù)不用,后邊跟的參數(shù)數(shù)量也隨之不同),上邊的添加噪聲函數(shù)就是個(gè)很好例子,有的噪聲不需要均值方差,有的需要。
*args 是用來(lái)發(fā)一個(gè)非鍵值對(duì)的可變數(shù)量的參數(shù)列表給一個(gè)函數(shù),例如

            
              
                def
              
              
                test_var_args
              
              
                (
              
              f_arg
              
                ,
              
              
                *
              
              argv
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "first normal arg:"
              
              
                ,
              
               f_arg
              
                )
              
              
                for
              
               arg 
              
                in
              
               argv
              
                :
              
              
                print
              
              
                (
              
              
                "another arg through *argv:"
              
              
                ,
              
               arg
              
                )
              
              
test_var_args
              
                (
              
              
                'yasoob'
              
              
                ,
              
              
                'python'
              
              
                ,
              
              
                'eggs'
              
              
                ,
              
              
                'test'
              
              
                )
              
            
          

輸出如下

            
              first normal arg
              
                :
              
               yasoob
another arg through 
              
                *
              
              argv
              
                :
              
               python
another arg through 
              
                *
              
              argv
              
                :
              
               eggs
another arg through 
              
                *
              
              argv
              
                :
              
               test

            
          

這說(shuō)明后邊的多個(gè)參數(shù)會(huì)被放進(jìn)一個(gè)名為argv的列表中,而函數(shù)內(nèi)部通過這個(gè)列表使用這些參數(shù)

**kwargs 允許將一個(gè)不定長(zhǎng)度的鍵值對(duì),作為參數(shù)傳遞給函數(shù),如果需要在一個(gè)函數(shù)中處理帶名字的參數(shù),就需要用到kwargs(意思就是kwarg代表很多有名字的參數(shù)),例如

            
              
                def
              
              
                test_args_kwargs
              
              
                (
              
              arg1
              
                ,
              
               arg2
              
                ,
              
               arg3
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "arg1:"
              
              
                ,
              
               arg1
              
                )
              
              
                print
              
              
                (
              
              
                "arg2:"
              
              
                ,
              
               arg2
              
                )
              
              
                print
              
              
                (
              
              
                "arg3:"
              
              
                ,
              
               arg3
              
                )
              
            
          

分別使用*args和**kwargs來(lái)給函數(shù)傳遞參數(shù)

            
              
                >>
              
              
                >
              
               args 
              
                =
              
              
                (
              
              
                "two"
              
              
                ,
              
              
                3
              
              
                ,
              
              
                5
              
              
                )
              
              
                >>
              
              
                >
              
               test_args_kwargs
              
                (
              
              
                *
              
              args
              
                )
              
              
arg1
              
                :
              
               two
arg2
              
                :
              
              
                3
              
              
arg3
              
                :
              
              
                5
              
            
          
            
              
                >>
              
              
                >
              
               kwargs 
              
                =
              
              
                {
              
              
                "arg3"
              
              
                :
              
              
                3
              
              
                ,
              
              
                "arg2"
              
              
                :
              
              
                "two"
              
              
                ,
              
              
                "arg1"
              
              
                :
              
              
                5
              
              
                }
              
              
                >>
              
              
                >
              
               test_args_kwargs
              
                (
              
              
                **
              
              kwargs
              
                )
              
              
arg1
              
                :
              
              
                5
              
              
arg2
              
                :
              
               two
arg3
              
                :
              
              
                3
              
            
          

注意到,kwargs傳遞必須是鍵值對(duì)傳遞,而args只需要順序傳遞進(jìn)去即可

一個(gè)批量添加噪聲的python代碼

            
              
                import
              
               cv2

              
                import
              
               os

              
                import
              
               numpy 
              
                as
              
               np

              
                from
              
               PIL 
              
                import
              
               Image

              
                from
              
               skimage 
              
                import
              
               util


              
                #批處理
              
              
path
              
                =
              
              
                'F:/0.MaskRCNN(3 times)/hook_data/Mask/test3'
              
              
                #圖片文件夾路徑
              
              
image_names
              
                =
              
              os
              
                .
              
              listdir
              
                (
              
              path
              
                )
              
              
                #列舉path下所有文件和文件夾名稱(返回一個(gè)list)
              
              
save_dir
              
                =
              
              os
              
                .
              
              path
              
                .
              
              join
              
                (
              
              path
              
                ,
              
              
                'speckle(0,0.1)_test03'
              
              
                )
              
              
                #我的文件夾名稱
              
              
os
              
                .
              
              mkdir
              
                (
              
              save_dir
              
                )
              
              
                for
              
               image_name 
              
                in
              
               image_names
              
                :
              
              
                if
              
              
                (
              
              image_name
              
                .
              
              endswith
              
                (
              
              
                '.jpg'
              
              
                )
              
              
                )
              
              
                :
              
               
        img
              
                =
              
              Image
              
                .
              
              
                open
              
              
                (
              
              os
              
                .
              
              path
              
                .
              
              join
              
                (
              
              path
              
                ,
              
              image_name
              
                )
              
              
                )
              
              
        img
              
                =
              
              np
              
                .
              
              array
              
                (
              
              img
              
                )
              
              
        noise_gs_img
              
                =
              
              util
              
                .
              
              random_noise
              
                (
              
              img
              
                ,
              
              mode
              
                =
              
              
                'speckle'
              
              
                )
              
              
        noise_gs_img
              
                =
              
              noise_gs_img
              
                *
              
              
                255
              
              
                #由于輸出是[0,1]的浮點(diǎn)型,先轉(zhuǎn)成灰度圖(我的輸入就是灰度圖)
              
              
        noise_gs_img
              
                =
              
              noise_gs_img
              
                .
              
              astype
              
                (
              
              np
              
                .
              
              
                int
              
              
                )
              
              
                #再變成整型數(shù)組
              
              
        cv2
              
                .
              
              imwrite
              
                (
              
              os
              
                .
              
              path
              
                .
              
              join
              
                (
              
              save_dir
              
                ,
              
              image_name
              
                )
              
              
                ,
              
              noise_gs_img
              
                )
              
              
                #保存到新建的文件夾
              
            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美手机看片 | 日韩系列 | 亚洲高清视频在线 | 久久久蜜桃 | 福利在线免费 | 天天躁日日躁狠狠很躁 | 日日骚视频 | 久草在线在线精品观看 | 成人免费观看网欧美片 | 免费成人在线观看 | 亚洲午夜精品A片久久不卡蜜桃 | 日韩在线国产精品 | 成人精品鲁一区一区二区 | gvg668| 国产乱肥老妇国产一区二 | 亚洲一区二区三区在线影院 | 亚洲国产精品一区二区第一页 | 爱操影视| 日本亚洲精品色婷婷在线影院 | 色婷婷综合久久久久中文一区二区 | 亚洲人成人 | 成人综合久久精品色婷婷 | 日韩成人在线播放 | 国产高清成人 | 天天插天天干天天射 | 美女视频黄在线观看 | 午夜欧美一区二区三区在线播放 | 欧美另类亚洲 | 天天摸夜夜操 | 欧美国产中文 | 欧日韩在线视频 | 天天干影视 | 亚洲品质自拍视频网站 | 国产欧美一区二区成人影院 | 欧美视频在线一区二区三区 | 日本大学生免费一级一片 | 色婷婷综合久久久中字幕精品久久 | 亚洲精品午夜国产va久久成人 | 国产亚洲精品久久久久久久久动漫 | 国产v视频 | 亚洲欧洲日本天天堂在线观看 |