太阳城集团

  • / 12
  • 下载费用:30 金币  

JPEG_LS游程编码FPGA实现方法.pdf

摘要
申请专利号:

CN201210198816.0

申请日:

2012.06.06

公开号:

CN102724505B

公开日:

2015.01.28

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||实质审查的生效IPC(主分类):H04N 7/26申请日:20120606|||公开
IPC分类号: H04N1/41 主分类号: H04N1/41
申请人: 西安电子科技大学
发明人: 雷杰; 王舒瑶; 李云松; 郭杰; 刘凯; 魏雯; 张毅; 贾超群
地址: 710071 陕西省西安市太白南路2号
优先权:
专利代理机构: 陕西电子工业专利中心 61205 代理人: 田文英;王品华
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201210198816.0

授权太阳城集团号:

太阳城集团102724505B||||||

法律状态太阳城集团日:

2015.01.28|||2012.12.05|||2012.10.10

法律状态类型:

授权|||实质审查的生效|||公开

摘要

本发明公开一种JPEG_LS游程编码FPGA实现方法。本发明在JPEG_LS标准实现方法的基础上,按照索引值建立、存储与查找映射表,获得累加和数组,并且采用二分比较法,将游程长度与累加和数组中的数值进行五次比较,得到循环次数,实现游长编码,同时分两步简单有效地实现索引值更新。本发明解决了索引值更新结构复杂的问题,在短周期内实现游长编码,通过累加运算简化了映射表结构,节省了硬件资源。本发明采用全流水结构,硬件实现资源消耗少,具有实时性,易于现场可编程门阵列实现。

权利要求书

权利要求书
1.  一种JPEG_LS游程编码FPGA实现方法,包括以下步骤:
(1)输入像素点
1a)将需要压缩的图像像素点输入到JPEG_LS编码器中;
1b)将当前像素点数值太阳城集团传输至下一个像素点编码处;
1c)按照当前像素点与其邻近点的相应位置关系,依次从随机存储器中读出当前像素点的上一行邻近点太阳城集团;
1d)将需要压缩的图像行尾信号输入到JPEG_LS编码器中;
1e)将需要压缩的图像初次编码信号输入到JPEG_LS编码器中;
(2)判断游程长度
2a)比较当前像素点数值与其所有邻近点数值是否相等,若所有邻近点数值均与当前像素点数值相等,则计数器加“1”,返回步骤(1)读取下一个要处理的像素点及其邻近点太阳城集团,直至出现任一邻近点数值与当前像素点数值不相等的情形时,停止计数;
2b)将停止后的计数器内存储的数值提取出来作为游程长度,存储在移位寄存器内;
(3)建立加和表
3a)对标准算法中参考数组的每个数值做“2”次幂运算,将幂运算结果组成移位数组;
3b)将标准算法中的索引值在取值范围内连续取值,按照索引值的取值大小,依次在移位数组内分别查找出编号对应索引值的数值,将查找出的数值与编号在其后方的数值逐次进行累加运算,将每次累加运算的结果组成编号为索引值的加和数组;
3c)将步骤3b)中得到的所有加和数组存入随机存储器中,组成一个加和表,供后续操作进行查找;
(4)判断索引值大小
判断步骤(1)中的初次编码信号是否有效,若有效,设置索引值为“0”,否则设置索引值为移位寄存器内编码更新的索引值,将索引值存储在移位寄存器内;
(5)查找加和表按照索引值大小,查找加和表中编号对应于索引值的加和数组,读取出加和数组中存
储的数值太阳城集团,将得到的加和数组太阳城集团存储在移位寄存器中;
(6)二分比较
6a)将范围为“0”到“32”的区间作为比较区间;
6b)求出当前比较区间两个边界点数值的平均值,将平均值作为中间点,以中间点为界限,将比较区间划分为上、下两部分区间;
6c)提取出移位寄存器内的加和数组和游程长度,查找加和数组中编号对应于当前中间点的数值,判断游程长度值是否小于中间点对应的数值:若小于,则在比较太阳城集团中记录一比特“0”,选取下半个区间作为比较区间;否则,在比较太阳城集团中记录一比特“1”,选取上半个区间作为比较区间,返回步骤6b),重新选取中间点进行比较操作,直到进行五次比较操作,获得五个比特的比较太阳城集团后,停止操作;
6d)将获得五个比特比较太阳城集团的二进制数转化为十进制数,对十进制数进行加“1”操作;将相加后的结果作为循环次数值,存入移位寄存器内;
(7)游长编码将从移位寄存器中提取的循环次数值作为度量值,输出以此度量值为长度的全
“1”码流到压缩码流缓存器中;
(8)更新参数
8a)提取移位寄存器中的更新索引值和循环次数值,将更新索引值与循环次数值相加,将相加的结果作为索引值更新的中间结果存入移位寄存器中;
8b)将循环次数值减去“1”得到的数值作为查找编号,读出移位寄存器中的游程长度和加和数组,提取加和数组中查找编号对应的数值,用游程长度减去此对应数
值,得到更新的游程长度值,将更新的游程长度值存入移位寄存器中;
(9)判断步骤(1)中输入的行尾信号是否有效:
9a)若有效,输出一比特“1”到压缩码流缓存器中;将从移位寄存器中提取的索引值更新的中间结果作为编码更新的索引值;
9b)若无效,输出一比特“0”到压缩码流缓存器中,提取移位寄存器中索引值更新的中间结果和更新的游程长度,将索引值更新的中间结果作为编号,提取参考数组中此编号对应的数值,将此数值作为度量值,输出以度量值为长度,以更新的游程
长度值为大小的二进制码流;将索引值更新的中间结果减去“1”得到的数值作为编码更新的索引值;
9c)将编码更新的索引值存储在移位寄存器中,供编码器在判断索引值时使用;(10)码字合成将编码时存入压缩码流缓存器中的码流按照存储顺序连接在一起,输出连接后合成的
码流到编码器外部。

