免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2747 | 回复: 0
打印 上一主题 下一主题

altera 摄像头子板RAW2RGB格式转换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 03:35 |只看该作者 |倒序浏览
alteral 摄像头使用的是bayer颜色格式,如图1所示。奇数行包括green和red颜色的像素,偶数行包括blue和green颜色的像素。奇数列包括green和blue颜色的像素,偶数列包括red和green颜色的像素。


过程总述:采用行缓冲+流水线的处理方式,将前一级抓取到的行数据(bayer color pattern),实时转换成标准的30位RGB数据并进行适当的下采样,以便于后继的图像处理及显示。
  首先调用一个altshift_taps 的megafunction,altshift_taps 可以作为数据移动寄存器组,经常在图像处理程序中用到。采集进来一系列像素点数据,需要同时对2行像素点同时进行处理时,就可以用这个 altshift_taps.共2个taps,每个taps数据宽度为图像每行像素点的个数(1280)。(针对这个megafunction做一下波形 仿真就容易理解了)。
  在格式转换时,用到4个量:
mDATA_0:第M行第N列的像素
mDATAd_0:第M行第N-1列的像素
mDATA_1:第M+1行第N列的像素
mDATAd_1:第M+1行第N-1列的像素
4个量组成一个以mDATA_0(位于左上角)为核心的模板:

mDATA_0

mDATAd_0

mDATA_1

mDATAd_1


模板中必定包含一个R、一个B2G像素点,那么R作为当前像素mDATA_0R值,B作为当前像素mDATA_0B值,取2G的平均值作为当前像素mDATA_0G值(通过取G的高10位,舍去最后一位来实现)。对这bayer颜色格式图,任取一个颜色的像素作为核心元素套进模板,这样就可以很好的理解RAW2RGB程序中关于图像格式转化的那部分代码了。

if({iY_Cont[0],iX_Cont[0]}==2'b10)
        begin
            mCCD_R    <=    mDATA_0;
            mCCD_G    <=    mDATAd_0+mDATA_1;
            mCCD_B    <=    mDATAd_1;
        end   
        else if({iY_Cont[0],iX_Cont[0]}==2'b11)
        begin
            mCCD_R    <=    mDATAd_0;
            mCCD_G    <=    mDATA_0+mDATAd_1;
            mCCD_B    <=    mDATA_1;
        end
        else if({iY_Cont[0],iX_Cont[0]}==2'b00)
        begin
            mCCD_R    <=    mDATA_1;
            mCCD_G    <=    mDATA_0+mDATAd_1;
            mCCD_B    <=    mDATAd_0;
        end
        else if({iY_Cont[0],iX_Cont[0]}==2'b01)
        begin
            mCCD_R    <=    mDATAd_1;
            mCCD_G    <=    mDATAd_0+mDATA_1;
            mCCD_B    <=    mDATA_0;
        end
每个RGB点相当于图中4个像素点中的交点。因此有根据坐标位置有4种像素排列情况。
根据周围4个R、G1、G2、B像素点的值得到对应点的RGB值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP