《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 高斯隨機噪聲實時生成實現方法研究

高斯隨機噪聲實時生成實現方法研究

2008-09-08
作者:張 萍 戴光明

??? 摘 要: 提出了一種面向硬件的任意均值、方差的高斯" title="高斯">高斯隨機噪聲生成方法。改進了傳統的采用蒙特卡洛方法實現均勻分布" title="均勻分布">均勻分布噪聲到隨機分布噪聲的快速轉化,采用映射函數方法實現這個轉變,最大限度地降低了運算量。實驗證明本方法具有快速、高精度等優點。
?? ?關鍵詞: 高斯隨機噪聲 實時 圖像

?

??? 高斯隨機噪聲在信號分析和處理中具有重要的價值。本文具體討論了一種面向硬件的高斯噪聲快速生成算法。算法原理為通過映射表法將均勻噪聲轉化生成高斯隨機噪聲。本方法占有內存小、運算速度快、精度高。實驗證明該方法能夠為視頻圖像實時添加高斯噪聲。
??? 原理框圖如圖1所示。圖1左半部分為均勻噪聲生成部分,采用模數取余法,依靠已有的K個隨機數" title="隨機數">隨機數種子,不斷生成新的隨機數,并將之向外輸出。圖1右半部分采用左半部分的輸出值生成映射表地址,將查表" title="查表">查表后得到的結果輸出,即為所要求的高斯噪聲值結果。

?


1 生成均勻分布噪聲
??? 設x(1),…,x(k)是給定的k個隨機數,在(-X,X)內均勻分布,相互獨立。第k+1個隨機數由x(1)和x(k)按照模X相加得到:

???

??? 即x(k+1)仍然是(-X,X)之間的隨機數。在下一次運算時,將x(k+1)移到x(k)的位置,x(k)移到x(k-1),……,x(2)移到x(1),然后再做模X運算,相加得到x(k+2),如此循環,產生序列{xn}。
??? 首先討論上面的模X運算。對于采用補碼運算的處理器而言,只要取X為處理器字長,則在不考慮進位的情況下,通常的加法就是模加運算。
??? 然后采用數據結構實現上面的循環機制。設兩個指針:頭指針head和尾指針tail。每計算完一次噪聲值后,兩個指針都要向下移動一個位置。已到序列尾部,則重新指到序列的頭部,即按照加1模K運算:
??? head=(head+1)mod(K)
?? ?tail=(tail+1)mod(K)
??? 為了計算方便,選K為256。若用head和tail指針做相對偏移地址,則可以采用1個字節存儲。加1運算之后若不考慮溢出,就等價于加1模256操作。
2 映射高斯噪聲
??? 為了由均勻噪聲快速產生高斯噪聲,采用了映射函數法。其算法原理如圖2所示。

?


??? 將正態分布函數的自變量y進行合理的離散化,得到一系列函數值,構成一個數列。再將此數列中的任一個數yi映射到數軸x上的某個小區間段[xi0,xi1],其中||xi1-xi0||=yi。取遍數列中所有的數值,得到一系列的小區間。將所有的小區間依次連接起來,中點置于數軸的零點,則構成變量x的取值區間[-x,x]。將數軸x上的各個小區間與y序列建立映射關系,則可以證明,如果采樣間隔足夠小,那么x域中的隨機分布將對應于y域中的高斯分布" title="高斯分布">高斯分布。
??? 這個映射關系可以函數表示為:y=f(x)。
??? 其中x服從(-X,X)區間內均勻分布,而y服從均值為u、方差為σ的高斯分布。f函數曲線如圖3所示。

?


??? 在算法實現時,對y對應的高斯分布值進行量化處理,并為x分配一塊連續的內存區域[0,2X],每個內存單元的(偏移地址-X)值代表了x值大小,單元內容存放了該單元對應的y值。這片內存區域就是所需要的映射查找表。這個表具有通用性,可以預先計算好,在需要時可以直接使用,不必再計算。
??? 對于(0,1)正態分布,圖4中的zi都小于1,沒有實際意義,所以將其放大了200倍:

?


??? 則原始映射表描述為:


??? 原始映射表比較大,實際使用時對其做了粗采樣。對y對應的高斯分布值進行的量化也沒有采用圖4中的標準階梯形式,而是采用了如下粗采樣形式:
???

