想知道图像传感器输出的图像如何通过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。
-
FPGA
+关注
关注
1629文章
21736浏览量
603431 -
图像传感器
+关注
关注
68文章
1902浏览量
129554
原文标题:图像传感器眼中的你
文章出处:【微信号:FPGAer_Club,微信公众号:FPGAer俱乐部】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论