摘要:提出了一種面向硬件的均值、方差的高斯隨機(jī)噪聲生成方法。改進(jìn)了傳統(tǒng)的采用蒙特卡洛方法實(shí)現(xiàn)均勻分布噪聲到同分布噪聲的快速轉(zhuǎn)化,利用映射函數(shù)方法實(shí)現(xiàn)個(gè)轉(zhuǎn)為,最大隨度地降低運(yùn)算量。實(shí)驗(yàn)證明本方法具有快速、高精度等優(yōu)點(diǎn).
高斯隨機(jī)噪聲在信號(hào)分析和處理中具有重要的價(jià)值。本文具體討論了一種面向硬件的高斯噪聲快速生成算法。算法原理為通過映射表法將均勻噪聲轉(zhuǎn)化生成高斯隨機(jī)噪聲。本方法占有內(nèi)存小、運(yùn)算速度快、精度高。實(shí)驗(yàn)證明該方法能夠?yàn)?a href="http://www.asorrir.com/v/" target="_blank">視頻圖像實(shí)時(shí)添加高斯噪聲。
圖1
原理框圖如圖1所示。圖1左半部分為均勻噪聲生成部分,采用模數(shù)取余法,依靠已有的K個(gè)隨機(jī)數(shù)種子,不斷生成新的隨機(jī)數(shù),并將之向外輸出。圖1右半部分采用左半部分的輸出值生成映射表地址,將查表后得到的結(jié)果輸出,即為所要求的高斯噪聲值結(jié)果。
1 生成均勻分布噪聲
設(shè)x(1),…,x(k)是給定的k個(gè)隨機(jī)數(shù),在(-X,X)內(nèi)均勻分布,相互獨(dú)立。第k+1個(gè)隨機(jī)數(shù)由x(1)和x(k)按照模X相加得到:
即x(k+1)仍然是(-X,X)之間的隨機(jī)數(shù)。在下一次運(yùn)算時(shí),將x(k+1)移到x(k)的位置,xk)移到x(k-1),……,x(2)移到x{1},然后再做模X運(yùn)算,相加得到x(k+2),如此循環(huán),產(chǎn)生序列{xn}。
首先討論上面的模X運(yùn)算。對(duì)于采用補(bǔ)碼運(yùn)算的處理器而言,只要取X為處理器字長(zhǎng),則在不考慮進(jìn)位的情況下,通常的加法就是模加運(yùn)算。
然后采用數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上面的循環(huán)機(jī)制。設(shè)兩個(gè)指針:頭指針head和尾指針tail。每計(jì)算完一次噪聲值后,兩個(gè)指針都要向下移動(dòng)一個(gè)位置。已到序列尾部,則重新指到序列的頭部,即按照加1模K運(yùn)算:
為了計(jì)算方便,選K為256。若用head和lnil指針做相對(duì)偏移地址,則可以采用1個(gè)字節(jié)存儲(chǔ)。加1運(yùn)算之后若不考慮溢出,就等價(jià)于加1模256操作。
2 映射高斯噪聲
為了由均勻噪聲快速產(chǎn)生高斯噪聲,采用了映射函數(shù)法。其算法原理如圖2所示。
將正態(tài)分布函數(shù)的自變量y進(jìn)行合理的離散化,得到一系列函數(shù)值,構(gòu)成一個(gè)數(shù)列。再將此數(shù)列中的任一個(gè)數(shù)yi映射到數(shù)軸x上的某個(gè)小區(qū)間段[xi0,xi1],其中‖xi1-xi0‖=yi。取遍數(shù)列中所有的數(shù)值,得到一系列的小區(qū)間。將所有的小區(qū)間依次連接起來,中點(diǎn)置于數(shù)軸的零點(diǎn),則構(gòu)成變量x的取值區(qū)間[-x,x]。將數(shù)軸x上的各個(gè)小區(qū)間與y序列建立映射關(guān)系,則可以證明,如果采樣間隔足夠小,那么x域中的隨機(jī)分布將對(duì)應(yīng)于y域中的高斯分布。
這個(gè)映射關(guān)系可以函數(shù)表示為y=f(x)。
其中x服從(-X,X)區(qū)間內(nèi)均勻分布,而y服從均值為u、方差為σ的高斯分布。f函數(shù)曲線如圖3所示。
在算法實(shí)現(xiàn)時(shí),對(duì)y對(duì)應(yīng)的高斯分布值進(jìn)行量化處理,并為x分配一塊連續(xù)的內(nèi)存區(qū)域[0,2X],每個(gè)內(nèi)存單元的(偏移地址-X)值代表了x值大小,單元內(nèi)容存放了該單元對(duì)應(yīng)的丁值。這片內(nèi)存區(qū)域就是所需要的映射查找表。這個(gè)表具有通用性,可以預(yù)先計(jì)算好,在需要時(shí)可¨直接使用,不必再計(jì)算。
對(duì)于(0,1)正態(tài)分布,圖4中的zi都小于1,沒有實(shí)際意義,所以將其放大了200倍;
則原始映射表描述為:
原始映射表比較大,實(shí)際使用時(shí)對(duì)其做了粗采樣。對(duì)y對(duì)應(yīng)的高斯分布值進(jìn)行的量化也沒有采用圖4中均標(biāo)準(zhǔn)階梯形式,而是采用了如下粗采樣形式:
結(jié)果映射表[k]=原始映射表[k·d+d/2] (2)
其中:采樣間隔d=∑yi/M.,量化處理曲線如圖5所示。
從圖5可以發(fā)現(xiàn),兩邊較小處并沒有像階梯圖那樣截止為0,而是允許以小的概率出現(xiàn)非零值。試驗(yàn)證明這種方式更好一些。
考慮高斯分布的實(shí)際情況,并經(jīng)過試驗(yàn)驗(yàn)證y僅在[-4,4]之間取值,就能夠達(dá)到令人滿意的精度。圖6給出了X大小對(duì)噪聲精度的影響曲線,縱軸為平均誤差。
可以看出,當(dāng)2X大于5500時(shí),誤差達(dá)到了極小穩(wěn)定狀態(tài)。為了方便計(jì)算,選擇2X=213=8192,即X=212=4096。
圖7給出了實(shí)驗(yàn)結(jié)果(均值為120,方差為40):虛線部分為標(biāo)準(zhǔn)高斯分布的曲線,實(shí)線部分為噪聲直方圖,驗(yàn)證了本方法的有效性。
3 精度討論
該方法主要利用兩個(gè)表:一個(gè)是循環(huán)產(chǎn)生均勻噪聲的表;另一個(gè)是映射表。這兩個(gè)表的數(shù)值都可以由前面介紹的方法計(jì)算,下面只討論它們的精度取舍。
循環(huán)表中256個(gè)種子的精度要求與映射表的大小有直接關(guān)系,對(duì)映射表采用了8192(8K)個(gè)單元。因此循環(huán)表的任務(wù)就是要在區(qū)間[-4096,4096]內(nèi)產(chǎn)生均勻分布的隨機(jī)數(shù)。所以循環(huán)表中的種子序列x(1),…,x(256)在[-4096,4096]內(nèi)均勻分布。為了方便計(jì)算,將種子序列的分布調(diào)整到[-(2115-1),(215-1)]之間,即X=215=32767。所以可以采用包含1位符號(hào)位共計(jì)16位來存儲(chǔ)種子數(shù)的補(bǔ)碼,這樣可以通過丟掉進(jìn)位的補(bǔ)碼加法來實(shí)現(xiàn)模X加運(yùn)算。補(bǔ)碼運(yùn)算結(jié)果的高13位或右移3位,可以直接作映射表的偏名地址進(jìn)行后續(xù)查表操作,并且滿足在[-4096,4096]內(nèi)均勻分布。
考慮實(shí)際情況下,待求的高斯噪聲分布的方差一般介于(0,100)之間,均值一般介于[-255,255]之間。而實(shí)際圖像灰度值是以整數(shù)[0,255]形式存在,所以噪聲的精度只要控制在整數(shù)范圍內(nèi)即可,映射表的精度只要達(dá)到0.0l就足夠了。而映射表中數(shù)據(jù)的分布介于[-4.00,4.00]之間,若以整數(shù)形式存儲(chǔ),將原始數(shù)據(jù)乘以128后就完全可以存放在16位長(zhǎng)度單元中。
也可以在此基礎(chǔ)上對(duì)表進(jìn)行修改,使得經(jīng)過映射后高斯分布的均值和方差直接等于用戶給定的均值u和方差σ。修改比較簡(jiǎn)單,將映射表中的每一個(gè)單元值y做如下替換:
y=(y*σ)>>7+u
此表中數(shù)據(jù)可以是原碼形式也可以是補(bǔ)碼形式具體需要而定。
- 高斯隨機(jī)(7236)
- 方法研究(7777)
相關(guān)推薦
如何使用PRBS和CMOS器件生成偽隨機(jī)噪聲和二進(jìn)制序列


