ISP图像处理开发过程,需对sensor传入的bayer图进行处理,包括黑电平校准、坏点去除,为验证这类型的模块的功能,仿真阶段需要将bayer作为模块的输入,此时需要获得一帧图片对应的raw data,如txt格式。
可在matlab中编写程序,获得RGB图到bayer图、bayer图对应txt文件。
Bayer图包含4种格式RGGB\GRBG\BGGR\GBRG,四种格式对应4种txt和bayer图。
目标:RGB图转成bayer图、bayer图对应txt文件
实现:
以4k图为例,实现代码如下,详情见注释
%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图转为1维Bayer图
for i=1:2:hang %G 轮询行
for j=1:2:lie % 轮询列
GRBG(i,j)=A(i,j,2); %读取G矩阵的数据
end
end
for i=1:2:hang %2160 R
for j=2:2:lie %3840
GRBG(i,j)=A(i,j,1); %读取R矩阵的数据
end
end
for i=2:2:hang %B
for j=1:2:lie
GRBG(i,j)=A(i,j,3); %读取B矩阵的数据
end
end
for i=2:2:hang %G
for j=2:2:lie
GRBG(i,j)=A(i,j,2); %读取G矩阵的数据
end
end
C1=uint8(GRBG); %8位 0-255
imwrite(C1,'pic\4k1_bayer_GRBG.jpeg');%输出bayer图
csvwrite('txt\4k1_bayer_GRBG.txt',C1) %输出对应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);
实际效果如下图