<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Vivado HLS的圖像傳感器FPN噪聲去除算法設計

麥克泰技術 ? 來源: 嵌入式系統專家之聲 ? 2024-01-02 11:10 ? 次閱讀

0引言

隨著科技的發展,圖像傳感器逐步在各行各業廣泛應用[1]。受限于半導體工藝,CMOS圖像傳感器的輸出一般都帶有噪聲,噪聲的表現形式也多種多樣[2]。其中,FPN噪聲對圖像傳感器輸出的圖像質量影響很大,表現為明暗不均勻的條帶噪聲。同時,為了滿足圖像傳感器的實時攝像要求,算法的處理延時要低[3]?;谝陨显?,本設計提出一種適用于圖像傳感器的 FPN 噪聲去除算法,并在XilinxZynq平臺的 PL 端(FPGA)進行設計與加速實現,利用硬件并行化思想改進傳統的算法處理模式[4]。

目前,國內外對于條帶噪聲的去除算法分為以下3類:第一類是基于數字濾波的條帶噪聲去除算法,以小波變換和傅里葉變換法為代表;第二類是基于統計匹配的方法,以矩匹配算法和直方圖匹配算法為代表;第三類是基于變分正則化的方法。這些方法各有優缺點,且都針對單幀特定類型的圖像效果較好。本設計的核心思想是基于統計匹配方法中的矩匹配算法并對其進行改進,使其應用于圖像傳感器的條帶噪聲去除,而不是單幀特定類型圖像的條帶噪聲去除。它基于傳感器的輻射分布特性,通過對比不同地物的統計特征來進行分類。矩匹配法的基本假設是每個地物在不同圖像傳感器的探測下具有獨特的輻射分布特征。該方法通過計算每個地物類別在傳感器觀測下的統計特征(如均值和方差),然后與已知的地物類 別的統計特征進行比較。Gadallah等人提出了矩匹配法,該方法對于條帶噪聲的去除效果較好,但在地物復雜的圖像中會產生“帶狀效應”[5]。劉正軍等人提出了改進的矩匹配方法,加入了傅里葉變換法等步驟[6]。Sun等人運用了光譜矩匹配法,結合遙感圖像的光譜相關特性,在譜域實施矩匹配來去條帶[7]。鄭逢斌等人加入了平滑濾波來改進矩匹配方法。胡寶鵬等人提出了變分法和 矩匹配相結合的條帶去除方法,先利用矩匹配方法去除條帶,然后定位殘余條帶噪聲,最后再運用變分法去除剩余條帶[9]。蘇俊杰等人提出了使用空間鄰域加權方法的改進矩匹配法,針對特定高光譜影像噪聲特點,對影像實現相對輻射校正[10]。

矩匹配法也有一些限制,如對傳感器觀測下的輻射分布假設較為嚴格,以及對統計特征的計算和比較可能受到噪聲和數據不完整性的影響,所以使得去除條帶噪聲后的圖像的地物光譜信息的分布具有一定的畸變,產生“帶狀效應”。本設計中,系統上電后讓圖像傳感器采集隨機的300幀圖像正是為了克服這一缺點,讓該傳感器的條帶噪聲更加準確地被分離出來,以免產生“帶狀效應”。

1算法流程

矩匹配法在處理圖像時要求行均值和行方差接近,因此其去條帶噪聲效果較好。然而,當處理復雜地物導致子圖像的行均值和行方差的差異較大時,該方法可能出現“帶狀效應”,即圖像在行或列方向上出現明暗度不連續的現象,與實際地物自然分布特征不符。這種現象的根本原因在于經過矩匹配算法后,圖像中所有行或列的均值相等,導致光譜信息失真。本設計的算法基于矩匹配統計的思想。首先讓圖像傳感器采集隨機場景的300 幀圖像,目的是不同場景的樣本越多,分離出的條帶噪聲結果越準確。本設計中選用的 OV6946表現出的 FPN 噪聲為列條帶噪聲,采集好隨機場景的300 幀圖像后,首先,求出這 300幀圖像的列像素均值,如式(1)所示:

b0e2c0b0-a91b-11ee-8b88-92fbcf53809c.png

式中,x代表單幀圖像的第x列,y代表300 幀圖像的第y行,j為單幀圖像的行數乘300。如本設計中所用的OV6946圖像傳感器,輸出參數為400×400@30f/s,在式 (1)中,x的范圍為1~400,y的范圍為1~120000,j的值為120000。接著,求出這300幀圖像的所有像素平均值,如式(2)所示:

