CN111726634B - 基于fpga的高分辨率视频图像压缩传输方法及系统 - Google Patents
基于fpga的高分辨率视频图像压缩传输方法及系统 Download PDFInfo
- Publication number
- CN111726634B CN111726634B CN202010620006.4A CN202010620006A CN111726634B CN 111726634 B CN111726634 B CN 111726634B CN 202010620006 A CN202010620006 A CN 202010620006A CN 111726634 B CN111726634 B CN 111726634B
- Authority
- CN
- China
- Prior art keywords
- coding
- coefficient
- fpga
- data stream
- video
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
基于FPGA的高分辨率视频图像压缩传输方法和系统。方法包括:获取视频数据流至FPGA,通过色域转换得到YCbCr4:4:4格式,循环向16个视频行缓存RAM写入,8个RAM为1组,分为2组,每写完一组RAM后,从左向右依次读取数据,每次读取8列,形成8X8的图像数据块,直到将整组数据读取完;对8x8图像数据块依次进行DCT变换、ZIGZAG扫描、量化、RLE游程编码以及哈夫曼编码,直到将8行数据按照8x8图像数据块全部处理完,若最后一块不足8个像素的点则对应补齐;直到整帧图像处理结束,完成压缩。系统包括FPGA,FPGA包括:视频数据流输入、写RAM控制、视频缓存RAM、8*8块产生、DCT、ZIGZAG扫描、量化、RLE游程编码、哈夫曼编码等。只用单个FPGA实现高分辨率视频图像压缩,极大减小数据量。
Description
技术领域
本发明涉及视频图像压缩,尤其与基于FPGA的高分辨率视频图像压缩传输方法及系统相关。
背景技术
视频传输系统应用于各个行业,为了满足用户的各种需求,现在的视频接口种类越来越丰富,传输能力越来越强。例如早期的模拟接口VGA、CVBS接口发展到数字接口DVI、HDMI、DP等等,不胜枚举。能传输的分辨率越来越大,帧率也越来越高,但是同时也存在对传输电缆要求高,传输距离近,传输不够灵活等缺点。
实际使用中用户往往需要更灵活、更远距离的传输或者使用普通通信接口传输高清视频图像,比如通过网口传输4K分辨率的视频图像,这就需要对视频图像进行压缩处理后再传输。现有的压缩处理传输方式,在通信带宽受限时存在传输问题,并对通信接口具有一定的要求才能完成,且处理方式对硬件资源要求/浪费较多,有必要加以改进。
发明内容
针对上述相关现有技术的不足与缺陷,本发明提供基于FPGA的高分辨率视频图像压缩传输方法及系统,在只用单个FPGA的情况下结合创新压缩编码算法实现高分辨率视频图像压缩,极大减小数据量,用更小的带宽即可传输更大的分辨率,用较低速通信接口就能传输高分辨率视频,在通信带宽受限的情况下也能完成视频的传输。
为了实现上述目的,本发明采用以下技术:
基于FPGA的高分辨率视频图像压缩传输方法,其特征在于,包括步骤:
通过FPGA的接口获取视频数据流至FPGA,并对视频数据流的格式进行判断:
若视频数据流的格式为YCbCr4:4:4,向FPGA的视频缓存RAM写入;
若视频数据流的格式不为YCbCr4:4:4,则通过色域转换得到YCbCr4:4:4格式,向FPGA的视频缓存RAM写入;其中,视频缓存RAM包括两组,每组8个RAM,每个RAM用于缓存一行视频数据流数据;
循环向16个视频行缓存RAM写入,8个RAM为1组,分为2组,每写完一组RAM后,从左向右依次读取数据,每次读取8列,形成8X8的图像数据块供处理,直到将整组数据读取完;具体是:按顺序循环地将每一行视频数据流数据写入到两组RAM中,按照乒乓操作对两组RAM进行缓存,当写完第一组RAM以后,同时读取此组8个RAM中的数据,每次读取8列,形成8x8图像数据块供处理,同时将新进来的数据缓存写入第二组RAM;
对8x8图像数据块依次进行DCT变换、ZIGZAG扫描、量化、RLE游程编码以及哈夫曼编码,直到将8行数据按照8x8图像数据块全部处理完,若最后一块不足8列,则对末尾的像素点进行补齐;再处理第二组RAM的8行数据,直到整帧图像处理结束,完成压缩。
进一步,DCT变换,用于对视频信号进行时域到频域的转换,获得8x8系数矩阵;ZIGZAG扫描,用于对DCT变换后的8x8系数矩阵按照预定的排列顺序转换成一维的1x64的系数依次输出;量化,用于使用量化表对ZIGZAG重排序后的系数进行量化,将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化;RLE游程编码,用于将量化后的系数数据中连续的‘0’按游程的方式表示,输出幅度、游程RRRR和分类SSSS;哈夫曼编码,用于根据使用频率来最大化压缩视频数据量。
进一步,DCT变换,采用查表的方式实现:
将系数值预设于FPGA的ROM,然后在进行DCT运算时,通过查询ROM地址获得运算结果,使一个8x8图像数据块变换为一个8x8系数矩阵;其中,8x8系数矩阵,左上角第一个系统为直流DC系数,其余63个为交流AC系数。
进一步,将一个图像数据块经量化后系数中连续为‘0’的值进行压缩,包括步骤:统计输入的系数值,若输入的系数不为“0”,输出一个编码结果;若输入的系数为“0”,则统计连续“0”的个数,并根据“0”的个数的输出另一个编码结果;按照此方式统计剩下的输入系数,若某个位置开始到最后一个系数都是连续的“0”,则输出结束EOB标识,结束编码。
进一步,哈夫曼编码,包括步骤:将哈夫曼编码表预设于FPGA的ROM中,在进行编码时,通过查询ROM地址进行编码,输出为码长和码字,编码结果依次输出形成压缩数据流;
其中,编码时对于DC系数跟AC系数采用不同的编码方式,对RLE游程编码后的幅度以及分类SSSS也采用不同的编码方式:
对DC系数先将当前DC系数减去前一个DC系数后再进行VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对AC系数直接采用VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对RLE游程编码的幅度采用VLI变长整数编码;
对分类SSSS采用VLC变长哈夫曼编码。
本发明同时提供的一种基于FPGA的高分辨率视频图像压缩传输系统,包括设于板卡的FPGA,其特征在于,FPGA包括:
视频数据流输入接口,用于获取视频数据流至FPGA,并对视频数据流的是否为YCbCr4:4:4格式进行判断;
色域转换模块,用于在视频数据流输入接口判断视频数据流格式不为YCbCr4:4:4格式时将视频数据流格式转换为YCbCr4:4:4格式;
视频缓存RAM,包括两组,每组8个RAM,每个RAM用于缓存一行格式为YCbCr4:4:4的视频数据流数据;
写RAM控制单元,用于按照顺序循环将每一行视频数据流数据写入到两组RAM中,两组RAM按照乒乓操作进行缓存写入;
8*8块产生单元,用于产生8*8的数据块,同时读取一组RAM中的数据,每次读取8列,从而形成8*8的图像数据块,直到一组RAM中的数据读完;
DCT单元,用于对视频信号进行时域到频域的转换,获得8x8系数矩阵;
ZIGZAG扫描单元,用于对DCT变换后的8x8系数矩阵按照预定的排列顺序转换成一维的1x64的系数依次输出;
量化单元,用于使用量化表对ZIGZAG重排序后的系数进行量化,将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化;
RLE游程编码单元,用于将量化后的系数数据中连续的‘0’按游程的方式表示,输出幅度、游程RRRR和分类SSSS;以及
哈夫曼编码单元,用于根据使用频率来最大化压缩视频数据量。
进一步,DCT变换单元,用于根据预设于FPGA的ROM的系数值,然后在进行DCT运算时,通过查询ROM地址获得运算结果,使一个8x8图像数据块变换为一个8x8系数矩阵;其中,8x8系数矩阵,左上角第一个系统为直流DC系数,其余63个为交流AC系数。
进一步,量化单元,用于对输入的系数值进行统计,若输入的系数不为“0”,输出一个编码结果;若输入的系数为“0”,则统计连续“0”的个数,并根据“0”的个数的输出另一个编码结果;按照此方式统计剩下的输入系数,若某个位置开始到最后一个系数都是连续的“0”,则输出结束EOB标识,结束编码。
进一步,哈夫曼编码单元,用于根据预设于FPGA的ROM的哈夫曼编码表,在进行编码时,通过查询ROM地址进行编码,输出为码长和码字,编码结果依次输出形成压缩数据流;
其中,编码时对于DC系数跟AC系数采用不同的编码方式,对RLE游程编码后的幅度以及分类SSSS也采用不同的编码方式:
对DC系数先将当前DC系数减去前一个DC系数后再进行VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对AC系数直接采用VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对RLE游程编码的幅度采用VLI变长整数编码;
对分类SSSS采用VLC变长哈夫曼编码。
进一步,FPGA还包括:
FF00替代单元,用于在哈夫曼编码单元编码后,当编码后的数据流中出现16进制的FF时,使用2个字节的16进制数FF 00代替;
头添加单元,用于根据预设于FPGA的RAM中的编码头的信息对压缩完成的数据添加JPEG编码头,以封装成完整的JPEG格式图片数据流;其中,编码头的信息包含分辨率、量化表、哈夫曼表信息;
UDP通信接口,用于将封装成的图片数据流打包成UDP报文通过接口发送,打包时,在每一帧的数据开始前加入特定的帧标志,以便于在接收端将每一帧分离;
UART配置接口,连接FPGA的寄存器组,用于供用户通过UART配置接口设置视频图像的分辨率、自己定义的量化表信息,以调节需要的图像压缩比率。
本发明有益效果在于:
1、仅用一个FPGA硬件模块,即可完成对高分辨率视频图像帧的JPEG压缩工作;压缩包含判断、色域转换、RAM缓存及乒乓操作、8*8块生成,以及基于8*8的DCT变换、ZIGZAG扫描、量化、RLE以及哈夫曼编码操作等步骤,可在一个FPGA模块上实现,节约了硬件搭建资源;
2、可以按照用户的设置做出实时响应,用户可以根据输入图像的分辨率以及输出接口的带宽设置一个合适的压缩比率,系统会根据用户的设置进行图像的压缩,以满足用户的不同需求;
3、采用查表方式的DCT变换处理,利于实现对系数值的定义预设,并且为RLE编码中进行连续“0”进行压缩提供基础,然后结合RLE编码压缩后,根据DC系统、AC系数、幅度、分类SSSS采用不同的编码方式进行处理,达到更加有效更好地压缩效果;
4、通过应用本发明,在完成高分辨率视频帧压缩编码工作后,可通过千兆网口将压缩后的数据传输出去,实现了通过千兆网口传输高分辨率视频图像的功能,通过实验,可以实现通过千兆网口传输4K@30帧的高分辨率视频图像。由于FPGA的灵活性,在应用中,可以灵活的更改输入接口跟输出接口的类型以满足实际的需求。凭借FPGA的高速并行特性优势,视频压缩处理速度快、时延小,可以应用到很多板卡到板卡等视频传输场合中。而且压缩后的视频数据量大幅减小,对传输带宽要求降低,对传输的线缆要求也相应降低,传输距离更远,稳定性更高。
附图说明
图1为本申请实施例的基于FPGA的高分辨率视频图像压缩传输方法流程图。
图2为本申请实施例的8x8图像数据块形成示意图。
图3为本申请实施例的VLC跟VLI的交替编码方式示意图。
图4为本申请实施例的基于FPGA的高分辨率视频图像压缩传输系统结构图。
图5为本申请实施例的基于FPGA的高分辨率视频图像压缩传输系统硬件实例图。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
如图1所示,为本实例提供的基于FPGA的高分辨率视频图像压缩传输方法,包括步骤:
(1)通过FPGA的接口获取视频数据流至FPGA,并对视频数据流的格式进行判断:
若视频数据流的格式为YCbCr4:4:4,向FPGA的视频缓存RAM写入;
若视频数据流的格式不为YCbCr4:4:4,则通过色域转换得到YCbCr4:4:4格式,向FPGA的视频缓存RAM写入;其中,视频缓存RAM包括两组,每组8个RAM,每个RAM用于缓存一行视频数据流数据;
(2)按顺序循环地将每一行视频数据流数据写入到两组RAM中,按照乒乓操作对两组RAM进行缓存,当写完第一组RAM以后,同时读取此组8个RAM中的数据,每次读取8列,形成8x8图像数据块供处理,同时将新进来的数据缓存写入第二组RAM;
(3)对8x8图像数据块依次进行DCT变换、ZIGZAG扫描、量化、RLE游程编码以及哈夫曼编码,直到将8行数据按照8x8图像数据块全部处理完,若最后一块不足8列,则对末尾的像素点进行补齐;再处理第二组RAM的8行数据,直到整帧图像处理结束,完成压缩。
具体的,通过DCT变换对视频信号进行时域到频域的转换,获得8x8系数矩阵。
DCT离散余弦变换,将时域信号转换到频域,减少图像之间的相关性,压缩一定数据量,采用查找表的方式实现。通过预先生成.mif格式的表数据,在FPGA中例化ROM存储器,将.mif文件导入到ROM存储器中。
对8*8的图像块做二维DCT变换的运算,当进行DCT运算时通过查询ROM地址得到运算结果。一个8*8的图像块经过DCT变换后得到一个8*8的系数矩阵,最左上角第一个系数为直流DC系数,其余63个为交流AC系数。
DCT变换把图像能量集中到人眼敏感的低频段,实现能量压缩和去相关。
具体的,ZIGZAG扫描可对DCT变换后的8x8系数矩阵按照预定的排列顺序转换成一维的1x64的系数依次输出。其排列顺序实例如表1所示:
具体的,量化中,使用量化表对ZIGZAG重排序后的系数进行量化,将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化,表示为8*8的矩阵,如表2和表3所示。量化表可以预设于FPGA。
实际使用时,可以根据需求调整量化表,以匹配对应需要压缩的视频图像。
具体的,通过RLE游程编码将量化后的系数数据中连续的‘0’按游程的方式表示,输出幅度、游程RRRR和分类SSSS;从而减小数据量,达到压缩的目的。
RLE游程编码具体可采用如下方式包:
统计输入的系数值,若输入的系数不为“0”,输出一个编码结果;
若输入的系数为“0”,则统计连续“0”的个数,并根据“0”的个数的输出另一个编码结果;
按照此方式统计剩下的输入系数,若某个位置开始到最后一个系数都是连续的“0”,则输出结束EOB标识,结束编码。
具体的,哈夫曼编码,用于根据使用频率来最大化压缩视频数据量。可采用如下方式:将哈夫曼编码表预设于FPGA的ROM中,在进行编码时,通过查询ROM地址进行编码,输出为码长和码字,编码结果依次输出形成压缩数据流。
其中,编码时对于DC系数跟AC系数采用不同的编码方式,对RLE游程编码后的幅度以及分类SSSS也采用不同的编码方式:
对DC系数先将当前DC系数减去前一个DC系数后再进行VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对AC系数直接采用VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对RLE游程编码的幅度采用VLI变长整数编码;
对分类SSSS采用VLC变长哈夫曼编码。
VLC编码时:DC编码时,输入为分类,输出为码长和码字;AC编码时,输入为游程RRRR跟分类SSSS,输出为码长跟码字,编码结果依次输出形成压缩数据流。
VLC跟VLI的交替编码方式如图3所示。
如图4所示,为本实例提供的基于FPGA的高分辨率视频图像压缩传输系统。
包括设于板卡的FPGA,FPGA包括:依次连接的视频数据流输入接口、写RAM控制单元、视频缓存RAM、8*8块产生单元、DCT单元、ZIGZAG扫描单元、量化单元、RLE游程编码单元、哈夫曼编码单元,以及连接于视频数据流输入接口和RAM控制单元之间的色域转换模块。
视频数据流输入接口对获取视频数据流至FPGA,并对视频数据流的是否为YCbCr4:4:4格式进行判断;在视频数据流输入接口判断视频数据流格式不为YCbCr4:4:4格式时色域转换模块将视频数据流格式转换为YCbCr4:4:4格式。
视频缓存RAM,包括两组,每组8个RAM,每个RAM用于缓存一行格式为YCbCr4:4:4的视频数据流数据。写RAM控制单元按照顺序循环将每一行视频数据流数据写入到两组RAM中,两组RAM按照乒乓操作进行缓存写入;8*8块产生单元在第一组RAM写完以后,同时读取此组8个RAM中的数据,每次读取8列,形成8x8图像数据块供处理;写RAM控制单元在8*8块产生单元进行读取时,将新进来的数据缓存写入第二组RAM。
DCT单元对视频信号进行时域到频域的转换,获得8x8系数矩阵;ZIGZAG扫描单元对DCT变换后的8x8系数矩阵按照预定的排列顺序转换成一维的1x64的系数依次输出;量化单元使用量化表对ZIGZAG重排序后的系数进行量化,将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化;RLE游程编码单元将量化后的系数数据中连续的‘0’按游程的方式表示,输出幅度、游程RRRR和分类SSSS;哈夫曼编码单元根据使用频率来最大化压缩视频数据量。
对8*8图像数据块依次进行DCT变换、ZIGZAG扫描、量化、RLE以及哈夫曼编码操作,此一系列处理过程都是基于流水线操作方式,直到将8行数据按照8x8的块全部处理完;若最后一块不足8列,则对末尾的像素点进行补齐;再处理第二组RAM的8行数据,直到整帧图像处理结束。整个JPEG的压缩过程就完成了。
如图5所示,为本实例中基于FPGA的高分辨率视频图像压缩传输系统的一种具体硬件实现模块图。
按照图5的实施形式,对各个模块的功能以及工作方式进行详细的叙述:
RGB2YCbCr:该模块完成色域的转换,它根据公式
进行计算,把输入的RGB转换到YCbCr色域。当输入为YCbCr色域时,旁路该模块。具体的,如图5所示,视频数据流输入连接RGB2YCbCr;视频数据流输入和RGB2YCbCr连接MUX,MUX连接写RAM控制。
写RAM控制连接视频缓存RAM,视频缓存RAM连接8*8块产生。
视频缓存为16个RAM,每个RAM可以缓存一行的数据,当有图像输入时按顺序循环地将每一行数据写入到RAM中。16个RAM分为2组,8个为一组,按照乒乓操作对此两组RAM进行视频缓存。
写RAM控制及8*8块产生:写控制循环的向16个行RAM写数据,每当写完成8行后8*8块产生模块就去读取数据,产生8*8的块输出。当到达行末端的最后一块时,由于分辨率的宽和高可能不是8的倍数,所以需要对其进行补齐。在RAM中未被写入的区域数据为‘0’,当需要补齐时直接读取RAM中剩下的数据形成8*8的块即完成了像素补齐。
DCT:离散余弦变换,将时域信号转换到频域,减少图像之间的相关性,压缩一定数据量,采用查找表的方式实现,可以事先生成.mif格式的表数据,在FPGA中例化ROM存储器,将.mif文件导入到ROM存储器中。当进行DCT运算时通过查询ROM地址得到运算结果。一个8*8的图像块经过DCT变换后得到一个8*8的系数矩阵,最左上角第一个系数为直流DC系数,其余63个为交流AC系数。
ZIGZAG:对DCT变换后的8x8系数矩阵按照一定的排列顺序转换成一维的1x64的系数依次输出,其排列顺序如表1所示。
Quantization:使用量化表对ZIGZAG重排序后的系数进行量化,也即将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化,表为8*8的矩阵,如表2、表3所示。在应用中可以根据具体需求调整此表格。
RLE游程编码:将量化后的数据中连续的‘0’按游程的方式表示,进一步压缩数据量。游程编码的输入为经量化后的8*8图像块的系数,输出为幅度、游程RRRR和分类SSSS。编码时,统计输入的系数值,当输入编码器的系数不为‘0’时,立即输出一个编码结果;如果系数值为‘0’,则统计连续‘0’的个数,直到输入系数不为‘0’时,根据统计的‘0’的个数立即输出一个编码结果,依此编码剩下的输入系数。如果从某个位置开始到最后一个系数都是连续的‘0’,则编码器输出一个结束EOB标志,表示编码结束。
Huffman_Encode:哈夫曼编码。为了使运算速度更快,哈夫曼编码同DCT变换一样采用查表的方式。我们事先将哈夫曼码表生成.mif文件,将其存入FPGA的ROM中,在编码的时候将查表值输出。哈夫曼编码对亮度信号的DC和AC系数、色差信号的DC和AC系数使用不同的编码表。
DC系数先采用差分编码DPCM,将当前DC系数减去前一个DC系数后再进行VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
AC系数直接采用VLC和VLI交替编码;
对游程编码后的幅度采用VLI编码,
游程编码后的分类SSSS采用VLC变长哈夫曼编码;编码时对亮度跟色差系数采用不同的编码表。
哈夫曼编码对游程编码完的数据进行VLC、VLI交替的编码传输,编码根据VLI、VLC编码表进行。FPGA采用查找表的方式进行查表编码运算,这种方式速度快,编码效率高。VLC编码时:DC编码时,输入为分类,输出为码长和码字;AC编码时,输入为游程RRRR跟分类SSSS,输出为码长跟码字,编码结果依次输出形成压缩数据流。VLC跟VLI的交替编码方式如图3所示。
表4为亮度跟色差DC系数VLC表。
表5为亮度跟色差AC系数VLC表。
表6为亮度跟色差DC系数的VLI编码表。
表7为亮度跟色差AC系数的VLI编码表。
ffbyte_deal:如果编码后的数据流中出现16进制的FF,使用2个字节的16进制数FF 00代替。
jpegheader:为压缩数据添加JPEG编码头,头中包含了分辨率、量化表、哈夫曼表等信息,封装成完整的JPEG格式的图片数据流。文件头信息提前存入RAM中,当设置视频的分辨率跟量化表信息时对RAM中相应地址重新写入相应的值。
UDP通信接口:将压缩后的数据打包成UDP报文通过接口输出。在每一帧的数据开始前加入特定的帧标志,以便于在接收端将每一帧分离出来。
UART配置接口,连接FPGA的寄存器组,用于供用户通过UART配置接口设置视频图像的分辨率、自己定义的量化表信息,以调节需要的图像压缩比率。在整个处理过程中,用户可以通过UART设置视频图像的分辨率、自己定义的量化表等信息,从而调节图像的压缩比率。
通过应用本申请实施例的应用,可以在完成高分辨率视频帧压缩编码工作后,通过千兆网口将压缩后的数据传输出去,实现了通过千兆网口传输高分辨率视频图像的功能。
由于FPGA的灵活性,在应用中,可以灵活的更改输入接口跟输出接口的类型以满足实际的需求。凭借FPGA的高速并行特性优势,视频压缩处理速度快、时延小,可以应用到很多板卡到板卡等视频传输场合中。
压缩后的视频数据量大幅减小,对传输带宽要求降低,对传输的线缆要求也相应降低,传输距离更远,稳定性更高。
通过实验,可以实现通过千兆网口传输4K@30帧的高分辨率视频图像。
Claims (6)
1.基于FPGA的高分辨率视频图像压缩传输方法,其特征在于,包括步骤:
通过FPGA的接口获取视频数据流至FPGA,并对视频数据流的格式进行判断:
若视频数据流的格式为YCbCr4:4:4,向FPGA的视频缓存RAM写入;
若视频数据流的格式不为YCbCr4:4:4,则通过色域转换得到YCbCr4:4:4格式,向FPGA的视频缓存RAM写入;其中,视频缓存RAM包括两组,每组8个RAM,每个RAM用于缓存一行视频数据流数据;
按顺序循环地将每一行视频数据流数据写入到两组RAM中,按照乒乓操作对两组RAM进行缓存,当写完第一组RAM以后,同时读取此组8个RAM中的数据,每次读取8列,形成8x8图像数据块供处理,同时将新进来的数据缓存写入第二组RAM;
对8x8图像数据块依次进行DCT变换、ZIGZAG扫描、量化、RLE游程编码以及哈夫曼编码,直到将8行数据按照8x8图像数据块全部处理完,若最后一块不足8列,则对末尾的像素点进行补齐;再处理第二组RAM的8行数据,直到整帧图像处理结束,完成压缩;
DCT变换采用查表的方式实现:将系数值预设于FPGA的ROM,然后在进行DCT运算时,通过查询ROM地址获得运算结果,使一个8x8图像数据块变换为一个8x8系数矩阵;其中,8x8系数矩阵,左上角第一个系数为直流DC系数,其余63个为交流AC系数;
RLE游程编码用于将量化后的系数数据中连续的‘0’按游程的方式表示,输出幅度、游程RRRR和分类SSSS;
哈夫曼编码用于根据使用频率来最大化压缩视频数据量,包括步骤:将哈夫曼编码表预设于FPGA的ROM中,在进行编码时,通过查询ROM地址进行编码,输出为码长和码字,编码结果依次输出形成压缩数据流;
其中,编码时对于DC系数跟AC系数采用不同的编码方式,对RLE游程编码后的幅度以及分类SSSS也采用不同的编码方式:
对DC系数先将当前DC系数减去前一个DC系数后再进行VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对AC系数直接采用VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对RLE游程编码的幅度采用VLI变长整数编码;
对分类SSSS采用VLC变长哈夫曼编码。
2.根据权利要求1所述的基于FPGA的高分辨率视频图像压缩传输方法,其特征在于,
ZIGZAG扫描,用于对DCT变换后的8x8系数矩阵按照预定的排列顺序转换成一维的1x64的系数依次输出;
量化,用于使用量化表对ZIGZAG重排序后的系数进行量化,将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化。
3.根据权利要求1所述的基于FPGA的高分辨率视频图像压缩传输方法,其特征在于,
将一个图像数据块经量化后系数中连续为‘0’的值进行压缩,包括步骤:
统计输入的系数值,若输入的系数不为“0”,输出一个编码结果;若输入的系数为“0”,则统计连续“0”的个数,并根据“0”的个数的输出另一个编码结果;按照此方式统计剩下的输入系数,若某个位置开始到最后一个系数都是连续的“0”,则输出结束EOB标识,结束编码。
4.基于FPGA的高分辨率视频图像压缩传输系统,包括设于板卡的FPGA,其特征在于,FPGA包括:
视频数据流输入接口,用于获取视频数据流至FPGA,并对视频数据流的是否为YCbCr4:4:4格式进行判断;
色域转换模块,用于在视频数据流输入接口判断视频数据流格式不为YCbCr4:4:4格式时将视频数据流格式转换为YCbCr4:4:4格式;
视频缓存RAM,包括两组,每组8个RAM,每个RAM用于缓存一行格式为YCbCr4:4:4的视频数据流数据;
写RAM控制单元,用于按照顺序循环将每一行视频数据流数据写入到两组RAM中,两组RAM按照乒乓操作进行缓存写入;
8*8块产生单元,用于产生8*8的数据块,同时读取一组RAM中的数据,每次读取8列,从而形成8*8的图像数据块,直到一组RAM中的数据读完;
DCT单元,用于根据预设于FPGA的ROM的系数值,然后在进行DCT运算时,通过查询ROM地址获得运算结果,使一个8x8图像数据块变换为一个8x8系数矩阵;其中,8x8系数矩阵,左上角第一个系数为直流DC系数,其余63个为交流AC系数;
ZIGZAG扫描单元,用于对DCT变换后的8x8系数矩阵按照预定的排列顺序转换成一维的1x64的系数依次输出;
量化单元,用于使用量化表对ZIGZAG重排序后的系数进行量化,将系数跟量化表中相应的值做除法运算,使用不同的量化表分别对亮度信号和色差信号进行量化;
RLE游程编码单元,用于将量化后的系数数据中连续的‘0’按游程的方式表示,输出幅度、游程RRRR和分类SSSS;
哈夫曼编码单元,用于根据预设于FPGA的ROM的哈夫曼编码表,在进行编码时,通过查询ROM地址进行编码,输出为码长和码字,编码结果依次输出形成压缩数据流;
其中,编码时对于DC系数跟AC系数采用不同的编码方式,对RLE游程编码后的幅度以及分类SSSS也采用不同的编码方式:
对DC系数先将当前DC系数减去前一个DC系数后再进行VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对AC系数直接采用VLC变长哈夫曼编码和VLI变长整数编码的交替编码;
对RLE游程编码的幅度采用VLI变长整数编码;
对分类SSSS采用VLC变长哈夫曼编码。
5.根据权利要求4所述的基于FPGA的高分辨率视频图像压缩传输系统,其特征在于,
RLE游程编码单元,用于对输入的系数值进行统计,若输入的系数不为“0”,输出一个编码结果;若输入的系数为“0”,则统计连续“0”的个数,并根据“0”的个数的输出另一个编码结果;按照此方式统计剩下的输入系数,若某个位置开始到最后一个系数都是连续的“0”,则输出结束EOB标识,结束编码。
6.根据权利要求4所述的基于FPGA的高分辨率视频图像压缩传输系统,其特征在于,FPGA还包括:
FF00替代单元,用于在哈夫曼编码单元编码后,当编码后的数据流中出现16进制的FF时,使用2个字节的16进制数FF 00代替;
头添加单元,用于根据预设于FPGA的RAM中的编码头的信息对压缩完成的数据添加JPEG编码头,以封装成完整的JPEG格式图片数据流;其中,编码头的信息包含分辨率、量化表、哈夫曼表信息;
UDP通信接口,用于将封装成的图片数据流打包成UDP报文通过接口发送,打包时,在每一帧的数据开始前加入特定的帧标志,以便于在接收端将每一帧分离;
UART配置接口,连接FPGA的寄存器组,用于供用户通过UART配置接口设置视频图像的分辨率、自己定义的量化表信息,以调节需要的图像压缩比率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010620006.4A CN111726634B (zh) | 2020-07-01 | 2020-07-01 | 基于fpga的高分辨率视频图像压缩传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010620006.4A CN111726634B (zh) | 2020-07-01 | 2020-07-01 | 基于fpga的高分辨率视频图像压缩传输方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111726634A CN111726634A (zh) | 2020-09-29 |
CN111726634B true CN111726634B (zh) | 2022-08-05 |
Family
ID=72570831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010620006.4A Active CN111726634B (zh) | 2020-07-01 | 2020-07-01 | 基于fpga的高分辨率视频图像压缩传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111726634B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113840101A (zh) * | 2020-06-24 | 2021-12-24 | 重庆山淞信息技术有限公司 | 基于fpga的视频图像处理方法和装置 |
CN112422992B (zh) * | 2020-10-28 | 2024-10-18 | 西安万像电子科技有限公司 | 图像编码方法及装置 |
CN112437309A (zh) * | 2020-11-12 | 2021-03-02 | 北京深维科技有限公司 | 一种jpeg编码方法及装置 |
CN114697655B (zh) * | 2020-12-30 | 2023-04-11 | 中国科学院计算技术研究所 | 均衡流间压缩速度的神经网络量化压缩方法及系统 |
CN114697673B (zh) * | 2020-12-30 | 2023-06-27 | 中国科学院计算技术研究所 | 基于流间数据混洗的神经网络量化压缩方法及系统 |
CN112954370B (zh) * | 2021-01-28 | 2023-09-26 | 深圳点猫科技有限公司 | 一种用于音视频直播的编码方法、装置及设备 |
CN113301344A (zh) * | 2021-05-22 | 2021-08-24 | 兰州大学 | 一种基于fpga的图像压缩与解压方法 |
CN113518259B (zh) | 2021-05-25 | 2023-06-09 | 龙迅半导体(合肥)股份有限公司 | 一种数据处理方法及装置 |
CN114885036B (zh) * | 2022-07-12 | 2022-09-23 | 深圳安德空间技术有限公司 | 一种探地雷达数据的实时有损压缩方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101335897B (zh) * | 2007-06-28 | 2010-08-25 | 联想(北京)有限公司 | 图像压缩/解码方法及系统 |
CN105611295B (zh) * | 2015-12-23 | 2018-10-02 | 中国航天时代电子公司 | 一种在soc上实现视频采集压缩传输的系统和方法 |
CN106817584A (zh) * | 2016-12-23 | 2017-06-09 | 深圳市紫光同创电子有限公司 | 一种基于fpga的mjpeg压缩实现方法和fpga |
CN108924561A (zh) * | 2018-07-30 | 2018-11-30 | 西安安国软件有限公司 | 基于h.264视频压缩标准的实时视频快速压缩方法 |
-
2020
- 2020-07-01 CN CN202010620006.4A patent/CN111726634B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111726634A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111726634B (zh) | 基于fpga的高分辨率视频图像压缩传输方法及系统 | |
US6184936B1 (en) | Multi-function USB capture chip using bufferless data compression | |
US5422736A (en) | Multi-mode image processing permitting selection of quantization process according to image characteristics | |
KR940011605B1 (ko) | 고정비트율 설정에 의한 영상압축방식 | |
CN107483850B (zh) | 一种低延迟的高清数字图像传输方法 | |
US7991052B2 (en) | Variable general purpose compression for video images (ZLN) | |
US8559499B2 (en) | Frame buffer compression for video processing devices | |
CN101990095B (zh) | 压缩文件生成方法和设备、相关的相机模块和终端 | |
RU2008150330A (ru) | Сжатие видеоданных без видимых потерь | |
CN103458242A (zh) | 基于颜色分类与聚类的图像压缩和解压缩方法 | |
WO2020036957A1 (en) | Image compression | |
JP2015501604A (ja) | 知覚的に無損失のおよび知覚的に強調された画像圧縮システムならびに方法 | |
CN102457722A (zh) | Bayer图像的处理方法及装置 | |
CN113365075A (zh) | 一种应用轻压缩算法的超高清视频的有线发送、接收方法及设备 | |
CN109413445B (zh) | 一种视频传输方法及装置 | |
US20110242112A1 (en) | Display device and driving circuit thereof | |
CN115037941A (zh) | 一种提高压缩率的智能手环图片压缩存储方法 | |
US20090074059A1 (en) | Encoding method and device for image data | |
CN116828200B (zh) | 一种图像处理方法、处理装置、设备及介质 | |
JP2935320B2 (ja) | 画像圧縮伸長装置 | |
CN117319676B (zh) | 一种视频压缩装置、芯片、系统及方法 | |
JP2821614B2 (ja) | 画像伝送装置及び画像伝送方法 | |
JP2001094985A (ja) | 画像符号化装置 | |
JP2958970B2 (ja) | 画像伝送装置及び画像伝送方法 | |
KR100834357B1 (ko) | 영상 데이터의 압축 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |