搜索 分析 新世界 法规 图书 网址导航 更多
高级用户登录 | 登录 | |

一种基于变换域下采样技术的图像压缩方法
有权
阅读授权文献

申请号:201510257376.5 申请日:2015-05-19
摘要:本发明提供了一种基于变换域下采样技术的图像压缩方法,它是通过对于内部比较平滑的图像区域,采用基于变换域下采样的方法进行编码,再利用插值技术进行重建,大大降低编码的比特率;采用传统的基于JPEG图像压缩标准的编码方法对于内部纹理比较复杂的图像区域进行编码;将两种编码方法相结合,对不同类型的图像区域采用不同的编码策略,实现对整个图像信号的高效压缩。与传统的JPEG图像压缩方法相比,本发明具有灵活高效的特点,能够克服传统JPEG图像压缩方法中编码模式单一,导致整体编码效率低下的缺点。
申请人: 电子科技大学
地址: 611731 四川省成都市高新区(西区)西源大道2006号
发明(设计)人: 朱树元 曾兵
主分类号: G06T9/00(2006.01)I
分类号: G06T9/00(2006.01)I H03M7/30(2006.01)I
  • 法律状态
2017-10-17  授权
2015-09-23  实质审查的生效IPC(主分类):G06T 9/00申请日:20150519
2015-08-26  公开
注:本法律状态信息仅供参考,即时准确的法律状态信息须到国家知识产权局办理专利登记簿副本。
  • 其他信息