b0e9ce28-a91b-11ee-8b88-92fbcf53809c.png

式中,x、y與j的意義同式(1),i為單幀圖像的列數,如本設計中所用的 OV6946 圖像傳感器,輸出參數為 400×400@30f/s,i的值為400。最后,求每列的校正值,如式(3)所示:

b0f43eee-a91b-11ee-8b88-92fbcf53809c.png

式中,x為單幀圖像的第 x列,也就是每列內的像素值共用一個校正值,該列內的像素值減去這個校正值后,即為去除條帶噪聲的結果,如式(4)所示:

b0fb5936-a91b-11ee-8b88-92fbcf53809c.png

若k(x)小于0,則取為0。至此,完成了條帶噪聲的分離,對于該圖像傳感器,采集圖像的像素值按列減去當前列號的校正值即可。

2硬件平臺

算法最終運行的載體為 Zynq7020 平臺,Zynq 是由 Xilinx公司開發的可編程片上系統平臺。它結合了處理系統 PS 和可編程邏輯 PL,采用了 ARM 處理器與 FPGA的組合架構。這兩部分相互聯系但可以獨立使用[11]。

攝像頭型號為OV6946。OV6946是OmniVision Technologies公司推出的一款超小型CMOS 圖像傳感器芯片,尺寸為0.65 mm×0.65 mm×1.158 mm。OV6946采用 CMOS圖像傳感器技術,具有低功耗、高靈敏度和高動態范圍等優點。但是由于受半導體工藝的限制,最后的成像效果可能帶有不同程度的條帶噪聲,需要視情況進行去除。

3基于 Vivado HLS 的設計與加速

本文的算法設計與加速是通過 Vivado HLS 開發完成的。Vivado HLS(High Level Synthesis)是 Xilinx 公司提供的一款高級綜合工具。它允許開發人員使用 C、C++或SystemC等高級語言描述硬件功能,并將其自動轉換為可綜合的硬件描述語言。利用 Vivado HLS可以縮短 1/3的 RTL仿真時間,使算法驗證速度提高10倍以上[12]。

在本設計中,OV6946圖像傳感器輸出的原始數據經過預處理后輸出 RGB888 格式的圖像數據。在算法處理之前,首先要對 RGB888進行通道分離,然后分別對 R、G、B通道進行校正,接著再通道合并,最后進行輸出。算法總體設計架構如圖1所示。

b10484fc-a91b-11ee-8b88-92fbcf53809c.png

圖1 算法總體設計架構

在使用 Vivado HLS 編寫IP之前,先把 OV6946 的 RGB888 數據轉換為 AXI4 Stream 協議的數據流,然后再使用 VivadoHLS編寫輸入/輸出接口都為 AXI4 Stream 的算法IP核。在 VivadoHLS中,首先使用 AXIvideo2Mat函數把傳入 IP 的 AXI4 Stream 轉換為 Mat,以便在 VivadoHLS中使用 OpenCV 進行圖像處理[13]。經算法處理后,再使用 Mat2AXIvideo 函數實現 Mat到 AXI4 Stream 的轉換。

3.1 仿真與綜合

VivadoHLS除了將高效的編程代碼轉換為IP 以外,還提供了另一項重要功能:C 語言仿真和 C/RTL 協同仿真[14]。在對 VivadoHLS 設計的IP 工程進行綜合之前,可以進行功能性仿真來驗證C 代碼的邏輯正確性和效果是否符合預期[15]。為此,需要編寫激勵文件。

本設計的激勵文件編寫思路如下:首先,使用cvLoad- Image函數從本地加載待仿真處理的原始圖像,分辨率調整為400×400,與實際硬件平臺的圖像傳感器的分辨率相匹配。接下來,使用IplImage2AXIvideo函數將原始圖像轉換為 AXI4 Stream 協議的數據格式。在處理完成后,使用 AXIvideo2IplImage將數據重新轉換為圖像格式。最后,使用 cvShowImage 函數將圖像顯示出來,繼續進行 C/RTL 協同仿真,以驗證所編寫的算法 IP 的 AXI4 Stream 輸入/輸出接口是否可以正常流通數據,仿真結果如圖2所示。

b113a5b8-a91b-11ee-8b88-92fbcf53809c.png

圖2 C/RTL的輸入輸出接口仿真結果

從圖2可以看出,AXI4 Stream 的output_r_TDATA 和 input_r_TDATA 單幀內都有連續的數據,說明流接口邏輯仿真沒有問題。接下來可以進行IP工程的綜合,VivadoHLS綜合結果如圖3所示。

b122d79a-a91b-11ee-8b88-92fbcf53809c.png

圖3 VivadoHLS 綜合結果

由圖3可知,綜合目標時鐘周期為10ns,預計最高可達到8.67ns,實際平臺時鐘為50 MHz(即20ns),故符合要求。最高延遲為 166453 個時鐘周期,時 鐘周期為 20ns,故預估延時約為3.3 ms。OV6946 圖像傳感器輸出的視頻流每秒為30 幀,所以幀間隔為33.3 ms,完全可以做到實時處理。至此,完成了算法IP的編寫、仿真與綜合,在 VivadoHLS中生成IP后,既可以通過 RTL 文件的方式添加進 Vivado 的工程,也可以通過 BlockDesign 的方式添加固化到 FPGA 中。

3.2 實物驗證與結果分析

本設計以 Zynq7020 為核心處理平臺,其中 PL 端負責 OV6946攝像頭的視頻流數據采集以及 FPN 噪聲校正值的計算與應用。而 PS端則負責攝像頭的寄存器配置。最終,通過 HDMI接口實現了實時處理的視頻流輸出和顯示。硬件平臺實物如圖4所示。

b1323afa-a91b-11ee-8b88-92fbcf53809c.png

圖4 系統實物圖

原始輸出如圖5所示,可以看出,圖像條帶噪聲明顯,嚴重影響圖像傳感器的輸出質量。

b14852d6-a91b-11ee-8b88-92fbcf53809c.png

圖5 未經本設計算法處理的原始輸出

在加入本設計的算法后,系統上電時要讓攝像頭隨機晃動或者對著播放隨機噪聲的顯示設備停留10s,以采集到足夠的帶有條帶噪聲的隨機圖像,因為 OV6946 的幀率為30fps,10秒剛好采集300幀圖像,10 秒后則一直應用計算出的結果,以達到去除該圖像傳感器條帶噪聲的目的。在進行完上述操作并且應用校正值后,實時顯示結果如圖6所示。

b165440e-a91b-11ee-8b88-92fbcf53809c.png

圖6 經本設計算法處理的圖像傳感器輸出

對比圖5和圖6可以明顯看出,條帶噪聲得到了較好的去除,圖像整體質量提升明顯,圖像無傳統的單幀矩匹配算法易產生的"帶狀效應"。表現為行條帶的FPN 噪聲也可用此方法進行噪聲去除,把上述列計算換為行計算即可。最后視頻幀顯示無撕裂,感覺不到延時,做到了實時處理。

4結語

本文圍繞 FPN 噪聲去除進行了設計與分析,基于矩匹配思想提出了一種去除圖像傳感器 FPN 噪聲的方法,使用 VivadoHLS設計算法IP 實現了 FPN 噪聲的去除,能夠輕松滿足 OV6946 攝像頭視頻流的實時處理。本算法對各應用場景 FPN 噪聲的去除具有一定的參考價值,可以用在諸如圖像傳感器產品出廠前校正與測試、攝像頭產品非均勻校正等場景,具有工程應用意義。

(作者單位:中北大學儀器科學與動態測試教育部重點實驗室,太原 030051)

(本文由《單片機嵌入式系統應用》雜志授權發表,原文刊發在2023年第12期)

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 噪聲
    +關注

    關注

    13

    文章

    1081

    瀏覽量

    47117
  • 圖像傳感器
    +關注

    關注

    68

    文章

    1763

    瀏覽量

    128926
  • Vivado
    +關注

    關注

    18

    文章

    791

    瀏覽量

    65315
  • HLS
    HLS
    +關注

    關注

    1

    文章

    127

    瀏覽量

    23711

