日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ISP模块之RAW DATA去噪(一)

發(fā)布時(shí)間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ISP模块之RAW DATA去噪(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ISP(Image Signal Processor),圖像信號(hào)處理器主要用來對(duì)前端圖像傳感器輸出信號(hào)處理的單元,主要用于手機(jī),監(jiān)控?cái)z像頭等設(shè)備上。

? ? RAW DATA可以理解為:RAW圖像就是CMOS或者CCD圖像感應(yīng)器將捕捉到的光源信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)的原始數(shù)據(jù),是無損的,包含了物體原始的顏色信息等。RAW數(shù)據(jù)格式一般采用的是Bayer排列方式,通過濾波光片,產(chǎn)生彩色濾波陣列(CFA)鑒于人眼對(duì)綠色波段的色彩比較敏感,Bayer數(shù)據(jù)格式中包含了50%的綠色信息,以及各25%的紅色和藍(lán)色信息。

? Bayer排列格式有以下4種:

? 1.| R | G | ?2.| B | G | ? 3.| G | R | ? 4.| G | B |

? ? | G | B | ? ?| G | R | ? ? | B | G | ? ? | R | G |

? ? 在ISP處理模塊的第一部分,就是需要對(duì)CFA DATA進(jìn)行去噪操作。普通的去噪方式針對(duì)Bayer數(shù)據(jù)格式是不合適的,需要進(jìn)行變換后才能進(jìn)行處理。

一、中值濾波CFA(Color Filter Array)Data去噪方法?

? ? 首先,讓我們一起來回顧一下中值濾波的算法原理以及優(yōu)缺點(diǎn),然后給出示意的算法效果圖。

? ? 中值濾波,顧名思義就是將濾波器里面所有像素值進(jìn)行排序,然后用中間值替代當(dāng)前像素點(diǎn)值。常用的中值濾波器有3X3,5X5等。

? ? 中值濾波的有點(diǎn)在于,實(shí)現(xiàn)簡單,能夠有效的消除椒鹽噪聲以及其他脈沖型噪聲。缺點(diǎn)也是所有去噪算法所共有的,就是平滑模糊了圖像的內(nèi)容,有些角點(diǎn)以及邊緣的信息損失。

? ? 對(duì)CFA DATA進(jìn)行去噪時(shí),需要將不同的顏色通道分開進(jìn)行處理,這樣是為了防止在平滑過程中將有用的顏色信息丟掉,比如說,由綠色信息包圍的藍(lán)色像素值與其相差很大時(shí),此時(shí)就會(huì)被認(rèn)為是噪聲被處理掉,然而真實(shí)情況是,該區(qū)域的藍(lán)色信息都是很大的。所以各通道單獨(dú)處理的話是有利于保護(hù)顏色信息的。在我的處理過程中,是將原CFA DATA分成4塊-R,G1,G2,B,分塊去噪完成后再重新恢復(fù)到原來的位置,這樣整個(gè)過程就完成了。

? ? 下面給出參考的中值濾波和主程序的C++(MFC)代碼:

主函數(shù):

void main() {/*******開始編寫中值濾波去噪模塊--2015.07.27***********///針對(duì)R分量塊進(jìn)行去噪pNewDoc->m_RBlock = new unsigned short [m_Height*m_Width/4];pNewDoc->m_G1Block = new unsigned short [m_Height*m_Width/4];pNewDoc->m_G2Block = new unsigned short [m_Height*m_Width/4];pNewDoc->m_BBlock = new unsigned short [m_Height*m_Width/4];unsigned short* smoothR = new unsigned short[m_Height*m_Width/4];unsigned short* smoothG1 = new unsigned short[m_Height*m_Width/4];unsigned short* smoothG2 = new unsigned short[m_Height*m_Width/4];unsigned short* smoothB = new unsigned short[m_Height*m_Width/4];for (int i = 0; i < m_Height/2 ;i ++ ){for(int j = 0; j < m_Width/2 ; j ++ ){pNewDoc->m_RBlock [i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + j*2];pNewDoc->m_G1Block[i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + j*2 + 1];pNewDoc->m_G2Block[i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + m_Width + j*2];pNewDoc->m_BBlock [i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + m_Width + j*2 + 1];}}medianFilter(pNewDoc->m_RBlock,smoothR,m_Width/2,m_Height/2); //針對(duì)R分量塊進(jìn)行去噪medianFilter(pNewDoc->m_G1Block,smoothG1,m_Width/2,m_Height/2); //針對(duì)G1分量塊進(jìn)行去噪medianFilter(pNewDoc->m_G2Block,smoothG2,m_Width/2,m_Height/2); //針對(duì)G2分量塊進(jìn)行去噪medianFilter(pNewDoc->m_BBlock,smoothB,m_Width/2,m_Height/2); //針對(duì)B分量塊進(jìn)行去噪//反過來構(gòu)造去噪去噪后的raw datafor (int i = 0; i < m_Height/2 - 1;i ++ ){for(int j = 0; j < m_Width/2-1; j ++ ){pNewDoc->m_ImageNR[i*m_Width*2 + j*2] = smoothR[i*m_Width/2 + j];pNewDoc->m_ImageNR[i*m_Width*2 + j*2 + 1] = smoothG1[i*m_Width/2 + j]; pNewDoc->m_ImageNR[i*m_Width*2 + m_Width + j*2] = smoothG2[i*m_Width/2 + j];pNewDoc->m_ImageNR[i*m_Width*2 + m_Width + j*2 + 1] = smoothB[i*m_Width/2 + j];}}/***********中值濾波模塊完成--2015.07.27********************///SaveImageData(pNewDoc->m_ImageNR, m_Height ,m_Width,"E:\\m_ImageNR.bmp");SetDisplayRawImage( pNewDoc->m_ImageNR, m_Height ,m_Width, m_RawBitType,pNewDoc->m_Image); } <pre name="code" class="html">void medianFilter (unsigned short* corrupted, unsigned short* smooth, int width, int height) { memcpy ( smooth, corrupted, width*height*sizeof(unsigned short) ); for (int j=1;j<height-1;j++) { for (int i=1;i<width-1;i++) { int k = 0; unsigned short window[9]; for (int jj = j - 1; jj < j + 2; ++jj) for (int ii = i - 1; ii < i + 2; ++ii) window[k++] = corrupted[jj * width + ii]; // Order elements (only half of them) for (int m = 0; m < 5; ++m) { int min = m; for (int n = m + 1; n < 9; ++n) if (window[n] < window[min]) min = n; // Put found minimum element in its place unsigned short temp = window[m]; window[m] = window[min]; window[min] = temp; }smooth[ j*width+i ] = window[4]; } } } <span style="font-family: Arial, Helvetica, sans-serif;"> </span>

中值濾波函數(shù)是在網(wǎng)上找的代碼,由于比較基礎(chǔ),就直接拿過來用了,侵刪

去噪前后效果圖:


?

? ? 下一篇文章,我將主要給大家展示一下BM3D算法RAW DATA去噪效果,謝謝。

總結(jié)

以上是生活随笔為你收集整理的ISP模块之RAW DATA去噪(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。