2.  根据权利要求1所述的JPEG_LS游程编码FPGA实现方法,其特征在于,步骤1c)中所述的邻近点及其对应位置关系为:上一个处理的像素点,上一个处理像素点上方的像素点,当前处理像素点上方的像素点,下一个处理像素点上方的像素点。

3.  根据权利要求1所述的JPEG_LS游程编码FPGA实现方法,其特征在于,步骤(3)中所述的标准算法参考数组存储了32个数据太阳城集团。

太阳城集团4.  根据权利要求1所述的JPEG_LS游程编码FPGA实现方法,其特征在于,步骤3b)中所述的索引值取值范围为“0”到“31”的整数值。

说明书

说明书JPEG_LS游程编码FPGA实现方法
技术领域
[0001]本发明涉及图像处理技术领域,更进一步涉及图像压缩领域中的JPEG_LS(JointPhotographicExpertsGroup-lossless)图像压缩系统中一种游程编码现场可编程门阵列FPGA(Field-ProgrammableGateArray)实现方法。本发明在建立遍历全部索引值情况加和表的基础上,提供用于二分比较的数组,通过查表和二分比较更新索引值,实现游程编码。本发明可应用于图像压缩系统中大面积灰度值相同的图像压缩编码。
背景技术
[0002]JPEG_LS图像压缩编码实现方法广泛应用于图像压缩领域,由于其游程编码依靠循环结构完成,每一次循环都需要更新数据,所以游程编码一直难以在硬件设计中高速、低资源实现。
[0003] 北京空间机电研究所专利申请的“JPEG_LS游程编码硬件实现方法”(专利申请号:201010120398.4,公开号:CN101783953)中公开了一种用FPGA实现JPEG-LS游程编码的方法,该方法首先通过计数获得游程长度,引入编码映射操作,在FPGA内部存储4个映射表,通过比较查表操作流水线实现编码,解决了原标准结构中多个时钟周期循环编码问题。该方法根据残差编码采用索引值单周期更新操作,同时游长编码和残差编码采用索引值双周期更新操作,提高了编码速度。该方法的不足之处是:为了完成编码映射操作,引入了4个映射表,每个表都要存储大量的数据太阳城集团,需要耗费许多存储器等硬件资源。
[0004]西安空间无线电技术研究所在其专利申请“基于JPEG-LS算法的码流拼接实现系统及方法”(专利申请号:201010240137.6,公开号:CN101895760)中公开了一种基于JPEG_LS压缩编码的码流拼接及实现方法,其中涉及游程编码结构如下:在像素点满足游长条件时,对其进行游程编码操作,每输入一个满足条件的像素点就更新游程长度,接着用游程长度逐次与索引值太阳城集团进行比较,以比特流的形式输出比较结果,完成标准算法中复杂的游长编码,同时在逐次比较中更新索引值,用更新的索引值和游程长度进行残差编码,最终拼接码流完成编码。该方法的不足之处是:对每个满足条件的像素点都进行比较操作,每次比较输出结果,每个周期都进行比较和更新操作,致使其运算量大,处理速度慢。
发明内容
[0005]本发明的目的在于针对上述已有技术的不足,提出一种处理速率高,占用资源少的全流水结构JPEG_LS游程编码FPGA实现方法。该方法建立并查找加和表,通过二分比较法将已有技术中复杂的循环编码结构简化,缩短编码实现的周期,在减少资源的同时提高处理速率。
[0006]为了实现上述目的,本发明的技术方案是将通过索引值建立映射表,映射表中包含32个加和数组,其中每个数组对应一种索引值情况,数组中存储逐次累加的结果。编码器编码时引用上一次编码更新的索引值,查找此索引值对应的加和数组,用二分比较法,通过五次比较得出游程长度与加和数组的比较太阳城集团。根据比较太阳城集团计算出循环次数,由此循
环次数进行游长编码、游程长度更新和索引值的第一步更新,简化了更新索引值的循环结构。分隔编码、残差编码和行尾编码与索引值的第二步更新在判断行尾信号后顺序执行,最后将四次编码的码流依次连接合成为码字输出。
[0007]本发明包括以下步骤:
[0008](1)输入像素点
[0009]1a)将需要压缩的图像像素点输入到JPEG_LS编码器中;
[0010]1b)将当前像素点数值太阳城集团传输至下一个像素点编码处;
[0011]1c)按照当前像素点与其邻近点的相应位置关系,依次从随机存储器中读出当前像素点的上一行邻近点太阳城集团;
[0012] 1d)将需要压缩的图像行尾信号输入到JPEG_LS编码器中;[0013] 1e)将需要压缩的图像初次编码信号输入到JPEG_LS编码器中。[0014] (2)判断游程长度
[0015]2a)比较当前像素点数值与其所有邻近点数值是否相等,若所有邻近点数值均与当前像素点数值相等,则计数器加“1”,返回步骤(1)读取下一个要处理的像素点及其邻近点太阳城集团,直至出现任一邻近点数值与当前像素点数值不相等的情形时,停止计数;
[0016]2b)将停止后的计数器内存储的数值提取出来作为游程长度,存储在移位寄存器内。
[0017](3)建立加和表
[0018]3a)对标准算法中参考数组的每个数值做“2”次幂运算,将幂运算结果组成移位数组;
[0019]3b)将标准算法中的索引值在取值范围内连续取值,按照索引值的取值大小,依次在移位数组内分别查找出编号对应索引值的数值,将查找出的数值与编号在其后方的数值逐次进行累加运算,将每次累加运算的结果组成编号为索引值的加和数组;
[0020]3c)将步骤3b)中得到的所有加和数组存入随机存储器中,组成一个加和表,供后续操作进行查找。
[0021](4)判断索引值大小
[0022]判断步骤(1)中的初次编码信号是否有效,若有效,设置索引值为“0”,否则设置索引值为移位寄存器内编码更新的索引值,将索引值存储在移位寄存器内。
[0023](5)查找加和表
[0024]按照索引值大小,查找加和表中编号对应于索引值的加和数组,读取出加和数组中存储的数值太阳城集团,将得到的加和数组太阳城集团存储在移位寄存器中。
[0025](6)二分比较
[0026]6a)将范围为“0”到“32”的区间作为比较区间;
[0027]6b)求出当前比较区间两个边界点数值的平均值,将平均值作为中间点,以中间点为界限,将比较区间划分为上、下两部分区间;
[0028]6c)提取出移位寄存器内的加和数组和游程长度,查找加和数组中编号对应于当前中间点的数值,判断游程长度值是否小于中间点对应的数值:若小于,则在比较太阳城集团中记录一比特“0”,选取下半个区间作为比较区间;否则,在比较太阳城集团中记录一比特“1”,选取上半个区间作为比较区间,返回步骤6b),重新选取中间点进行比较操作,直到进行五次比较
操作,获得五个比特的比较太阳城集团后,停止操作;
[0029]6d)将获得五个比特比较太阳城集团的二进制数转化为十进制数,对十进制数进行加
“1”操作;将相加后的结果作为循环次数值,存入移位寄存器内。
[0030](7)游长编码
[0031]将从移位寄存器中提取的循环次数值作为度量值,输出以此度量值为长度的全
“1”码流到压缩码流缓存器中。
[0032](8)更新参数
[0033]8a)提取移位寄存器中的更新索引值和循环次数值,将更新索引值与循环次数值相加,将相加的结果作为索引值更新的中间结果存入移位寄存器中;
[0034]8b)将循环次数值减去“1”得到的数值作为查找编号,读出移位寄存器中的游程长度和加和数组,提取加和数组中查找编号对应的数值,用游程长度减去此对应数值,得到更新的游程长度值,将更新的游程长度值存入移位寄存器中。
[0035](9)判断步骤(1)中输入的行尾信号是否有效:
[0036]9a)若有效,输出一比特“1”到压缩码流缓存器中;将从移位寄存器中提取的索引值更新的中间结果作为编码更新的索引值;
[0037] 9b)若无效,输出一比特“0”到压缩码流缓存器中,提取移位寄存器中索引值更新的中间结果和更新的游程长度,将索引值更新的中间结果作为编号,提取参考数组中此编号对应的数值,将此数值作为度量值,输出以度量值为长度,以更新的游程长度值为大小的二进制码流;将索引值更新的中间结果减去“1”得到的数值作为编码更新的索引值;[0038] 9c)将编码更新的索引值存储在移位寄存器中,供编码器在判断索引值时使用。[0039] (10)码字合成
[0040]将编码时存入压缩码流缓存器中的码流按照存储顺序连接在一起,输出连接后合成的码流到编码器外部。
[0041]本发明与现有技术相比具有如下优点:
[0042]第一,本发明建立遍历所有索引值情况的加和表,将累加和结果存入表中,编码时通过索引值查找对应的加和数组,通过游程长度与加和数组的比较,获得游长编码中的循环次数,利用查表法简化了标准实现方法中复杂的循环结构,克服了现有技术多次循环比较的复杂结构,实现用固定的时钟周期完成编码,加快了JPEG_LS游程编码的压缩处理速率。
[0043]第二,本发明在现有技术的基础上,对标准算法中的逻辑进行简化,通过查找一个累加和数组代替了复杂的循环结构,克服了现有技术逻辑复杂、资源占用多的问题,以低资源实现了编码压缩。
[0044]第三,本发明采用二分比较法,将游程长度与加和数组中的数值进行五次比较,得到循环次数,利用二分比较法,克服了现有技术比较次数过多、实现速度缓慢的问题,减少了比较运算的次数,在节省硬件资源的同时加快了压缩编码速率。
附图说明
[0045]图1为本发明流程图;
[0046]图2为本发明当前像素点与邻近点位置关系的示意图;
[0047]图3为本发明二分比较过程中划分区间的示意图。
具体实施方式
[0048]参照图1,本发明的具体实施步骤如下:
[0049]步骤1,输入像素点
[0050]将需要压缩的图像像素点输入到JPEG_LS编码器中。
[0051]将当前像素点数值太阳城集团传输至下一个像素点编码处,当前像素点数值太阳城集团作为下一个处理像素点的邻近点,在下一次编码时使用。
[0052]按照当前像素点与其邻近点的相应位置关系,依次从随机存储器(RAM)中读出当前像素点的上一行邻近点太阳城集团。当前像素点与邻近点的其对应位置关系为:上一个处理的像素点,上一个处理像素点上方的像素点,当前处理像素点上方的像素点,下一个处理像素点上方的像素点。
[0053]将需要压缩的图像行尾信号输入到JPEG_LS编码器中,行尾信号用来判断是否到了图像一行中最后一个像素点,将行尾信号作为传输信号在电路中向后级传输,一直传输至行尾编码处理级。
[0054]将需要压缩的图像初次编码信号输入到JPEG_LS编码器中,初始编码信号用于判断本帧图像是否为第一次编码,将初始编码信号作为传输信号在电路中向后级传输,一直传输至判断索引值的处理级。
[0055]图2所示为本发明实施例中当前像素点与邻近点位置的关系,图中,a表示上一个处理的像素点,c表示上一个处理像素点上方的像素点,b表示当前处理像素点上方的像素点,d表示下一个处理像素点上方的像素点。按照上述位置关系获得四个邻近点像素值,并将其输入至编码器中,供游程编码使用。本发明实施例中,设置行尾信号与初始编码信号为无效状态。
[0056]步骤2,判断游程长度
[0057]比较当前像素点数值与其所有邻近点数值是否相等,若所有邻近点数值均与当前像素点数值相等,则计数器加“1”,返回步骤1读取下一个要处理的像素点及其邻近点太阳城集团,直至出现任一邻近点数值与当前像素点数值不相等的情形时,停止计数。当所有邻近点太阳城集团均与当前像素点太阳城集团相等时,说明图像出现了平滑区域,当前像素点满足进行游程编码的条件,将记录游程编码像素点个数的计数器加“1”。
[0058]将停止后的计数器内存储的数值提取出来作为游程长度,存储在移位寄存器内。
[0059]本发明实施例中,用RunCnt表示游程长度,令游程长度RunCnt=15。
[0060]步骤3,建立加和表
[0061] 对标准算法中参考数组的每个数值做“2”次幂运算,将幂运算结果组成移位数组。[0062] 将标准算法中的索引值在取值范围内连续取值,按照索引值的取值大小,依次在移位数组内分别查找出编号对应索引值的数值,将查找出的数值与编号在其后方的数值逐次进行累加运算,将每次累加运算的结果组成编号为索引值的加和数组。
[0063]逐次累加的步骤如下:(1)设置移位数组的编号为索引值,设置加和数组的编号为“0”,将加和数组中编号为“-1”的数值设置为“0”;(2)将移位数组中编号对应的数值与加和数组中编号减“1”对应的数值相加,将得到的结果存入加和数组中编号对应位;(3)将
移位数组的编号与“1”相加,若相加后移位数组的编号大于“30”,设置移位数组的编号为“31”,否则移位数组的编号为相加后的结果,将加和数组中的编号与“1”相加,相加后得到的结果为加和数组的编号,返回步骤(2)进行加和操作,一直到加和数组中存满“32”个数值,停止加和操作。其中,索引值取值范围为“0”到“31”的整数值。
[0064]将得到的所有加和数组存入随机存储器中,组成一个加和表,供后续操作进行查找。因为索引值共有“32”个取值,所以共建立了32个加和数组组成加和表。
[0065]本发明实施例中,标准数组用J表示,移位数组用J_Trans表示,索引值用RunIndex表示,索引值对应的加和数组用Sum_RunIndex表示,k表示加和数组中的编号,取值范围是“0”到“31”,Sum_RunIndex[k]表示加和数组中第k+1个数值,i表示数组中的编号,取值范围是“0”到“31”,J[i]表示数组J中第i+1个数值。
[0066]本发明以RunIndex=3为例,建立加和表Sum_3:其中,J=[0,0,0,0,1,1,1,1,
2,2,2,2,3,3,3,3,4,4,5,5,6,6,7,7,8,9,10,11,12,13,14,15];移位数组J_Trans=2J[l]
=[1,1,1,1,2,2,2,2,4,4,4,4,8,8,8,8,16,16,32,32,64,64,128,256,512,1024,2048,
4096,8192,16384,32768];
[0067]首先设置移位数组初始编号为索引值“3”,设置加和数组编号为“0”,令加和数组
Sum_3[-1]的数值等于“0”;
[0068]将移位数组中编号为“3”数值J_Trans[3]与加和数组中编号为“-1”的数值Sum_3[-1]相加:Sum_3[0]=J_Trans[3]+Sum_3[-1]=1+0=1,将得到的结果“1”存入加和数组中编号为“0”的Sum_3[0]中,即Sum_3[0]=1;
[0069]将移位数组编号加“1”,移位数组编号更新为“4”,经判断相加后的结果小于“30”,故编号为相加后的结果“4”,将加和数组的编号加“1”,将得到的结果“1”作为加和数组的编号;
[0070]使用更新后的编号继续进行加和运算,将移位数组中编号为“4”的数值J_Trans[4]与加和数组中编号为“0”的数值Sum_3[0]相加:Sum_3[1]=J_Trans[4]+Sum_3[0]=1+2=3,将相加后的结果存入加和数组中编号为“1”的数值中,即Sum_3[1]
=3;
[0071]依次做加和运算,一直到加和数组的编号取到“31”,建立了加和数组Sum_3中的
“32”数值。
[0072]计算出编号k从“0”到“31”的所有取值,得到包含32个数据的Sum_3数组:Sum_3
=[1,3,5,7,9,13,17,21,25,33,41,49,57,73,89,121,153,217,281,409,665,1177,2201,
4249,8345,16537,32921,65689,98457,131225,163993,196761]。
[0073]步骤4,判断索引值大小
[0074]判断步骤1中的初次编码信号是否有效,若有效,设置索引值为“0”,否则设置索引值为移位寄存器内的更新索引值,将索引值存储在移位寄存器内。初次编码信号用于判断是否为本帧图像的第一次编码,如果此信号有效,说明之前没有进行过编码,并无更新出的索引值,故将索引值设置为初始值“0”。
[0075]本发明实施例中,由于编码信号无效,故取移位寄存器中存储的更新索引值,令移位寄存器内更新的索引值RunIndex=3。
[0076]步骤5,查找加和表
[0077] 按照索引值大小,查找加和表中编号对应于索引值的加和数组,读取出加和数组中存储的数值太阳城集团,将得到的数值太阳城集团存储在移位寄存器中。
[0078] 本发明实施例中,索引值RunIndex=3,查找加和表中编号为“3”的加和数组
Sum_3的32个数据太阳城集团。
[0079] 步骤6,二分比较
[0080] 6a)将范围为“0”到“32”的区间作为比较区间;
[0081] 6b)求出当前比较区间两个边界点数值的平均值,将平均值作为中间点,以中间点为界限,将比较区间划分为上、下两部分区间;
[0082]6c)提取出移位寄存器内的加和数组和游程长度,查找加和数组中编号对应于当前中间点的数值,判断游程长度值是否小于中间点对应的数值:若小于,则在比较太阳城集团中记录一比特“0”,选取下半个区间作为比较区间;否则,在比较太阳城集团中记录一比特“1”,选取上半个区间作为比较区间,返回步骤6b),重新选取中间点进行比较操作,直到进行五次比较操作,获得五个比特的比较太阳城集团后,停止操作;
[0083] 图3为本发明实施例中二分比较过程中划分区间的示意图,图中Sum_RunIndex表示步骤6c)中移位寄存器内的加和数组,共包含“32”个数值。图中第一行的中间界点表示第一次执行步骤6b)时求出的平均值,此平均值将整个区间划分为两个区间,每个区间包含“16”个数值,通过步骤6c)中的比较操作选取其中一个区间;第二行中新增的“2”个界点分别是第一次执行步骤6b)时划分出的“2”个区间的平均值,此平均值将原始区间划分为“2”个区间,每个区间包含“8”个值,共得到“4”个区间,通过步骤6c)比较选取其中一个区间;第三行中新增的“4”个界点分别是第二次执行步骤6b)时划分出的“4”个区间的平均值,此平均值将原始区间划分为两个区间,每个区间包含“4”个值,共得到“8”个区间,通过步骤6c)比较选取其中一个区间;第四行中新增的“8”个界点分别是第三次执行步骤
6b)时划分出的“8”个区间的平均值,此平均值将原始区间划分为两个区间,每个区间包含“2”个值,共得到“16”个区间,通过步骤6c)比较选取其中一个区间;第五行中新增的“16”个界点分别是第四次执行步骤6b)时划分出的“16”个区间的平均值,此平均值将原始区间划分为两个区间,每个区间包含“1”个值,共得到“32”个区间,通过步骤6c)比较选取其中一个区间,完成二分比较操作,得到比较太阳城集团。
[0084] 6d)将获得五个比特比较太阳城集团的二进制数转化为十进制数,对十进制数进行加
“1”操作;将相加后的结果作为循环次数值,存入移位寄存器内。
[0085] 本发明实施例中,游程长度RunCnt=15,比较RunCnt与Sum_3[16]的大小:Runcnt=15<Sum_3[16]=153,在比较太阳城集团中记录一比特“0”,选择比较区间为“0”到“16”;
[0086] 比较RunCnt与Sum_3[8]的大小:Runcnt=15<Sum_3[8]=25,在比较太阳城集团中记录一比特“0”,选择比较区间为“0”到“8”;
[0087] 比较RunCnt与Sum_3[4]的大小:Runcnt=15>Sum_3[4]=9,在比较太阳城集团中记录一比特“1”,选择比较区间为“4”到“8”;
[0088] 比较RunCnt与Sum_3[6]的大小:Runcnt=15<Sum_3[6]=17,在比较太阳城集团中记录一比特“0”,选择比较区间为“4”到“6”;
[0089] 比较RunCnt与Sum_3[5]的大小:Runcnt=15>Sum_3[5]=13,在比较太阳城集团中
记录一比特“1”,停止比较操作,得到比较太阳城集团:“00101”;
[0090]将比较太阳城集团转换为十进制数为“5”,用for_num表示循环次数,for_num为“6”。
[0091]步骤7,游长编码
[0092]将从移位寄存器中提取的循环次数值作为度量值,输出以此度量值为长度的全
“1”码流到压缩码流缓存器中。
[0093]本发明实施例中,循环次数for_num为“6”,游长编码为6个“1”,存储“111111”
到压缩码流缓存中。
[0094]步骤8,参数更新
[0095] 提取移位寄存器中的更新索引值和循环次数值,将更新索引值与循环次数值相加,将相加的结果作为索引值更新的中间结果存入移位寄存器中;
[0096]将循环次数值减去“1”得到的数值作为查找编号,读出移位寄存器中的游程长度和加和数组,提取加和数组中查找编号对应的数值,用游程长度减去此对应数值,得到更新的游程长度值,将更新的游程长度值存入移位寄存器中。
[0097] 本发明实施例中,索引值更新中间结果等于RunIndex+for_num=3+6=9,比较太阳城集团十进制数为“5”,加和数组中编号为“5”的数值为Sum_3[5]=13,游程长度为Runcnt=
15,更新的游程长度为RunCnt-Sum_3[5]=15-13=2。
[0098]步骤9,判断步骤1中输入的行尾信号是否有效:
[0099] 若有效,输出一比特“1”到压缩码流缓存器中;将从移位寄存器中提取的索引值更新的中间结果作为编码更新的索引值;
[0100]若无效,输出一比特“0”到压缩码流缓存器中,提取移位寄存器中索引值更新的中间结果和更新的游程长度,将索引值更新的中间结果作为编号,提取参考数组中此编号对应的数值,将此数值作为度量值,输出以度量值为长度,以更新的游程长度值为大小的二进制码流;将索引值更新的中间结果减去“1”得到的数值作为编码更新的索引值。
[0101] 将编码更新的索引值存储在移位寄存器中,供编码器在判断索引值时使用。[0102] 本发明实施例中,行尾信号无效,则在压缩码流缓存器中存入一比特“0”,索引值更新的中间结果为“9”,提取数组J中编号为“9”的数值J[9],J[9]为“2”,更新的游程长度值为“2”,用“2”个比特的二进制数表示数值“2”即为“10”,将“10”存入码流缓存器中;编码更新的索引值为索引值更新的中间结果减去“1”,相减后得到更新索引值为“8”。
[0103]步骤10,码字合成
[0104] 将编码时存入压缩码流缓存器中的码流按照存储顺序连接在一起,输出连接后合成的码流到编码器外部
太阳城集团[0105] 本发明实施例中,码流缓存器中存入的码流为“111111010”,此码流作为此次编码的输出码字。

关 键 词:
JPEG_LS 游程 编码 FPGA 实现 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:JPEG_LS游程编码FPGA实现方法.pdf
链接地址:http://zh228.com/p-6420797.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');