新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用Zynq-7000 All Programmable SoC實現圖像傳感器色彩校正

        使用Zynq-7000 All Programmable SoC實現圖像傳感器色彩校正

        作者:GaborSzedo SteveElzinga GregJewett 時間:2013-03-20 來源:電子產品世界 收藏

          白點算法[2]依據這樣的假設,即圖像中顏色最淺的像素必定是白色或淺灰色。紅色、綠色和藍色通道最大值之間的差值提供的是與光源顏色有關的信息,校正的作用是進行色彩轉換后讓得到的顏色最大值完全相等。但是,要找出白點,就需要按亮度值對像素排序。另外可能還需要對排序后的列表進行時空濾波,抑制噪聲偽影,最后將排序結果匯聚成唯一的白色三元色。使用白點法的優勢是易于實現,缺陷則是會造成巨大的誤差,可能導致原生場景的色彩掉色。另外這種方法的效果還容易被飽和像素削弱。

        本文引用地址:http://www.104case.com/article/143329.htm

          更加先進的方法是發揮色域轉換的優勢。這樣色度可以輕易地與色彩飽和度和亮度隔離,將三維色彩校正問題降低為一維問題。

          例如,先進行色彩飽和度映射,在YCC、YUV、L*a*b*或LuV色域中建立二維直方圖,然后圍繞直方圖底部周邊建立一個凸殼。計算出UV或(Cr,Cb)均值,用于校正色彩,讓得到的色彩UV或CbCr直方圖位于YUV、YCC、Luv或Lab域中的中性點或灰度點上。這些方法的優勢在于能夠得到更好的色彩表象,而缺陷則在于需要浮點算法才能實現。

          所有上述的方法有一個共同的缺陷,就是如果曝光設置不當或者場景光照存在極度的動態范圍,就會產生偽影。例如使用帶原生色調的高亮光源照明,在圖像中產生的飽和像素。典型如火焰位于焦點上的燭光照片,此時會導致完全飽和,圖像上出現白色像素。

          其它改善白平衡結果的方法

          還有一種色彩校正方法就是將前景和背景分離。數碼相機采用的自動對焦與矩陣測光相結合的方法,可以把鏡頭中心焦點周邊的像素與靠近邊緣的背景像素在空間上區分開來。這種方法假定拍攝的物體只有幾種主要顏色,而且位于圖像中心的焦點上。遠處的物體靠近邊緣,由灰度世界假設主導。

          另一種方法圍繞形狀檢測。面部或皮膚顏色檢測有助于相機識別有預期色調的圖像內容。這樣只需要對有已知和預期的色調的像素進行白平衡校正。顏色校正就是將這些像素的顏色調整為貼近預期顏色。這種方法的不足之處就是分割和識別邏輯的成本不菲。大多數商業應用采用適應圖像內容和拍攝環境的策略,綜合應用多種方法[2] 。  

         

          用于相機校準和色彩校正的ISP

          我們的實現方案采用如圖3所示的典型圖像傳感器流水線技術。我們采用基于可配置邏輯的圖像處理內核來構建ISP的硬件部分(見藍色方框)。同時,我們將相機校準和白平衡算法設計為運行在其中一個ARM處理器上的C代碼(見粉紅色方框)。該ARM處理器還運行Linux,為主機PC提供用戶界面。

          ISP中與白平衡和相機校準有關的部分是一個反饋環路,包括:

          ● 圖像統計模塊,用于逐幀采集各域的統計數據;
          ● 驅動程序和應用軟件,用于逐幀分析統計信息并對色彩校正模塊編程;
          ● 色彩校正模塊,用于逐像素地執行色彩轉換。

          我們將該ISP實現為視頻和成像套件(ZVIK)1080x60相機圖像處理參考設計的組成部分。

          算法詳解

          為校準傳感器的顏色,我們使用現成的顏色觀察箱(X-Rite Macbeth Judge II)或燈箱。該設備有四個已知光譜的標準光源,分別用于模擬日光、冷白熒光燈、暖光熒光燈和白熾燈。我們還使用現成的色靶(X-Rite ColorChecker 24 色標準色卡),其色標具有已知的反射特性以及RGB與sRGB預期值。

          在開始實現相機校準算法之前,我們首先將色靶放置在燈箱中,與燈箱的灰黑色背景平行。我們將色靶調整到一定位置,讓來自所有光源的光照盡量均勻。

          接下來,在打開所有光源的情況下,我們采集由傳感器拍攝的有待校準的圖像,此時尚未進行色彩校正(使用“跳過”色彩校正設置:將單位矩陣加載至色彩校正矩陣)。

          然后使用提供的MATLAB腳本協助補償鏡筒(幾何形狀)透鏡畸變和鏡頭陰影(光強度在角落處下降)帶來的影響。我們使用MATLAB腳本找出圖像上的控制點,然后彎曲圖像,用以對筒形畸變進行補償。腳本的其余部分用于根據寄存的ColorChecker色靶背景來估算水平和垂直方向的光強度下降。

          為衰減測量到的噪聲,我們在色標中劃出矩形區域。在這些區域中,我們計算出R、G、B像素數據均值,用RGB三元色表達每個色靶。帶GUI的MATLAB腳本可幫助找出色標的中心,然后計算出與每個色標的RGB預期值(Re、Ge、Be)對應的平均RGB三元色。

          我們采用模擬退火優化法找出色彩校正系數和偏移量。然后使用圖3的色彩校正模塊,將未經校正的(R、G、B)三元色轉換為校正的(R’、G’、B’)三元色。
               
          模擬退火算法的作用是求出一個能夠返回標量的誤差函數的最小值。在下面的討論中,用Rk、Gk、Bk表示測得的色標像素值的子集或超集。用戶可以自行限制包含在優化(子集)中的色標數量,也可多次使用某個特定的色標,以增大其在優化過程中的相對權重。整數n代表選優化的色標數量。如果一次優化全部色標,則對X-Rite ColorChecker 24 色標準色卡而言,n則為24。

          因為優化算法最多只能設置12個變量(CCM系數和偏移量),一般來說不存在有能夠將所有測量值精確映射到預期色標值的解決方案。不過該算法的目的是求出誤差函數的最小值,從而在所使用的所有色標上實現理想的誤差分布。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 游戏| 克拉玛依市| 漯河市| 甘孜县| 铜梁县| 固阳县| 张家界市| 衢州市| 乌鲁木齐市| 宁波市| 从江县| 海林市| 内乡县| 日土县| 卢湾区| 新邵县| 黄龙县| 马关县| 柳州市| 桐梓县| 汉源县| 宣恩县| 邓州市| 济源市| 灵宝市| 吉安县| 桦川县| 西乌| 永顺县| 沈阳市| 水富县| 淮南市| 康马县| 项城市| 承德县| 宿迁市| 延津县| 黔西县| 和硕县| 民权县| 喜德县|