工业相机使用过程记录

02-像素格式解析

通过将相机输出图像裸数据raw格式直接存图,并使用Notepad++中的HEX-Edit插件查看数据内容。



一、黑白/Mono

直接使用相机测试相机图像存图:

海康相机判断相机是否在线 java 海康相机怎么看像素_数据


图像中各部分灰度分别为:0、36、73、109、146、182、219、255,以灰度73列为例



(1)Mono 8

海康相机判断相机是否在线 java 海康相机怎么看像素_十进制_02


该列图像数据为十六进制49,十进制为73,那么Mono 8就是每个像素点占8bit,依次排列。



(2)Mono 10

海康相机判断相机是否在线 java 海康相机怎么看像素_计算机视觉_03


该列图像数据为十六进制2401,由于相机均为小端数据,实际数据应解析为0124,十进制为292=734,那么Mono 10格式为每个像素点占16bit,但是只有10bit为有效数据。


(3)Mono 10 Packed

海康相机判断相机是否在线 java 海康相机怎么看像素_海康相机判断相机是否在线 java_04


Mono 10 Packed像素格式为了节省空间,将10bit数据存储在12bit的内存空间中,剩余2bit为0,那么每24bit数据中包含两个像素点的灰度信息,也就是说49 00 49中存在两个相同灰度像素点的信息,转换为二进制就是0100 1001 0000 00 00
4,与Mono 10格式的结果相同。



(4)Mono 12

海康相机判断相机是否在线 java 海康相机怎么看像素_海康相机判断相机是否在线 java_05


Mono 12与Mono 10类似,12bit数据占据16bit空间,92 04解析为4 92,十进制为1170,1170/16=73。



(5)Mono 12 Packed

海康相机判断相机是否在线 java 海康相机怎么看像素_十进制_06


参考Mono 10 Packed的结果,Mono 12 Packed就应该解析成49 22 49,像素灰度应为492,十进制为1170,与Mono 12格式结果相同。



二、彩色

仍然使用相机测试图像进行存图:

海康相机判断相机是否在线 java 海康相机怎么看像素_计算机视觉_07


以粉色条纹(R:255 G:0 B:255)为例:



(1)Bayer

Bayer格式为大多数彩色工业相机的源数据格式,其他像素格式一般为Bayer格式插值得到。

Bayer格式的存储方式与Mono格式基本一致,差别仅仅在于Mono格式每个像素点存储的是该像素点的灰度信息,而Bayer格式每个像素点存储的是该像素点的某一个分量(RGB)的值。

我使用的是Bayer GR,那么他的像素排布就是第一行GRGRGRGRGR…,第二行BGBGBGBG…,以此类推。

Bayer GR 8选取两行数据的连接位置:

海康相机判断相机是否在线 java 海康相机怎么看像素_十进制_08


第一行GR排列,符合0、255、0、255的规律

第二行BG排列,也符合255、0、255、0的规律

那么Bayer 10/Bayer 10 Packed/Bayer 12/Bayer 12 Packed同理,此处不再赘述。



(2)RGB 8/BGR 8

RGB和BGR格式是最容易理解的像素格式,每个像素点占据连续的24bit空间,其中R、G、B三个分量分别占有8bit,排列方式也非常简单:

RGB 8格式就是R1 G1 B1 R2 G2 B2…

海康相机判断相机是否在线 java 海康相机怎么看像素_计算机视觉_09


那么BGR 8格式就是把RB两分量调换位置,即B1 G1 R1 B2 G2 R2…



(3)YUV

相机提供了YUV格式中的两种:YUV 422 Packed(实际排列方式为UYVY)、YUV 422 (YUYV) Packed(实际排列方式为YUYV)

此处以YUYV方式为例

海康相机判断相机是否在线 java 海康相机怎么看像素_海康相机判断相机是否在线 java_10


像素排列方式为Y1 U1 Y2 V2 Y3 U3 Y4 V4…

每个像素点拥有一个Y分量,每两个像素点共用一个V分量,也就是说Y分量为68,十进制就是104;U分量为DE,十进制为222;V分量为EB,十进制为235。

随便找了个转换公式:

R= Y + ((360 * (V - 128))>>8) =254

G= Y - (( ( 88 * (U - 128) + 184 * (V - 128)) )>>8) =0

B= Y +((455 * (U - 128))>>8) =255

基本符合粉色条纹的RGB分量

实测发现UYVY的方式与YUYV方式仅仅是排列顺序不同,不再赘述。



PS:

Packed在彩色图像中一般表示为各分量交织存储的打包格式比如RGBRGBRGB,Planar一般为分量分别存储的平面格式RRRGGGBBB。

Packed在黑白图像中一般Packed表示节省空间的打包方式,比如12bit数据存储在16bit空间中,剩余的4bit由下一个像素点的4bit填充。