摘要:提出了一種面向硬件的均值、方差的高斯隨機(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à)值。本文具體討論了一種面向硬件的高斯噪聲快速生成算法。算法原理為通過(guò)映射表法將均勻噪聲轉(zhuǎn)化生成高斯隨機(jī)噪聲。本方法占有內(nèi)存小、運(yùn)算速度快、精度高。實(shí)驗(yàn)證明該方法能夠?yàn)橐曨l圖像實(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ū)間依次連接起來(lái),中點(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,沒(méi)有實(shí)際意義,所以將其放大了200倍;
則原始映射表描述為:
原始映射表比較大,實(shí)際使用時(shí)對(duì)其做了粗采樣。對(duì)y對(duì)應(yīng)的高斯分布值進(jìn)行的量化也沒(méi)有采用圖4中均標(biāo)準(zhǔn)階梯形式,而是采用了如下粗采樣形式:
結(jié)果映射表[k]=原始映射表[k·d+d/2] (2)
其中:采樣間隔d=∑yi/M.,量化處理曲線如圖5所示。
從圖5可以發(fā)現(xiàn),兩邊較小處并沒(méi)有像階梯圖那樣截止為0,而是允許以小的概率出現(xiàn)非零值。試驗(yàn)證明這種方式更好一些。
考慮高斯分布的實(shí)際情況,并經(jīng)過(guò)試驗(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位來(lái)存儲(chǔ)種子數(shù)的補(bǔ)碼,這樣可以通過(guò)丟掉進(jìn)位的補(bǔ)碼加法來(lái)實(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)過(guò)映射后高斯分布的均值和方差直接等于用戶給定的均值u和方差σ。修改比較簡(jiǎn)單,將映射表中的每一個(gè)單元值y做如下替換:
y=(y*σ)>>7+u
此表中數(shù)據(jù)可以是原碼形式也可以是補(bǔ)碼形式具體需要而定。
- 高斯隨機(jī)(7339)
- 方法研究(7914)
開(kāi)源隨機(jī)數(shù)生成器庫(kù)OpenRNG助力實(shí)現(xiàn)移植到Arm平臺(tái)時(shí)的最佳性能
1898
如何使用PRBS和CMOS器件生成偽隨機(jī)噪聲和二進(jìn)制序列
10305
萬(wàn)用表測(cè)量隨機(jī)噪聲信號(hào)的方案解析
3339基于FIR濾波器的帶限白噪聲的設(shè)計(jì)方案實(shí)現(xiàn)
2463
隨機(jī)信號(hào)分析
高斯過(guò)程回歸GPR和多任務(wù)高斯過(guò)程MTGP
AGILENT回收81160A函數(shù)發(fā)生器
Agilent回收81160A二手示波器
MATLAB中計(jì)算方式生成隨機(jī)序列
Python和Keras在訓(xùn)練期間如何將高斯噪聲添加到輸入數(shù)據(jù)中呢?
【assingle分享】labview隨機(jī)數(shù)發(fā)生器
【總結(jié)】LabVIEW隨機(jī)數(shù)發(fā)生器
一文了解高斯濾波器,附原理及實(shí)現(xiàn)過(guò)程
單片機(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圖像處理怎么給圖片加高斯白噪聲和椒鹽噪聲
流式細(xì)胞儀是怎么實(shí)現(xiàn)信號(hào)的實(shí)時(shí)處理的?
瑞芯微模型量化文件構(gòu)建
相位噪聲的涵義
請(qǐng)問(wèn)怎樣去設(shè)計(jì)一種高斯白噪聲發(fā)生器?
高斯濾波器在實(shí)時(shí)系統(tǒng)中的快速實(shí)現(xiàn)
38仿核脈沖的高斯分布信號(hào)發(fā)生器
37基于多高斯分布的背景生成算法
24基于高斯矩的NoisyICA研究
10抑制微光波前傳感器隨機(jī)噪聲的方法研究
11利用Vondrak方法處理GPs CV觀測(cè)數(shù)據(jù)的隨機(jī)噪聲
14圖像中的高斯和脈沖混合噪聲處理
14Galileo系統(tǒng)偽隨機(jī)序列生成及其FPGA實(shí)現(xiàn)
7基于隨機(jī)變量相似度的ICA方法
5隨機(jī)調(diào)頻信號(hào)旁瓣抑制及成像
9非高斯脈沖噪聲下Turbo均衡性能分析的改進(jìn)EXIT圖方法
14隨機(jī)共振方法在弱信號(hào)檢測(cè)中的應(yīng)用
58基于動(dòng)態(tài)糾錯(cuò)編碼的實(shí)時(shí)視頻通信研究
14一種窄帶非高斯建模方法
9一種改進(jìn)的各向異性高斯濾波算法
19高斯噪聲和白噪聲
0隨機(jī)噪聲對(duì)時(shí)序抖動(dòng)的影響—理論與實(shí)踐
943高斯濾波器在實(shí)時(shí)系統(tǒng)中的快速實(shí)現(xiàn)
1218
基于FPGA的高斯白噪聲發(fā)生器設(shè)計(jì)
5110
鋁基板輸出紋波噪聲的測(cè)試方法
692一種新的混沌RNG的實(shí)現(xiàn)方案及FPGA實(shí)現(xiàn)
1643
周期性信號(hào)中隨機(jī)噪聲的延時(shí)消除技術(shù)
31GPS信號(hào)及其測(cè)量原理(河南理工大學(xué)教程)
0偽隨機(jī)信號(hào)系統(tǒng)應(yīng)用
48加速度信號(hào)隨機(jī)噪聲及趨勢(shì)項(xiàng)實(shí)時(shí)消除方法研究
29一種工作流技術(shù)實(shí)現(xiàn)的應(yīng)急預(yù)案生成方法研究_胡飛虎
0一種隨機(jī)化的軟件模型生成方法
0用于NMR-SAR的波數(shù)域成像算法
2風(fēng)電并網(wǎng)中非線性和隨機(jī)噪聲擾動(dòng)的同步控制
0神經(jīng)網(wǎng)絡(luò)的偽隨機(jī)數(shù)生成方法
0閾值陣列模型下的超閾值隨機(jī)共振信噪比增益
0多變量Laguerre積分隨機(jī)有限元方法
0以人為主體目標(biāo)的圖像理解與編輯任務(wù)
4623FPGA 實(shí)現(xiàn) 高斯濾波
4811
如何使用隨機(jī)數(shù)生成器來(lái)生成私鑰
5605
高斯濾波器的原理和實(shí)現(xiàn)
9188
實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)檢測(cè)的方法詳細(xì)說(shuō)明
14如何實(shí)現(xiàn)微弱信號(hào)檢測(cè)的隨機(jī)共振詳細(xì)方法與應(yīng)用研究
25基于k近鄰與高斯噪聲的虛擬困難樣本增強(qiáng)方法
1860什么是高斯過(guò)程 神經(jīng)網(wǎng)絡(luò)高斯過(guò)程解析
5135MAX765x微處理器的偽隨機(jī)數(shù)生成例程
1402
如何在200 smart中生成偽隨機(jī)數(shù)
8876
聯(lián)合空譜信息的高光譜圖像噪聲估計(jì)
1980
高斯如何得到他理論的結(jié)果?聊聊高斯概率分布的數(shù)學(xué)公式
1833
LM2931-5.0隨機(jī)噪聲發(fā)生器電路原理圖講解
3584
簡(jiǎn)單的射頻噪聲源電路原理圖
2923
閃爍噪聲代碼實(shí)現(xiàn)方法
2053如何使用雪花算法生成真正的隨機(jī)數(shù)
2155基于FPGA圖像處理的高斯模糊實(shí)現(xiàn)
1628
PD放大電路主要的噪聲源是哪些?如何降低PD放大電路噪聲?
1751噪聲分析、誤差分析中,什么類型的噪聲、誤差可以用均方根計(jì)算?
2261講一下有關(guān)運(yùn)算放大器的隨機(jī)噪聲 它是怎么產(chǎn)生的?
1452如何使用Python生成四位隨機(jī)數(shù)字
1966高斯濾波的特點(diǎn)有哪些
1336圖像高斯濾波的原理及FPGA實(shí)現(xiàn)思路
2728
?Diffusion生成式動(dòng)作引擎技術(shù)解析
2826測(cè)量誤差溯源:系統(tǒng)誤差與隨機(jī)誤差的數(shù)學(xué)建模與分離方法
863
電子發(fā)燒友App


評(píng)論