如何通过FPGA变成我们看到的色彩斑斓的图片

想知道图像传感器输出的图像如何通过fpga变成我们看到的色彩斑斓的图片吗?今天我们就带你一探究竟。
01
什么是raw像素?
我们通常看到的照片都是经过isp以及一些列图像处理后的结果,那么最原始的由图像传感器输出的像素是什么样子的呢?你看到的美美哒画面是这样的:
图1
但其实传感器输出的画面是类似这样的:
图2
没错这就是我们常说的raw像素构成的bayer模式,很多玩单反的人都知道大部分单反相机都支持bayer格式raw像素模式输出照片,原因是raw像素是传感器获得的最原始的图像信息,方便我们后期做处理。今天我们要说的就是如何用fpga处理raw像素。在此之前我们还是先对raw像素和bayer格式有个大概了解吧。
我们可以认为每个像素均由红绿蓝俗称rgb三个颜色分量组成,对于raw像素你可以认为它是只含有一个颜色分量的像素。对于bayer模式,我们来看一组图,一副图像如果只显示它的偶数行偶数列,并且只显示它的红色分量,那么看上去就是如图3的样子:
图3
如果只显示奇数行奇数列并且只显示它的蓝色分量,那么它就是图4的样子:
图4
剩下的像素只显示它的绿色分量,就是图5的样子。
图5
我们把这三个分量组合起来就看到图2的那种带有彩色马赛克的图片,这也就是我们常说的bayer格式。当然传感器输出的raw像素并不是这么得来的,这里只是举个栗子给大家形象的解释一下bayer格式里raw像素是如何分布的。
接下来我们就说说如何用fpga实时做de-bayer。
02
如何用fpga做de-bayer?
这里所谓的de-bayer就是将bayer格式转换成正常的rgb格式。我们采用双线性插值法,这是一个平衡计算量和图像质量的算法。双线性插值法是利用它自己邻近的4个像素的颜色分量来补充自己所缺失的两种颜色分量。
传感器输出像素通常是逐行扫描的方式,所以首先需要利用fpga构建3*3的模板。
图6
如图6,通过移位寄存器和fifo构建3*3的模板。fifo的功能是用来做图像行缓存,所以fifo的大小需要根据图像的分辨率以及像素位宽来确定。lattice crosslink 芯片片内拥有20个9k的分布式ram,可用于做行缓存。
双线性插值算法是计算该像素左右上下像素的均值来作为填充颜色,对于逐行扫描输出的传感器完全可以用流水线处理的方法来做加法和除法运算,从而达到很好的性能。这里要注意的一点是边界的处理问题,因为边界像素我们无法为它构建3*3模板,这里对于边界像素可以采用邻近像素颜色插值的方法来进行处理。
目前许多传感器都是mipi接口,而crosslink本身就拥有强大的mipi桥接功能,加入de-bayer这对于crosslink来说就可以轻松实现csi-2输入dsi输出。此外crosslink处理双线性de-bayer速度可以满足148.5兆赫兹,这就意味着可以处理1080p 60帧的csi-2转dsi。

深度学习在工业缺陷检测中的应用
三星发布新一代Family Hub智能冰箱 集成了AI语音助手Bixby
RISC-V Linux的页表创建
工业大数据的概念
详解光伏监控系统在光伏电站的作用
如何通过FPGA变成我们看到的色彩斑斓的图片
DDR3价格水涨船高 产能紧缺何时才能改善
Intel表态:已成功部署修复程序,在7nm工艺获得突破
一篇短短的文章,是怎样告诉你实现养殖业平台组态监控的
小米真自研澎湃P1,120W单电芯快充电荷泵芯片,合作企业力挺!
虚拟存储有什么样子的特点
OpenAI 把在模拟器中强化学习学到的方案迁移到机械手上
stm32单片机gpio工作原理是怎样的呢?看完立马学会了
虚拟现实内容症结:除了技术 还缺什么
将树莓派设置为媒体服务器的7种方法
微软跨Windows、WinPhone和Xbox平台游戏展示
肖特基二极管选型参数解读
生产环境对电源模块可靠性的影响
惠州将打造物联网产业世界级发展平台
基于MAX3946的10Gbps低功耗激光二极管驱动方案