本发明属于图像压缩,具体涉及一种图像像素位深压缩方法及系统。
背景技术:
1、高速cmos传感器的输出图像一般为10bit或12bit位深,但存储一般使用8bit位深。高速相机的工作流程为:图像采集—>数据存储—>数据导出—>图像后处理。
2、10bit转8bit存储的原因主要有以下几点:一是无论ddr还是flash存储器,其内存架构均是以字节(8bit)为单位,转成8bit存储效率最高,而且同样的存储空间可以录制更长的视频;二是10bit转成8bit后图像总带宽也减少20%,可以降低对存储器的速率要求,降低成本,也可说成是同样的带宽可以支持更高的帧率,有利于提高高速相机的性能。
3、传统的像素位深10bit转化为8bit一般有以下三个方法:
4、方法一为直接取10bit的高8bit,丢弃低2bit数据,也即牺牲有效bit信息,丢失一些图像细节,可以视作有损压缩。
5、方法二为截取10bit的低8位,当数据大于255时,钳位至255;此时即牺牲图像的动态范围,达到保留低位有效bit信息(图像细节)的目的。此时8bit的动态范围只有原来10bit的四分之一。
6、方法三是使用lut查找表来转换位宽,即根据输入的10bit像素值查表找到对应的8bit数值输出,这种方法和方法一样也存在丢失有效bit信息的问题。
7、针对现有技术的不足,亟需一种图像像素位深压缩方法及系统,以解决上述问题。
技术实现思路
1、为解决上述现有技术中的不足,本发明的目的在于克服现有不足,提供一种图像像素位深压缩方法,所述方法包括如下:
2、(1)图像压缩过程:
3、逐行接收cmos传感器发送的图像数据,存储至fpga;
4、判断接收的图像数据的任一像素值是否超过255,若所述像素值不超过255,存储低8bit数据;若所述像素值超过255,存储高8bit数据,对于从像素值不超过255跳变到像素值超过255的像素位置和/或从像素值超过255跳变到像素值不超过255的像素位置进行标记,获得标记点,实现图像数据压缩;
5、(2)图像解压缩过程
6、逐帧获取压缩后的图像数据,对于每一帧图像,基于标记点获取像素值被压缩为取高8bit数据的像素区域;
7、对于像素值被压缩为取高8bit数据的像素区域,进行像素值恢复过程;
8、获得解压缩后的图像。
9、作为上述方案的进一步优化,所述对于从像素值不超过255跳变到像素值超过255的像素位置和/或从像素值超过255跳变到像素值不超过255的像素位置进行标记,包括:
10、对于从像素值不超过255跳变到像素值超过255的像素位置,将前面一个像素值不超过255的像素进行标记。
11、作为上述方案的进一步优化,所述逐帧获取压缩后的图像数据,对于每一帧图像,基于标记点获取像素值被压缩为取高8bit数据的像素区域,包括:
12、基于标记点使用regiongrow区域生成法,获取像素值被压缩为取高8bit数据的像素区域。
13、作为上述方案的进一步优化,所述对于像素值被压缩为取高8bit数据的像素区域,进行像素值恢复过程,包括:
14、基于regiongrow区域生成法生成的区域生成掩模图,所述掩模图与原图像宽高一致,像素一一对应,所述掩模图中regiongrow区域生成法生成的区域的像素值为l1-l2,其中,l1为像素值超过255的像素的真实像素值位数,l2为像素值超过255的像素被压缩后的像素值位数,所述掩模图中其余位置的像素值为1;
15、将掩模图与原始压缩后的图像进行像素一一相乘,完成像素值恢复过程,获得解压缩后的图像。
16、作为上述方案的进一步优化,所述对于从像素值不超过255跳变到像素值超过255的像素位置和/或从像素值超过255跳变到像素值不超过255的像素位置进行标记,包括:
17、对于从像素值不超过255跳变到像素值超过255的像素位置,将前面一个像素值不超过255的像素进行标记;
18、且对于从像素值超过255跳变到像素值不超过255的像素位置,对于后面一个像素值不超过255的像素进行标记。
19、作为上述方案的进一步优化,所述标记方法,包括:
20、将当前像素的像素值是否超255的情况与前一个像素比较,如果两个像素值超255的情况不一致,则将两个像素中像素值不超过255的像素作为标记点。
21、作为上述方案的进一步优化,所述逐帧获取压缩后的图像数据,对于每一帧图像,基于标记点获取像素值被压缩为取高8bit数据的像素区域,包括:
22、基于每一行像素,获取每一行中的标记点,基于每一行第1个标记点和第2个标记点之间的像素即为像素值被压缩为取高8bit数据的行像素区域,基于每一行第3个标记点和第4个标记点之间的像素即为像素值被压缩为取高8bit数据的行像素区域,依次类推,每前后两个标记点之间的即为像素值被压缩为取高8bit数据的行像素区域;
23、基于获得的像素值被压缩为取高8bit数据的行像素区域获取原始图像中像素值被压缩为取高8bit数据的像素区域。
24、作为上述方案的进一步优化,所述对于像素值被压缩为取高8bit数据的像素区域,进行像素值恢复过程,包括:
25、对于获取的像素值被压缩为取高8bit数据的像素区域,将像素值乘以l1-l2即l1-8倍,实现对压缩像素区域的解压缩过程。
26、作为上述方案的进一步优化,所述标记点的标记方法为:将像素值置为0。
27、本发明还公开了一种图像像素位深压缩系统,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现如上任一项所述的图像像素位深压缩的方法。
28、本发明采用上述的技术方案,与现有技术相比,具有如下有益效果:
29、1.本发明通过给出一种图像像素位深压缩方法,主要用于解决传统像素位深压缩的弊端,基于本发明公开的技术方案,通过对位深截取和图像后处理恢复的操作,既保留原高位深图像的动态范围,同时保留图像细节,不损失有效bit信息。
30、2.基于本发明设计的技术方案,能够最大化保留cmos原始的图像细节,即保留所有有效bit位,相较于传统的直接截取方案,本发明技术完全保留了原始图像的有效细节,更利于原始图像压缩后的恢复。
31、3.本发明设计的10bit转8bit技术方法,应用像素值检测对应分别保存位深,压缩合理,相较于传统方案,本发明设计的方法存储效率更高,同等存储空间下,本发明能够录制更大的图像或视频数据,且需求的带宽也有效减小,降低对存储器的速率要求。
1.一种图像像素位深压缩方法,其特征在于,所述方法包括如下:
2.根据权利要求1所述的一种图像像素位深压缩方法,其特征在于,所述对于从像素值不超过255跳变到像素值超过255的像素位置和/或从像素值超过255跳变到像素值不超过255的像素位置进行标记,包括:
3.根据权利要求2所述的一种图像像素位深压缩方法,其特征在于,所述逐帧获取压缩后的图像数据,对于每一帧图像,基于标记点获取像素值被压缩为取高8bit数据的像素区域,包括:
4.根据权利要求3所述的一种图像像素位深压缩方法,其特征在于,所述对于像素值被压缩为取高8bit数据的像素区域,进行像素值恢复过程,包括:
5.根据权利要求1所述的一种图像像素位深压缩方法,其特征在于,所述对于从像素值不超过255跳变到像素值超过255的像素位置和/或从像素值超过255跳变到像素值不超过255的像素位置进行标记,包括:
6.根据权利要求5所述的一种图像像素位深压缩方法,其特征在于,所述标记方法,包括:
7.根据权利要求5所述的一种图像像素位深压缩方法,其特征在于,所述逐帧获取压缩后的图像数据,对于每一帧图像,基于标记点获取像素值被压缩为取高8bit数据的像素区域,包括:
8.根据权利要求7所述的一种图像像素位深压缩方法,其特征在于,所述对于像素值被压缩为取高8bit数据的像素区域,进行像素值恢复过程,包括:
9.根据权利要求1-8任一所述的图像像素位深压缩方法,其特征在于,所述标记点的标记方法为:将像素值置为0。
10.一种图像像素位深压缩系统,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-9中任一项所述的图像像素位深压缩的方法。