萬用表測(cè)量隨機(jī)噪聲信號(hào)的方案解析

隨機(jī)信號(hào)分析
高斯過程回歸GPR和多任務(wù)高斯過程MTGP
AGILENT回收81160A函數(shù)發(fā)生器
Agilent回收81160A二手示波器
MATLAB中計(jì)算方式生成隨機(jī)序列
Python和Keras在訓(xùn)練期間如何將高斯噪聲添加到輸入數(shù)據(jù)中呢?
【TL6748 DSP申請(qǐng)】噪聲實(shí)時(shí)分析系統(tǒng)
【assingle分享】labview隨機(jī)數(shù)發(fā)生器
【總結(jié)】LabVIEW隨機(jī)數(shù)發(fā)生器
一文了解高斯濾波器,附原理及實(shí)現(xiàn)過程
什么是電阻的固有噪聲?
單片機(jī)生成隨機(jī)數(shù)的方法
回收81160A-二手81160A脈沖函數(shù)任意噪聲發(fā)生器
在 Linux上生成隨機(jī)密碼的方法
基于級(jí)聯(lián)PLL的超低噪聲精密時(shí)鐘抖動(dòng)濾除技術(shù)仿真和研究設(shè)計(jì)
如何用C語(yǔ)言生成高斯粗糙面
如何自定義高斯白噪聲功率和帶寬?
急求大神!怎么將Labview中的高斯白噪聲進(jìn)行信噪比分析?
急求教:LabVIEW圖像處理怎么給圖片加高斯白噪聲和椒鹽噪聲
求大神幫忙,labview如何不斷產(chǎn)生高斯脈沖對(duì)信號(hào)?
求程序,matlab圖像處理添加椒鹽噪聲,高斯噪聲,乘性噪聲然后用sobel,roberts,prewitt濾波去噪。
流式細(xì)胞儀是怎么實(shí)現(xiàn)信號(hào)的實(shí)時(shí)處理的?
相位噪聲的涵義
請(qǐng)問怎樣去設(shè)計(jì)一種高斯白噪聲發(fā)生器?
高斯濾波器在實(shí)時(shí)系統(tǒng)中的快速實(shí)現(xiàn)

