博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RGB Bayer转为RGB
阅读量:4981 次
发布时间:2019-06-12

本文共 2766 字,大约阅读时间需要 9 分钟。

Raw RGB 每个像素只有一种颜色(R、G、B中的一种);

RGB 每个像素都有三种颜色,每一个的值在0~255之间;
在手机摄像头的测试过程中,由sensor输出的数据就是Raw data(Raw RGB),经过彩色插值就变成RGB。

也不一定就是测试过程,想要获得真正的图像,都必须有的一个过程;

sensor输出的数据格式,主要分两种:YUV(比较流行),RGB,这就是sonsor的数据输出;这其中的GRB就是Raw RGB,是sensor的bayer阵列获取的数据(每种传感器获得对应的颜色亮度);
但是输出的数据不等于就是图像的实际数据,模组测试时,就要写一个软件,完成数据采集(获得Raw data)->彩色插值(目的是获得RGB格式,便于图像显示)->图像显示;
这样就可以发现整个模组是否正常,有无坏点,脏点的等,检测出不良品;(软件的处理过程当中,为了获得更好的图像质量,还需要白平衡,gamma校正,彩色校正)
而在手机的应用中,手机根据相机模组的数据格式,提供一个ISP(主要用于RGB格式的),配合软件,使照相功能得到应用;

-----------------------------------------------------------------------------------------------------

RGB Bayer(CMOS sensor直接输出的数据)

可以看出, Bayer 模式每一个像素只取RGB颜色空间中一种颜色分量, 奇数行包含G, B分量, 偶数行包含R, G分量, 奇数列包含G, R分量, 偶数列包含B, G分量。采用线性插值。

插值算法:所有像素点插值时都以包含其右下角四个像素点插值,用寄存器存储两行值。data_control={行(奇偶),列(奇偶)}

G有, ; B有,R有

算法如图所示:

(行计数从上到下,列计数从左到右)

移位寄存器Line_Buffer

代码如下:

reg        [11:0]    rRed;

reg        [12:0]    rGreen;
reg        [11:0]    rBlue;
reg        [11:0]    wData0_d1;
reg        [11:0]    wData1_d1;

Line_Buffer    L1    (                    .clken(iDval),                    .clock(iCLK),                    .shiftin(iData),                    .shiftout(),//                    .taps1x(wData0),//                    .taps0x(wData1),                    .taps({wData0,wData1})                );assign  data_control = {iMIRROR?~iY_Cont[0]:iY_Cont[0],iMIRROR?iX_Cont[0]:~iX_Cont[0]};always@(posedge iCLK or negedge iRST_n)    begin        if (!iRST_n)            begin                wData0_d1<=0;                wData1_d1<=0;                rDval    <=0;                        end        else            begin                wData0_d1<=wData0;                wData1_d1<=wData1;                rDval    <=iDval;            end    end            always@(posedge iCLK or negedge iRST_n)    begin        if (!iRST_n)            begin                rRed  <= 0;                rGreen<= 0;                rBlue <= 0;                end        else if ( data_control== 2'b10)              begin                rRed     <=    wData0;               rGreen    <=    wData0_d1+wData1;               rBlue     <=    wData1_d1;            end            else if ( data_control== 2'b11)             begin                rRed     <=    wData0_d1;               rGreen    <=    wData0+wData1_d1;               rBlue     <=    wData1;            end                    else if ( data_control== 2'b00)            begin                rRed     <=    wData1;               rGreen    <=    wData0+wData1_d1;               rBlue     <=    wData0_d1;            end                   else if ( data_control== 2'b01)            begin                rRed     <=    wData1_d1;               rGreen    <=    wData0_d1+wData1;               rBlue     <=    wData0;            end            end

转载于:https://www.cnblogs.com/anne-vista/archive/2013/04/02/2996472.html

你可能感兴趣的文章
在项目中移除CocoaPods
查看>>
【洛谷】CYJian的水题大赛【第二弹】解题报告
查看>>
POJ 1703 Find them, Catch them【种类/带权并查集+判断两元素是否在同一集合/不同集合/无法确定+类似食物链】...
查看>>
L1-5. A除以B【一种输出格式错了,务必看清楚输入输出】
查看>>
Git一分钟系列--快速安装git客户端
查看>>
纵越6省1市-重新启动
查看>>
hive安装以及hive on spark
查看>>
jz1074 【基础】寻找2的幂
查看>>
Wannafly模拟赛5 A 思维 D 暴力
查看>>
【Linux开发】CCS远程调试ARM,AM4378
查看>>
Linux之ssh服务介绍
查看>>
排序:冒泡排序
查看>>
Java中instanceof关键字的用法总结
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
js --基本语法3 函数,数组,堆棧
查看>>
hdu 3068(最长回文)
查看>>
python已处理的异常
查看>>
假如项目中使用到了多 表查询,怎么办?
查看>>
.net framework 4.0无法在Win7下安装的解决办法
查看>>
Day 8作业
查看>>