1、简介
在工业相机做工件测量时,有时候需要把测量图像保存下来,以便日后查看对比。但是工业相机的存储容量小,为了
减少图像的存储容量,以便可以存储更多图像,有时候需要把RGB的图像,压缩保存。压缩的格式有很多比如jpg、png
、yuv等都是压缩图像的一种方式。但是jpg、和png这两种压缩方式是有损压缩。为了达到压缩的目的,又不使
图像因为压缩失真,往往回采用yuv这个压缩方式,不仅可以减少容量还不会导致图像失真。
2、halcon中HImage的数据存储方式
HImage的数据存储方式是先存放所有R通道、接着是所有G通道、最后是所有的B通道。
RRRRRRRRRRRRRRRR...GGGGGGGGGGGGGGG...BBBBBBBBBBBBBBBBBB...
3、YUV422的数据存储方式
(1)、YUV的存储方式有两个,分别是planar和packed,分别表示连续存储和交叉存储。
(2)、planar方式:对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存所有像素点的U,随后是所有像素点的V。
YYYYYYYYYYYYY...UUUUUUUUUUUUU...VVVVVVVVVVVV..
(3)、packed方式:对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。
Y0U0Y1V0Y2U1Y3V1Y4U2Y5V2Y6U3Y7V3Y8U4Y9V4......
4、YUV422的压缩原理
YUV422的压缩原理就是,把RGB三通道数据,压缩成YUV422两通道的数据,相当于减少了图像1/3的存储容量
其中,图像的第1个像素(RGB)转成Y0和U0,图像的第2个像素(RGB)转成Y1和V0,图像的第3个像素(RGB)转成Y3和U1
以此类推,最终整幅图像会转成Y0U0Y1V0Y2U1Y3V1Y4U2Y5V2Y6U3Y7V3Y8U4Y9V4......这样的YUV422数据用于存储。
注:我采用的YUV422只是其中一个方式,YUV的存放还有YUV444、YUV420等格式,每个格式只是YUV的排列不同而已。在此不对YUV做过多介绍。
5、YUV和RGB互相转换公式
(1)、RGB转YUV的公式如下:
uchar Y = (uchar)(+0.2990 * R + 0.5870 * G + 0.1140 * B + 0 )
uchar U = (uchar)(-0.1687 * R - 0.3313 * G + 0.5000 * B + 128)
uchar V = (uchar)(+0.5000 * R - 0.4187 * G - 0.0813 * B + 128)
(2)、YUV转RGB公式如下:
因为YUV的存储是相当于压缩了RGB的一个通道,所以2个Y和1个U、1个V可以还原成2个RGB像素
举例:Y0U0Y1V0
int ruv = (1 << 19) + 2130771 * V0;