图像格式与视频数字化 && RAW摄像头预览颜色

来源:互联网 发布:彩虹六号网络设置 编辑:程序博客网 时间:2024/05/20 18:46

      常用的平面图像两种格式是位图和矢量图。矢量图又叫向量图,是用一系列计算机指令来描述和记录一幅图,一幅图可以解释为一系列由点、线、面等组成的子图,它所记录的是对象的几何形状、线条粗细和色彩等。矢量图只能表示有规律的线条组成的图形,如工程图、三维造型或艺术字等;对于由无规律的像素点组成的图像(风景、人物、山水),难以用数学形式表达,不宜使用矢量图格式。
      位图又叫点阵图或像素图,计算机屏幕上的图是由屏幕上的发光点(即像素)构成的,每个点用二进制数据来描述其颜色与亮度等信息,这些点是离散的,类似于点阵。多个像素的色彩组合就形成了图像,称之为位图。 位图在放大到一定限度时会发现它是由一个个小方格组成的,这些小方格被称为像素点,一个像素是图像中最小的图像元素。在处理位图图像时,所编辑的是像素而不是对象或形状,它的大小和质量取决于图像中的像素点的多少,每平方英寸中所含像素越多,图像越清晰,颜色之间的混和也越平滑。

      而视频是由连续的图像组成的,原始电视是黑白图像。为了保持彩色电视机对黑白电视的兼容性,彩色信号在黑白电视机中必须也能播放黑白图像,而之前电视射频频带的一个个连续的频道已经占满资源,后来采用在亮度信号(实际上还有调频的伴音信号)上采用压缩亮度信号带宽,大面积着色等技术解决了这个问题。

      图像数字化的结果有两种:RGB 16/18/24-bit format 和 YCbCr 4:2:0/4:2:2 format。RGB的是三基色都用数字信号表示,16位的是RGB565,18位的是RGB666,24位的是RGB888;YCbCr信号对应的亮度,U色差,V色差的采样率之比。RGB和YCbCr的转化公式如下面列出。

                         

      对于很多系统中使用的RGB三基色彩色空间,用在彩色还原图像并不是很好。原因有一:与黑白图像不兼容,灰度=R*0.3+G*0.59+B*0.11,这个过程比较复杂,而且黑白电视不具备解码器,所以彩色信号不可能在黑白电视上显示黑白图像;二是RGB占用同等的带宽,资源不够;三是由于G占亮度值的59%,这使得亮度会受到绿色度的很大影响作用。所以基于以上原因,在视频信号中采用的是YUV空间,Y代表亮度,U代表蓝色色差(蓝色信号与亮度的差值),V代表红色色差。它的优点表现在:一是与黑白图像兼容,忽略UV分量,直接取出Y分量,即把彩色图像转成黑白图像。二是节省带宽。三是由于亮度信号是单独表示的,所以就算色差信号收到干扰,不会影响到亮度。整个过程就是接收到的彩色视频信号首先分解成亮度信号Y和色度信号,色度信号再分解为U色差信号和V色差信号(CCIR656或者CCIR601)。

      CCIR601标准规定,PAL视频信号解码成YUV分量后,分别进行A/D采样量化,转换为数字视频流。亮度信号的采样频率是13.5MHZ,色度信号的采样频率是6.75MHZ,采用8位PCM编码。这样,每行的Y采样数为864(13.5M/15.625K=864)个,其中有效的采样数是720个;每行的U或V采样数是432(6.75M/15.625K=432)个,其中有效的U或V采样数为360个。平均每个象素的YUV位数分别是8BIT,4BIT,4BIT,所以又叫YUV422编码方案。计算下数字视频的数据量=(水平720象素×竖直576行×25帧)×2字节=165Mbps,数据量相当大。YUV与RGB相互转换的公式如下(RGB取值范围均为0-255):
  Y = 0.299R + 0.587G + 0.114B
  U = -0.147R - 0.289G + 0.436B
  V = 0.615R - 0.515G - 0.100B
  R = Y + 1.14V
  G = Y - 0.39U - 0.58V
  B = Y + 2.03U

                       

      细分起来,YUV主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值,图像在肉眼中的感觉不会起太大的变化。所以, 原来用RGB888(R,G,B 都是 8bit unsigned) 模型,4个点需要 4x3=12 bytes。而现在4个点仅需要4+1+1=6bytes,平均每个点占12bites。这样就把图像的数据压缩了一半。下面给出几种具体的存储形式:

(1) YUV 4:4:4:YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
  存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3

(2) YUV 4:2:2:每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,4个像素要占用4+2+2=8,平均每个像素占2个字节。下面的四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] ,存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3,映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

(3) YUV 4:1:1:是在水平方向上对色度进行4:1:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存,平均每个像素6/4字节。下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3],存放的码流为: Y0 U0 Y1 Y2 V2 Y3,映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

     以上三种单位像素占的字节数,便于记忆是:(4+4+4)/4=3,(4+2+2)/4=2,(4+1+1)/4=1.5字节。

     YUV的另一种特性是数据传送顺序的差别,所以YUV422会有:YCBYCR,YCRYCB,CBYCRY,CRYCBY。

 ================================================================================================================

         RAW摄像头预览颜色不对,可从下面着手实验。

            

         如上图所示,sensor的感光面可以感知R /G /B 3种color,对应的color format 第一行为R   Gr   R   Gr ......;第二行为Gb  B   Gb  B  ......。可以发现,同一行,第N 及N+2 是相同的color format;同一列,第N 及N+2 是相同的color format。所以,相邻的四个piexl position,(N,N),(N,N+1),(N+1,N),(N+1,N+1)涵盖了R,Gr,Gb,B 4种corlor format,也就是说,在相邻的4个pixel,总是可以找到某个color format。
         所以在固定起始pixel的条件下,通过修改程序中设定的颜色格式,总会有一种是正常的颜色。假设当前是SENSOR_OUTPUT_FORMAT_RAW_B,可以试下其他的三种:SENSOR_OUTPUT_FORMAT_RAW_Gb、SENSOR_OUTPUT_FORMAT_RAW_Gr、SENSOR_OUTPUT_FORMAT_RAW_R。 


原创粉丝点击