原文標題:Vivado HLS的圖像傳感器FPN噪聲去除算法設計

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    探索Vivado HLS設計流,Vivado HLS高層次綜合設計

    作者:Mculover666 1.實驗目的 通過例程探索Vivado HLS設計流 用圖形用戶界面和TCL腳本兩種方式創建Vivado HLS項目 用各種
    的頭像 發表于 12-21 16:27 ?3275次閱讀

    用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式視覺應用開發

    Vivado設計環境提供豐富的處理IP SmartCORE,能簡化到圖像傳感器、網絡及其它必要I/O接口的連接,簡化OpenCV庫中這些函數的實現。這相對于其它實現方案而言是一種明顯的優勢,因為其它方案哪怕是
    發表于 04-21 15:49

    新手求助,HLS實現opencv算法加速的IP在vivado的使用

    是video in to AXI4-Stream,接到DMA,而HLS生成的算法IP是AXI4-Stream in and out。我想把AXI-Stream信號輸出接到HLS輸出的IP,IP經過
    發表于 01-16 09:22

    基于一種新型CMOS圖像傳感器原理及設計

    、去除FPN噪聲、色彩差值,圖像銳化差值、光圈修正、Gamma修正等一系列處理?! ⊥ㄟ^數字圖像處理算法
    發表于 11-14 15:24

    新型CMOS圖像傳感器設計

    進行處理。一般上,圖像的預處理是在協處理中完成的。最近,隨著SoC技術的發展,可以在CMOS傳感器中集成圖像預處理功能.這正顯示了CMOS圖像
    發表于 11-14 15:48

    上海格科微1/4英寸VGA CMOS圖像傳感器

    的sensor架構,有效減少串擾(crosstalk);圖像層次感比較強,圖像顯示比較真實;圖像周邊亮度比較強;在圖像處理上還進行了顏色糾正,保證色彩充分還原。至于
    發表于 12-03 10:22

    請問如何只下載Vivado HLS 2015.2

    嗨伙計,在我的PC Vivado設計套件2015.2和SDK 2015.2工作,但只有vivado HLS 2015.2沒有打開,這就是為什么我想重新安裝Vivado
    發表于 12-27 10:57

    怎么在Vivado HLS中生成IP核?

    的經驗幾乎為0,因此我想就如何解決這個問題提出建議。這就是我的想法:1 - 首先,用Vivado HLS轉換VHDL中的C代碼(我現在有一些經驗)2 - 在Vivado HLS中生成I
    發表于 03-24 08:37

    Vivado HLS實現OpenCV圖像處理的設計流程與分析

    庫函數,測試激勵讀入圖像,經過濾波處理輸出的圖像保存分析??梢钥吹?,算法的處理基于IPIimage類型,輸入和輸出圖像都使用此類型。2.3
    發表于 07-08 08:30

    Vivado HLS設計流的相關資料分享

    1.實驗目的通過例程探索Vivado HLS設計流用圖形用戶界面和TCL腳本兩種方式創建Vivado HLS項目用各種HLS指令綜合接口優化
    發表于 11-11 07:09

    基于Vivado HLS平臺來評估壓縮算法

    隨著無線網絡的數據流量和密集度不斷增加,所有運營商都面臨著非常大的挑戰。一套好的數據壓縮算法能夠幫助運營商節省不少的網絡基礎設備的開支。使用Xilinx Vivado HLS工具評估開放式無線電設備
    發表于 11-17 02:25 ?1322次閱讀
    基于<b class='flag-5'>Vivado</b> <b class='flag-5'>HLS</b>平臺來評估壓縮<b class='flag-5'>算法</b>

    Vivado-HLS實現低latency 除法器

    1 Vivado HLS簡介 2創建一個Vivado-HLS工程 2.1打開Vivado HLS GUI 2.2創建新工程 在 Welcom
    發表于 12-04 10:07 ?1次下載
    用<b class='flag-5'>Vivado-HLS</b>實現低latency 除法器

    如何創建Vivado HLS項目

    了解如何使用GUI界面創建Vivado HLS項目,編譯和執行C,C ++或SystemC算法,將C設計合成到RTL實現,查看報告并了解輸出文件。
    的頭像 發表于 11-20 06:09 ?3714次閱讀

    關于Vivado HLS錯誤理解

    盡管 Vivado HLS支持C、C++和System C,但支持力度是不一樣的。在v2017.4版本ug871 第56頁有如下描述??梢?,當設計中如果使用到任意精度的數據類型時,采用C++ 和System C 是可以使用Vivado
    的頭像 發表于 07-29 11:07 ?5174次閱讀
    關于<b class='flag-5'>Vivado</b> <b class='flag-5'>HLS</b>錯誤理解

    VIVADO HLS設計移植到CATAPULT HLS平臺

    電子發燒友網站提供《將VIVADO HLS設計移植到CATAPULT HLS平臺.pdf》資料免費下載
    發表于 09-13 09:12 ?2次下載
    將<b class='flag-5'>VIVADO</b> <b class='flag-5'>HLS</b>設計移植到CATAPULT <b class='flag-5'>HLS</b>平臺
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>