基于多高斯分布的背景生成算法

基于高斯矩的NoisyICA研究

抑制微光波前傳感器隨機(jī)噪聲的方法研究

利用Vondrak方法處理GPs CV觀測(cè)數(shù)據(jù)的隨機(jī)噪聲

圖像中的高斯和脈沖混合噪聲處理

Galileo系統(tǒng)偽隨機(jī)序列生成及其FPGA實(shí)現(xiàn)

基于隨機(jī)變量相似度的ICA方法

隨機(jī)調(diào)頻信號(hào)旁瓣抑制及成像

非高斯脈沖噪聲下Turbo均衡性能分析的改進(jìn)EXIT圖方法

隨機(jī)共振方法在弱信號(hào)檢測(cè)中的應(yīng)用

基于動(dòng)態(tài)糾錯(cuò)編碼的實(shí)時(shí)視頻通信研究

一種窄帶非高斯建模方法

一種改進(jìn)的各向異性高斯濾波算法

高斯噪聲和白噪聲

多區(qū)域視頻監(jiān)控入侵檢測(cè)報(bào)警方法的研究

隨機(jī)噪聲對(duì)時(shí)序抖動(dòng)的影響—理論與實(shí)踐

高斯濾波器在實(shí)時(shí)系統(tǒng)中的快速實(shí)現(xiàn)