主权项  一种基于变换域下采样技术的图像压缩方法,其特征是它包括以下步骤:步骤1,图像的预处理将大小为W×H的图像,按照传统的JPEG图像压缩标准中图像分块的方法划分为N=(W×H)/162个互不重叠的,大小为16×16的正方形图像块,记为B1,B2,…,Bi,…,BN,这里,W代表图像的宽度,H代表图像的高度,N代表图像划分后图像块的总个数,i代表图像块的索引,i∈{1,2,…,N};步骤2,索引矩阵的产生把256个自然数1,2,…,256按从小到大,从上到下的顺序逐列摆放,产生一个大小为16×16的索引矩阵,记为I:I中的元素记为I(x,y)(x和y都是自然数,并且1≤x≤16,1≤y≤16),这里,x代表索引矩阵I内元素的横坐标,y代表索引矩阵I内元素的纵坐标;步骤3,列索引向量的产生首先,定义2个列索引子向量,分别记为这里,是一个1×64的行向量,为奇数,y为奇数,并且1≤x≤16,1≤y≤16},即是一个1×192的行向量,和y不同时为奇数,并且1≤x≤16,1≤y≤16},即其中,I是步骤2中产生的索引矩阵,x代表索引矩阵I内元素的横坐标,y代表索引矩阵I内元素的纵坐标,x和y都是自然数;然后,将按照从左到右的顺序组成一个1×256的列索引向量,记为这里,I是步骤2中产生的索引矩阵;步骤4,行索引向量的产生首先,定义3个行索引子向量,分别记为这里,是一个大小为1×64的行向量,是一个大小为1×64的行向量,是一个大小为1×128的行向量,其中,I是步骤2中产生的索引矩阵,x代表索引矩阵I内元素的横坐标,y代表索引矩阵I内元素的纵坐标,x和y都是自然数;然后,将按照从左到右的顺序组成一个大小为1×256的行索引向量,记为这里,I是步骤2中产生的索引矩阵;步骤5,变换矩阵的产生首先,按照传统的计算离散余弦变换矩阵的方法,产生两个大小为16×16的离散余弦变换矩阵,记为C1和C2;其次,将离散余弦变换矩阵C1和C2带入传统的矩阵Kronecker乘法中,产生一个大小为256×256的变换矩阵,记为D,并且这里,符号代表传统的矩阵Kronecker乘法中的Kronecker乘法算子;步骤6,调整变换矩阵的列将步骤5中产生的变换矩阵D中的每个列向量记为<mrow><msub><mover><mi>d</mi><mo>&RightArrow;</mo></mover><mi>k</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>D</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>D</mi><mrow><mn>2</mn><mo>,</mo><mi>k</mi></mrow></msub></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><msub><mi>D</mi><mrow><mn>256</mn><mo>,</mo><mi>k</mi></mrow></msub></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>这里,k为矩阵D的列向量下标索引,为步骤3中产生的列索引向量。用矩阵D中的所有列向量组成一个新的大小为256×256的变换矩阵,记为E,步骤如下:第1次,取矩阵D的第个列向量生成矩阵E的第1列,第2次,取矩阵D的第个列向量生成矩阵E的第2列,同理,第256次,取矩阵D的第个列向量生成矩阵E的第256列,即这里,em,n代表矩阵E中的元素,m代表索引矩阵E内元素的横坐标,n代表索引矩阵E内元素的纵坐标,m和n都是自然数,1≤m≤256,1≤n≤256;步骤7,调整变换矩阵的行将步骤6产生的变换矩阵E中的每个行向量记为这里,l为矩阵E的行向量下标索引,为步骤4中产生的行索引向量,用矩阵E中的所有行向量组成一个新的变换矩阵,记为F,步骤如下:第1次,用矩阵E的第个行向量生成矩阵F的第1行,第2次,用矩阵E的第个行向量生成矩阵F的第2行,同理,第256次,用矩阵E的第个行向量生成矩阵F的第256行,即这里,fp,q代表矩阵F中的元素,p代表索引矩阵F内元素的横坐标,q代表索引矩阵F内元素的纵坐标,p和q都是自然数,1≤p≤256,1≤q≤256;步骤8,将每个图像块转化为列向量首先,将步骤1产生的图像块Bi中的每一个元素,按照从上到下,从左到右的顺序,依次取出,并按照从上到下的摆放顺序组成一个大小为256×1的列向量,记为这里,xj代表列向量中的元素,j是中元素的下标索引,j是自然数,1≤j≤256;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;接着,将Xi中的元素依次取出,按照从上到下的顺序生成一个大小为64×1的列向量,记为这里,是步骤3中产生的列索引向量,x'j代表列向量中的元素,j是中元素的下标索引,j是自然数,1≤j≤64;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤9,填充向量的产生将步骤7中产生的变换矩阵F和步骤8中产生的列向量代入传统的基于离散余弦变换的向量填充算法中,产生一个大小为192×1的填充列向量,记为这里,x″k代表列向量中的元素,k是中元素的下标索引,k是自然数,1≤k≤192;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤10,中间向量的产生用步骤8中产生的列向量和步骤9中产生的列向量按照从上到下的顺序组成一个大小为256×1的列向量,记为这里,yl代表列向量中的元素,l是中元素的下标索引,l是自然数,1≤l≤256;x'j代表步骤8中产生的列向量中的元素,j是中元素的下标索引,j是自然数,1≤j≤64;x″k代表步骤9中产生的列向量中的元素,k是中元素的下标索引,k是自然数,1≤k≤192;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤11,系数向量的产生用传统的一维离散余弦变换方法对步骤10中产生的中间向量进行离散余弦变换,得到系数向量这里,zj代表列向量中的元素,j是中元素的下标索引,j是自然数,1≤j≤256;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤12,系数矩阵的产生定义大小为8×8的系数矩阵为B'i,用的第1至8个元素按照从上到下的顺序生成B'i的第1列;用的第9至16个元素按照从上到下的顺序生成B'i的第2列;用的第17至24个元素按照从上到下的顺序生成B'i的第3列;用的第25至32个元素按照从上到下的顺序生成B'i的第4列;用的第33至40个元素按照从上到下的顺序生成B'i的第5列;用的第41至48个元素按照从上到下的顺序生成B'i的第6列;用的第49至56个元素按照从上到下的顺序生成B'i的第7列;用的第57至64个元素按照从上到下的顺序生成B'i的第8列;即<mrow><msubsup><mi>B</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>&beta;</mi><mn>1,1</mn></msub></mtd><mtd><msub><mi>&beta;</mi><mn>1,2</mn></msub></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><msub><mi>&beta;</mi><mrow><mn>1</mn><mo>,</mo><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>&beta;</mi><mn>2,1</mn></msub></mtd><mtd><msub><mi>&beta;</mi><mn>2,2</mn></msub></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><msub><mi>&beta;</mi><mrow><mn>2</mn><mo>,</mo><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><msub><mi>&beta;</mi><mrow><mi>m</mi><mo>,</mo><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>&beta;</mi><mrow><mi>m</mi><mo>,</mo><mn>2</mn></mrow></msub></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><msub><mi>&beta;</mi><mrow><mi>m</mi><mo>,</mo><mi>n</mi></mrow></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>z</mi><mn>1</mn></msub></mtd><mtd><msub><mi>z</mi><mn>9</mn></msub></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><msub><mi>z</mi><mn>57</mn></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mn>2</mn></msub></mtd><mtd><msub><mi>z</mi><mn>10</mn></msub></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><msub><mi>z</mi><mn>58</mn></msub></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><msub><mi>z</mi><mn>8</mn></msub></mtd><mtd><msub><mi>z</mi><mn>16</mn></msub></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><msub><mi>z</mi><mn>64</mn></msub></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>这里,βm,n是B'i中的元素,m代表矩阵B'i内元素的横坐标,n代表矩阵B'i内元素的纵坐标,m和n是自然数,1≤m≤8,1≤n≤8;z1,z2,…,z64代表步骤11中产生的列向量中的64个元素;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤13,对系数矩阵进行编码用传统的JPEG图像压缩标准中的量化方法对步骤12中产生的系数矩阵B'i进行量化,将量化后得到的系数矩阵,记为这里,中的元素,m代表矩阵内元素的横坐标,n代表矩阵内元素的纵坐标,m和n是自然数,1≤m≤8,1≤n≤8;用传统的JPEG图像压缩标准中的反量化方法对进行反量化,得到反量化后的系数矩阵B"i这里,β″m,n是B"i中的元素,m代表矩阵B"i内元素的横坐标,n代表矩阵B"i内元素的纵坐标,m和n是自然数,1≤m≤8,1≤n≤8;用传统的JPEG图像压缩标准中计算编码比特数的方法计算系数矩阵B'i的编码比特数,记为这里,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤14,对系数矩阵进行解码首先,定义一个大小为16×16的全零矩阵,记为<mrow><msub><mover><mi>B</mi><mo>^</mo></mover><mi>i</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>其次,将步骤13得到的矩阵B"i的第1列元素依次取出,并依次放入矩阵第1列的第1至8行;将矩阵B"i的第2列元素依次取出,并依次放入矩阵第2列的第1至8行;将矩阵B"i的第3列元素依次取出,并依次放入矩阵第3列的第1至8行;将矩阵B"i的第4列元素依次取出,并依次放入矩阵第4列的第1至8行;将矩阵B"i的第5列元素依次取出,并依次放入矩阵第5列的第1至8行;将矩阵B"i的第6列元素依次取出,并依次放入矩阵第6列的第1至8行;将矩阵B"i的第7列元素依次取出,并依次放入矩阵第7列的第1至8行;将矩阵B"i的第8列元素依次取出,并依次放入矩阵第8列的第1至8行;将修改后的矩阵记为这里,中的元素,p代表矩阵内元素的横坐标,q代表矩阵内元素的纵坐标,p和q是自然数,1≤p≤16,1≤q≤16;是B"i中的元素,m代表矩阵B"i内元素的横坐标,n代表矩阵B"i内元素的纵坐标,m和n是自然数,1≤m≤8,1≤n≤8;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;最后,用传统的二维离散余弦反变换方法对矩阵进行二维离散余弦反变换,得到大小为16×16的像素矩阵,记为bi这里,αm,n是bi中的元素,m代表矩阵bi内元素的横坐标,n代表矩阵bi内元素的纵坐标,m和n是自然数,1≤m≤16,1≤n≤16;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤15,解码像素矩阵的修正对步骤14中产生的像素矩阵bi,用传统的双三次插值方法对位于(u,v)位置上的像素点进行插值,得到插值后的像素矩阵,记为b'i这里,u为bi内像素点的横坐标,v为bi内像素点的纵坐标,u和v是自然数,并且u和v不同时为奇数,1≤u≤16,1≤v≤16;α′m,n是b'i中的元素,m代表矩阵b'i内元素的横坐标,n代表矩阵b'i内元素的纵坐标,m和n是自然数,1≤m≤16,1≤n≤16;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤16,计算解码像素矩阵的均方误差用传统的计算均方误差的方法计算步骤15中得到的像素矩阵b'i与步骤1中产生的图像块Bi之间的均方误差,记为这里,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤17,用传统的编码方法编码原始图像块首先,将步骤1中所产生的大小为16×16的图像块Bi,按照传统的JPEG图像压缩标准中图像分块的方法分为4个互不重叠,大小为8×8的图像块,记为其中,这里,中的元素,m1代表矩阵内元素的横坐标,n1代表矩阵内元素的纵坐标,m1和n1是自然数,1≤m1≤8,1≤n1≤8;中的元素,m2代表矩阵内元素的横坐标,n2代表矩阵内元素的纵坐标,m2和n2是自然数,1≤m2≤8,1≤n2≤8;中的元素,m3代表矩阵内元素的横坐标,n3代表矩阵内元素的纵坐标,m3和n3是自然数,1≤m3≤8,1≤n3≤8;中的元素,m4代表矩阵内元素的横坐标,n4代表矩阵内元素的纵坐标,m4和n4是自然数,1≤m4≤8,1≤n4≤8;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;其次,对图像块使用传统的JPEG图像压缩标准中的编码方法进行编码,得到编码后的图像块,记为这里,中的元素,m1代表矩阵内元素的横坐标,n1代表矩阵内元素的纵坐标,m1和n1是自然数,1≤m1≤8,1≤n1≤8;对图像块使用传统的JPEG图像压缩标准中计算编码比特数的方法计算编码比特数,记为对图像块使用传统的JPEG图像压缩标准中的编码方法进行编码,得到编码后的图像块,记为这里,中的元素,m2代表矩阵内元素的横坐标,n2代表矩阵内元素的纵坐标,m2和n2是自然数,1≤m2≤8,1≤n2≤8;对图像块使用传统的JPEG图像压缩标准中计算编码比特数的方法计算编码比特数,记为对图像块使用传统的JPEG图像压缩标准中的编码方法进行编码,得到编码后的图像块,记为这里,中的元素,m3代表矩阵内元素的横坐标,n3代表矩阵内元素的纵坐标,m3和n3是自然数,1≤m3≤8,1≤n3≤8;对图像块使用传统的JPEG图像压缩标准中计算编码比特数的方法计算编码比特数,记为对图像块使用传统的JPEG图像压缩标准中的编码方法进行编码,得到编码后的图像块,记为这里,中的元素,m4代表矩阵内元素的横坐标,n4代表矩阵内元素的纵坐标,m4和n4是自然数,1≤m4≤8,1≤n4≤8;对图像块使用传统的JPEG图像压缩标准中计算编码比特数的方法计算编码比特数,记为相加得到图像块Bi的编码比特数,记为这里,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;接着,对图像块使用传统的JPEG图像压缩标准中的解码方法进行解码,得到编码后的图像块,记为这里,中的元素,p1代表矩阵内元素的横坐标,q1代表矩阵内元素的纵坐标,p1和q1是自然数,1≤p1≤8,1≤q1≤8;对图像块使用传统的JPEG图像压缩标准中的解码方法进行解码,得到编码后的图像块,记为这里,中的元素,p2代表矩阵内元素的横坐标,q2代表矩阵内元素的纵坐标,p2和q2是自然数,1≤p2≤8,1≤q2≤8;对图像块使用传统的JPEG图像压缩标准中的解码方法进行解码,得到编码后的图像块,记为这里,中的元素,p3代表矩阵内元素的横坐标,q3代表矩阵内元素的纵坐标,p3和q3是自然数,1≤p3≤8,1≤q3≤8;对图像块使用传统的JPEG图像压缩标准中的解码方法进行解码,得到编码后的图像块,记为这里,中的元素,p4代表矩阵内元素的横坐标,q4代表矩阵内元素的纵坐标,p4和q4是自然数,1≤p4≤8,1≤q4≤8;其中,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;然后,将图像块按照从上到下,从左到右的顺序,组成一个大小为16×16的图像块,记为b"i,这里,其中,是b"i中的元素,m代表矩阵b"i内元素的横坐标,n代表矩阵b"i内元素的纵坐标,m和n是自然数,1≤m≤16,1≤n≤16;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;最后,用传统的计算均方误差的方法计算图像块b"i与步骤1中产生的图像块Bi之间的均方误差,记为这里,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤18,最优编码和解码模式的选择首先,对步骤1产生的图像块Bi,用步骤13得到的比特数和步骤16得到均方误差相乘,将相乘的结果记为用步骤17得到的相乘,将相乘的结果记为比较的大小,如果那么选择步骤8~步骤15的编码和解码方法对步骤1中产生的图像块Bi进行编码和解码;如果那么选择步骤17的编码和解码方法对步骤1中产生的图像块Bi进行编码和解码。将解码后得到图像块,记为这里,中的元素,m代表矩阵内元素的横坐标,n代表矩阵内元素的纵坐标,m和n是自然数,1≤m≤16,1≤n≤16;i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;然后,将对图像块Bi进行编码后得到的编码比特数记为Biti,如果如果这里,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数;步骤19,重建图像对于步骤18中产生的重建图像块采用传统的JPEG图像压缩标准中图像块合成图像的方法,产生重建图像,记为这里,i代表图像块的索引,i∈{1,2,…,N},N代表步骤1中图像划分后图像块的总个数。
公开号  104867165A
公开日  2015-08-26
专利代理机构  电子科技大学专利中心 51203
代理人  曾磊
颁证日  
优先权  
国际申请  
国际公布  
进入国家日期