matlab实现RGB图转为BAYER图像以及Bayer格式对应的txt
ISP圖像處理開發(fā)過程,需對sensor傳入的bayer圖進(jìn)行處理,包括黑電平校準(zhǔn)、壞點(diǎn)去除,為驗(yàn)證這類型的模塊的功能,仿真階段需要將bayer作為模塊的輸入,此時(shí)需要獲得一幀圖片對應(yīng)的raw data,如txt格式。
可在matlab中編寫程序,獲得RGB圖到bayer圖、bayer圖對應(yīng)txt文件。
Bayer圖包含4種格式RGGB\GRBG\BGGR\GBRG,四種格式對應(yīng)4種txt和bayer圖。
目標(biāo):RGB圖轉(zhuǎn)成bayer圖、bayer圖對應(yīng)txt文件
實(shí)現(xiàn):
以4k圖為例,實(shí)現(xiàn)代碼如下,詳情見注釋
%read img,get hang,lie,weidu
????H=imread('pic\4k1.jpeg');%獲得三張矩陣,依次為RGB
????A=double(H);
????[hang,lie,wei]=size(A);%2160,3840,3
% ??G R B G ????
????GRBG=zeros(hang,lie);??????%三維RGB圖轉(zhuǎn)為1維Bayer圖
????for?i=1:2:hang ????????????%G ??輪詢行
????????for?j=1:2:lie ?????????% ???輪詢列
????????????GRBG(i,j)=A(i,j,2);????%讀取G矩陣的數(shù)據(jù)
????????end?
????end
????for?i=1:2:hang ?????%2160 ??R
????????for?j=2:2:lie ??%3840 ??
????????????GRBG(i,j)=A(i,j,1);????%讀取R矩陣的數(shù)據(jù)
????????end?
????end
????for?i=2:2:hang ?????????????%B
????????for?j=1:2:lie ?????
????????????GRBG(i,j)=A(i,j,3);?????%讀取B矩陣的數(shù)據(jù)
????????end?
????end
????for?i=2:2:hang ?????????????%G
????????for?j=2:2:lie ?????
????????????GRBG(i,j)=A(i,j,2);?????%讀取G矩陣的數(shù)據(jù)
????????end?
????end
C1=uint8(GRBG);?????????????????????%8位 0-255
imwrite(C1,'pic\4k1_bayer_GRBG.jpeg');%輸出bayer圖
csvwrite('txt\4k1_bayer_GRBG.txt',C1)?%輸出對應(yīng)txt
% ??R G G B
????RGGB=zeros(hang,lie);
????for?i=1:2:hang ?????%2160 ??R
????????for?j=1:2:lie ??%3840 ??
????????????RGGB(i,j)=A(i,j,1);????
????????end?
????end
????for?i=1:2:hang ????????????%G
????????for?j=2:2:lie ?????
????????????RGGB(i,j)=A(i,j,2);????
????????end?
????end
????for?i=2:2:hang ?????????????%G
????????for?j=1:2:lie ?????
????????????RGGB(i,j)=A(i,j,2);????
????????end?
????end
????for?i=2:2:hang ?????????????%B
????????for?j=2:2:lie ?????
????????????RGGB(i,j)=A(i,j,3);????
????????end?
????end
C2=uint8(RGGB);
imwrite(C2,'pic\4k1_bayer_RGGB.jpeg');
csvwrite('txt\4k1_bayer_RGGB.txt',C2)
% ??B G G R
????BGGR=zeros(hang,lie);
????for?i=1:2:hang ?????????????%B
????????for?j=1:2:lie ?????
????????????BGGR(i,j)=A(i,j,3);????
????????end?
????end
????for?i=1:2:hang ????????????%G
????????for?j=2:2:lie ?????
????????????BGGR(i,j)=A(i,j,2);????
????????end?
????end
????for?i=2:2:hang ?????????????%G
????????for?j=1:2:lie ?????
????????????BGGR(i,j)=A(i,j,2);????
????????end?
????end
????for?i=2:2:hang ?????%3840 ??R
????????for?j=2:2:lie ??%2160 ??
????????????BGGR(i,j)=A(i,j,1);????
????????end?
????end
C3=uint8(BGGR);
imwrite(C3,'pic\4k1_bayer_BGGR.jpeg');
csvwrite('txt\4k1_bayer_BGGR.txt',C3)
% ??G B R G
????GBRG=zeros(hang,lie);
????for?i=1:2:hang ????????????%G
????????for?j=1:2:lie ?????
????????????GBRG(i,j)=A(i,j,2);????
????????end?
????end
????for?i=1:2:hang ?????????????%B
????????for?j=2:2:lie ?????
????????????GBRG(i,j)=A(i,j,3);????
????????end?
????end
????for?i=2:2:hang ?????%3840 ??R
????????for?j=1:2:lie ??%2160 ??
????????????GBRG(i,j)=A(i,j,1);????
????????end?
????end
????for?i=2:2:hang ?????????????%G
????????for?j=2:2:lie ?????
????????????GBRG(i,j)=A(i,j,2);????
????????end?
????end
C4=uint8(GBRG);
imwrite(C4,'pic\4k1_bayer_GBRG.jpeg');
csvwrite('txt\4k1_bayer_GBRG.txt',C4)
subplot(231),imshow(A);
subplot(232),imshow(C1);
subplot(233),imshow(C2);
subplot(234),imshow(C3);
subplot(235),imshow(C4);
實(shí)際效果如下圖
?
總結(jié)
以上是生活随笔為你收集整理的matlab实现RGB图转为BAYER图像以及Bayer格式对应的txt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看看月光blog2014年都搞些啥
- 下一篇: Python 内建函数 - comple