基于FPGA的高斯白噪聲發(fā)生器設(shè)計(jì)


鋁基板輸出紋波噪聲的測(cè)試方法

周期性信號(hào)中隨機(jī)噪聲的延時(shí)消除技術(shù)

GPS信號(hào)及其測(cè)量原理(河南理工大學(xué)教程)

偽隨機(jī)信號(hào)系統(tǒng)應(yīng)用

CMOS數(shù)字?jǐn)z像機(jī)及成像噪聲分析

加速度信號(hào)隨機(jī)噪聲及趨勢(shì)項(xiàng)實(shí)時(shí)消除方法研究

基于多新息隨機(jī)梯度算法的網(wǎng)側(cè)變流器參數(shù)辨識(shí)方法研究

一種工作流技術(shù)實(shí)現(xiàn)的應(yīng)急預(yù)案生成方法研究_胡飛虎

隨機(jī)信號(hào)分析

基于超混沌的自適應(yīng)異步抗噪聲保密通信方案

基于蒙特卡羅模擬修正的隨機(jī)矩陣去噪方法

一種隨機(jī)化的軟件模型生成方法

用于NMR-SAR的波數(shù)域成像算法

零相關(guān)區(qū)高斯整數(shù)序列集構(gòu)造法

風(fēng)電并網(wǎng)中非線性和隨機(jī)噪聲擾動(dòng)的同步控制

神經(jīng)網(wǎng)絡(luò)的偽隨機(jī)數(shù)生成方法

閾值陣列模型下的超閾值隨機(jī)共振信噪比增益

偽隨機(jī)數(shù)生成算法

以人為主體目標(biāo)的圖像理解與編輯任務(wù)

在實(shí)時(shí)嵌入式平臺(tái)上信號(hào)處理的實(shí)現(xiàn)方法與應(yīng)用


基于熱噪聲的TRNG電路設(shè)計(jì)方法


FPGA 實(shí)現(xiàn) 高斯濾波


高斯濾波器的原理和實(shí)現(xiàn)


實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)檢測(cè)的方法詳細(xì)說明

如何實(shí)現(xiàn)微弱信號(hào)檢測(cè)的隨機(jī)共振詳細(xì)方法與應(yīng)用研究

一種整數(shù)上離散高斯取樣的常數(shù)時(shí)間實(shí)現(xiàn)方法

基于k近鄰與高斯噪聲的虛擬困難樣本增強(qiáng)方法

什么是高斯過程 神經(jīng)網(wǎng)絡(luò)高斯過程解析

如何在200 smart中生成偽隨機(jī)數(shù)


聯(lián)合空譜信息的高光譜圖像噪聲估計(jì)


高斯如何得到他理論的結(jié)果?聊聊高斯概率分布的數(shù)學(xué)公式


LM2931-5.0隨機(jī)噪聲發(fā)生器電路原理圖講解


閃爍噪聲代碼實(shí)現(xiàn)方法

如何使用雪花算法生成真正的隨機(jī)數(shù)

基于FPGA圖像處理的高斯模糊實(shí)現(xiàn)


PD放大電路主要的噪聲源是哪些?如何降低PD放大電路噪聲?

噪聲分析、誤差分析中,什么類型的噪聲、誤差可以用均方根計(jì)算?

講一下有關(guān)運(yùn)算放大器的隨機(jī)噪聲 它是怎么產(chǎn)生的?

評(píng)論