?? ?其中:采樣間隔d=Σyj/M,量化處理曲線如圖5所示。

?


??? 從圖5可以發現,兩邊較小處并沒有像階梯圖那樣截止為0,而是允許以小的概率出現非零值。試驗證明這種方式更好一些。
??? 考慮高斯分布的實際情況,并經過試驗驗證y僅在[-4,4]之間取值,就能夠達到令人滿意的精度。圖6給出了X大小對噪聲精度的影響曲線,縱軸為平均誤差。

?


??? 可以看出,當2X大于5500時,誤差達到了極小穩定狀態。為了方便計算,選擇2X=213=8192,即X=212=4096。
??? 圖7給出了實驗結果(均值為120,方差為40):虛線部分為標準高斯分布的曲線,實線部分為噪聲直方圖,驗證了本方法的有效性。

?

?

3 精度討論
??? 該方法主要利用兩個表:一個是循環產生均勻噪聲的表;另一個是映射表。這兩個表的數值都可以由前面介紹的方法計算,下面只討論它們的精度取舍。
??? 循環表中256個種子的精度要求與映射表的大小有直接關系,對映射表采用了8192(8K)個單元。因此循環表的任務就是要在區間[-4096,4096]內產生均勻分布的隨機數。所以循環表中的種子序列x(1),…,x(256)在[-4096,4096]內均勻分布。為了方便計算,將種子序列的分布調整到[-(215-1),(215-1)]之間,即X=215=32767。所以可以采用包含1位符號位共計16位來存儲種子數的補碼?熏這樣可以通過丟掉進位的補碼加法來實現模X加運算。補碼運算結果的高13位或右移3位,可以直接作映射表的偏移地址進行后續查表操作,并且滿足在[-4096,4096]內均勻分布。
??? 考慮實際情況下,待求的高斯噪聲分布的方差一般介于(0,100)之間,均值一般介于[-255,255]之間。而實際圖像灰度值是以整數[0,255]形式存在,所以噪聲的精度只要控制在整數范圍內即可,映射表的精度只要達到0.01就足夠了。而映射表中數據的分布介于[-4.00,4.00]之間,若以整數形式存儲,將原始數據乘以128后就完全可以存放在16位長度單元中。
??? 也可以在此基礎上對表進行修改,使得經過映射后高斯分布的均值和方差直接等于用戶給定的均值u和方差σ。修改比較簡單,將映射表中的每一個單元值y做如下替換:
??? y=(y*σ)>>7+u
??? 此表中數據可以是原碼形式也可以是補碼形式,依具體需要而定。
參考文獻
1 尹 力,馬忠梅.一種快速產生數字式高精度高斯噪聲的新方法. 應用聲學,1996:15(3):23~25
2 方再根.計算機模擬和蒙特卡洛方法.北京?押北京工業學院出版社,1988
3 Istvan Manno.Introduction to the Monte-Carlo Method. Akademiai Kiado.1999:(10)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久久九九青青国产精品 | 久久中文字幕视频 | 精品无人区乱码一区二区 | 色综合在 | 日韩欧美中文字幕在线观看 | a级毛片免费在线观看 | 男女网站免费 | 婷婷综合 在线 | 免费看毛片的网址 | 久久国产精品免费 | 美国一级毛毛片 | 免费毛片电影 | 丁香花五月婷婷开心 | 91精品国产99久久 | 大香网伊人久久综合网2020 | 汉宫春晓61式图解 | 国产成人精品综合久久久 | 久久精品一 | 九九免费 | 毛片一级免费 | 久久人人插 | 五月天婷婷免费视频 | 色精品一区二区三区 | www.奇米影视.com | 四虎影视永久在线精品免费播放 | 国产免费69成人精品视频 | 国产美女精品在线观看 | 六月天综合网 | 免费观看黄色小视频 | 欧美一区在线观看视频 | 日本不卡视频免费 | 丁香六月激情综合 | 精品一区二区三区四区 | 国产成人精品电影在线观看18 | 国产精华av午夜在线观看 | 99ri在线| 久久精品国产亚洲婷婷 | 色久月 | 女人精69xxxxx免费视频 | 色即是空电影在线 | 99视频有精品 |