如何把视图调整为页面视图(页面视图怎么设置)
906
2022-05-28
引言:最近为FPGA验证做图片生成器,检索了多种图片格式的介绍文档,这里做一个总结,希望对刚接触数字图像处理的新同事有所帮助。本系列分三部分,介绍工作中常见的YUV、RAW等各种图片格式,不求艰深晦涩,但求简洁明了。
本文是第三部分:RAW10? RAW12? RAW14? BGGR? 原来如此原始+土豪!
1 RAW简介
RAW的原意就是“未经加工的、原始的”,可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光信号转为电信号,进而转为数字信号的原始数据,换句话说,RAW图就是记录每个像素点的光强(亮度)信息。
以下为从光源(被摄物体)à 镜头 à CCD(光电耦合器件)à ADC(模数转换)à RAW图的大概流程。
按照每个像素点亮度记录精度(位深)的不同,区分为RAW 10bits,RAW 12bits和RAW 14bits,简称为RAW10,RAW12和RAW14。
2 RAW图的数据存储
不管是RAW10,RAW12还是RAW14,都是每两个字节(16bits)存储一个像素的亮度值,有效bit位数分别为10、12和14,无效bit位用0补齐,所以这三种raw图文件的大小都是宽x高x2个字节
2.1 RAW10
在RAW10图文件中,每个像素点的亮度值用10个bit位表示,也就是从最暗到最亮分1024个层次精度。每个像素点的亮度值用两个字节表示,其中6个无效的bit位用0表示,以下是用十六进制形式打开的一个RAW10图文件:
红框中的字节最大值为0x03,前6个bit位全是0。文件中无效数据占文件总大小的近40%,可以说相当“土豪”(langfei)。
2.2 RAW12
在RAW12图文件中,每个像素点的亮度值用12个bit位表示,也就是从最暗到最亮分4096(2的12次方)个层次精度。每个像素点的亮度值同样用两个字节表示,其中4个无效的bit位用0表示,以下是用十六进制形式打开的一个RAW12图文件:
红框中的字节最大值为0x0F,前4个bit位全是0。
2.3 RAW14
读者可以根据RAW10和RAW12自行扩展,这里不再赘叙。
3 Bayer pattern
大家可能注意到,上面对RAW图的介绍未涉及到色彩,实际上CCD只能根据光强信号转换为对应强度的电信号,而无法分辨色彩(可见光波长),相当于“色盲”。这样一来,我们得到的RAW图也只能是mono图,显然这是不能接受的。
有人自然想到了一个简单粗暴的解决办法:用R、G、B滤光片将白光分解成三原色,分别用一块CCD来做光电转换,最后合成一张彩*** ,这就是3CCD相机。原理图如下:
原理简单,但是元件成本倍增,商业大佬们表示很不满意。于是柯达公司的拜尔发明了一种棋盘状的滤光片,只用一块CCD,就解决了颜色的识别:
上图中的滤光片上布满了一个个排列规则的滤光点,与后面CCD上的像素一一对应,每个滤光点只能通过R、G、B中的一种颜色,这意味着照射在下层CCD每一个像素上的光只能是固定的某种颜色,从而实现了CCD对色彩的辨别,如下图所示:
仔细看拜尔滤光片上棋盘状的颜色分布,是有规律的,这就是Bayer pattern(拜尔模板),常见的有以下4种:
上述pattern中,每4个像素记录1个R、1个B和2个G,之所以绿色得到“倚重”,是因为人眼对绿光最敏感。
这样一来,我们得到的RAW图就不再是mono图,而是彩图,效果如下所示:
最后经过插值算法,根据周边像素点计算出中心像素点上另外两种原色分量,就得到一张看上去比较正常的RAW图:
篇幅所限,RAW格式的科普就到此为止吧,希望对大家有用。
其他
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。