import{_ as d,c as a,a as t,b as Q,d as n,o as m}from"./app-BccG_woC.js";const l="/images/2014/08/jpeg_20.jpg",r="/images/2014/08/jpeg_22.jpg",o="/images/2014/08/jpeg_21.gif",e="/images/2014/08/jpeg_25.gif",s="/images/2014/08/jpeg_26.gif",g="/images/2014/08/jpeg_27.gif",H="/images/2014/08/jpeg_28.gif",h="/images/2014/08/jpeg_29.gif",p="/images/2014/08/jpeg_30.gif",V="/images/2014/08/jpeg_31.gif",L="/images/2014/08/jpeg_32.gif",c="/images/2014/08/jpeg_33.gif",M={},Z={class:"MathJax",jax:"SVG",style:{position:"relative"}},f={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.642ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8681.9 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{position:"relative"}},i={style:{"vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{position:"relative"}},w={style:{"vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.194ex",height:"1.895ex",role:"img",focusable:"false",viewBox:"0 -680 970 837.8","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",display:"true",width:"full",style:{"min-width":"43.288ex",position:"relative"}},j={style:{"vertical-align":"-4.284ex","min-width":"43.288ex"},xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"9.698ex",role:"img",focusable:"false","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{position:"relative"}},E={style:{"vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.887ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 1275.8 599.8","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",width:"full",style:{"min-width":"53.63ex",position:"relative"}},O={style:{"vertical-align":"-4.284ex","min-width":"53.63ex"},xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"9.698ex",role:"img",focusable:"false","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",width:"full",style:{"min-width":"81.437ex",position:"relative"}},B={style:{"vertical-align":"-13.852ex","min-width":"81.437ex"},xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"28.836ex",role:"img",focusable:"false","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",display:"true",width:"full",style:{"min-width":"71.821ex",position:"relative"}},R={style:{"vertical-align":"-6.223ex","min-width":"71.821ex"},xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"13.578ex",role:"img",focusable:"false","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},A={style:{"vertical-align":"-28.729ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.005ex",height:"58.588ex",role:"img",focusable:"false",viewBox:"0 -13198 20334 25896","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},X={style:{"vertical-align":"-26.896ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.085ex",height:"54.923ex",role:"img",focusable:"false",viewBox:"0 -12388 21253.4 24276","aria-hidden":"true"};function F(P,T){return m(),a("div",null,[T[25]||(T[25]=t('
这次我们来介绍JPEG算法中的核心内容,离散余弦变换(Discrete cosine transform),简称DCT。
离散余弦变换属于傅里叶变换的另外一种形式,没错,就是大名鼎鼎的傅里叶变换。傅里叶是法国著名的数学家和物理学家,1807年,39岁的傅里叶在他的一篇论文里提出了一个想法,他认为任何周期性的函数,都可以分解为为一系列的三角函数的组合,这个想法一开始并没有得到当时科学界的承认,比如当时著名的数学家拉格朗日提出质疑,三角函数无论如何组合,都无法表达带有“尖角”的函数,一直到1822年拉格朗日死后,傅里叶的想法才正式在他的著作《热的解析理论》一书中正式发表。

金子总会闪光,傅里叶变换如今广泛应用于数学、物理、信号处理等等领域,变换除了它在数学上的意义外,还有其哲学上的伟大意义,那就是,世上任何复杂的事物,都可以分解为简单的事物的组合,而这个过程只需要借助数学工具就可以了。但是当年拉格朗日的质疑是正确的,三角函数的确无法表达出尖角形状的函数,不过只要三角函数足够多,可以无限逼近最终结果。比如下面这张动图,就动态描述了一个矩形方波,是如何做傅里叶分析的。


',7)),Q("p",null,[T[6]||(T[6]=n("当我们要处理的不再是函数,而是一堆离散的数据时,并且这些数据是对称的话,那么傅里叶变化出来的函数只含有余弦项,这种变换称为离散余弦变换。举个例子,有一组一维数据")),Q("mjx-container",Z,[(m(),a("svg",f,T[0]||(T[0]=[t('',1)]))),T[1]||(T[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"["),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"1")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"]")])],-1))]),T[7]||(T[7]=n(",那么可以通过DCT变换得到")),Q("mjx-container",u,[(m(),a("svg",i,T[2]||(T[2]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"})])])],-1)]))),T[3]||(T[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"n")])],-1))]),T[8]||(T[8]=n("个变换级数")),Q("mjx-container",x,[(m(),a("svg",w,T[4]||(T[4]=[t('',1)]))),T[5]||(T[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"F"),Q("mi",null,"i")])])],-1))])]),Q("mjx-container",D,[(m(),a("svg",j,T[9]||(T[9]=[t('',1)]))),T[10]||(T[10]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true"},[Q("mlabeledtr",null,[Q("mtd",null,[Q("mtext",null,"(2.1)")]),Q("mtd",null,[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("msub",null,[Q("mi",null,"F"),Q("mi",null,"m")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"k"),Q("mo",null,"="),Q("mn",null,"0")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"k")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mfrac",null,[Q("mi",null,"π"),Q("mi",null,"n")]),Q("mi",null,"m"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"k"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),Q("mtr",null,[Q("mtd",null,[Q("mi",null,"m")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])])])])])])])],-1))]),Q("p",null,[T[13]||(T[13]=n("此时原始数据")),Q("mjx-container",y,[(m(),a("svg",E,T[11]||(T[11]=[t('',1)]))),T[12]||(T[12]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"m")])])],-1))]),T[14]||(T[14]=n("可以通过离散余弦变换变化的逆变换(IDCT)表达出来"))]),Q("mjx-container",b,[(m(),a("svg",O,T[15]||(T[15]=[t('',1)]))),T[16]||(T[16]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true"},[Q("mlabeledtr",null,[Q("mtd",null,[Q("mtext",null,"(2.2)")]),Q("mtd",null,[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"m")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("msub",null,[Q("mi",null,"F"),Q("mn",null,"0")]),Q("mi",null,"n")]),Q("mo",null,"+"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"k"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"F"),Q("mi",null,"k")])]),Q("mi",null,"n")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mfrac",null,[Q("mi",null,"π"),Q("mi",null,"n")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"m"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},")"),Q("mi",null,"k"),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),Q("mtr",null,[Q("mtd",null,[Q("mi",null,"m")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])])])])])])])],-1))]),T[26]||(T[26]=Q("p",null,"也就是说,经过DCT变换,可以把一个数组分解成数个数组的和,如果我们数组视为一个一维矩阵,那么可以把结果看做是一系列矩阵的和",-1)),Q("mjx-container",v,[(m(),a("svg",B,T[17]||(T[17]=[t('',1)]))),T[18]||(T[18]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true"},[Q("mlabeledtr",null,[Q("mtd",null,[Q("mtext",null,"(2.3)")]),Q("mtd",null,[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"1")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,"="),Q("mfrac",null,[Q("msub",null,[Q("mi",null,"F"),Q("mn",null,"0")]),Q("mi",null,"n")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("mstyle",{mathsize:"0.85em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"F"),Q("mn",null,"1")])]),Q("mi",null,"n")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mi",null,"π"),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"5"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])])])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("mstyle",{mathsize:"0.85em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"F"),Q("mn",null,"2")])]),Q("mi",null,"n")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"6"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"10"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])])])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("mstyle",{mathsize:"0.85em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"F"),Q("mn",null,"3")])]),Q("mi",null,"n")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"9"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"15"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])])])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("mo",null,"…")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("mstyle",{mathsize:"0.85em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"F"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1")])])]),Q("mi",null,"n")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mo",{stretchy:"false"},"("),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mfrac",null,[Q("mrow",null,[Q("mo",{stretchy:"false"},"("),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mi",null,"n"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"π")]),Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"n")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])])])])])])])])])],-1))]),T[27]||(T[27]=t('举个例子,我们有一个长度为8的数字,内容为[50,55,67,80,-10,-5,20,30],在数轴上展示的话,没有任何明显的规律
[50,55,67,80,-10,-5,20,30]经过DCT转换,得到8个级数为[287.0,106.3,14.2,-110.8,9.2,65.7,-8.2,-43.9],根据公式2.3把这个数组转换为8个新的数组的和,再使用图像来表达的话,就可以发现DCT转换的有趣之处了
数组0:[35.9,35.9,35.9,35.9,35.9,35.9,35.9,35.9]
数组1:[26.0,22.1,14.8,5.2,-5.2,-14.8,-22.1,-26.1]
数组2:[3.3,1.4,-1.4,-3.3,-3.3,-1.4,1.4,3.3]
数组3:[-23.0,5.4,27.2,15.4,-15.4,-27.2,-5.4,23.0]
数组4:[1.6,-1.6,-1.6,1.6,1.6,-1.6,-1.6,1.6]
数组5:[9.1,-16.1,3.2,13.6,-13.6,-3.2,16.1,-9.1]
数组6:[-0.8,1.9,-1.9,0.8,0.8,-1.9,1.9,-0.8]
数组7:[-2.1,6.1,-9.1,10.8,-10.8,9.1,-6.1,2.1]奥妙之处在于,经过DCT,数据中隐藏的规律被发掘了出来,杂乱的数据被转换成几个工整变化的数据。DCT转换后的数组中第一个是一个直线数据,因此又被称为“直流数据”,简称DC,后面的数据被称为“交流数据”,简称AC,这个称呼起源于信号分析中的术语。
在JPEG压缩过程中,经过颜色空间的转换,每一个8X8的图像块,在数据上表现为3个8X8的矩阵,紧接着我们对这三个矩阵做一个二维的DCT转换,二维的DCT转换公式为
',12)),Q("mjx-container",C,[(m(),a("svg",R,T[19]||(T[19]=[t('',1)]))),T[20]||(T[20]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true"},[Q("mlabeledtr",null,[Q("mtd",null,[Q("mtext",null,"(2.4)")]),Q("mtd",null,[Q("mstyle",{mathsize:"0.85em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",null,","),Q("mi",null,"v"),Q("mo",{stretchy:"false"},")")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"α"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"⋅"),Q("mi",null,"α"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"v"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"⋅"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"x"),Q("mo",null,"="),Q("mn",null,"0")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"7")])]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"y"),Q("mo",null,"="),Q("mn",null,"0")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"7")])]),Q("mi",null,"f"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",null,","),Q("mi",null,"y"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"x"),Q("mo",null,"+"),Q("mn",null,"1")]),Q("mn",null,"16")]),Q("mi",null,"u"),Q("mi",null,"π"),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},""),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"2"),Q("mi",null,"y"),Q("mo",null,"+"),Q("mn",null,"1")]),Q("mn",null,"16")]),Q("mi",null,"v"),Q("mi",null,"π"),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])])]),Q("mtr",null,[Q("mtd",null,[Q("mi",null,"u"),Q("mo",null,","),Q("mi",null,"v")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mn",null,"7")])]),Q("mtr",null,[Q("mtd",null,[Q("mi",null,"α"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"{"),Q("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("msqrt",null,[Q("mn",null,"8")]),Q("mo",null,",")]),Q("mtd",null,[Q("mtext",null,"when u"),Q("mo",null,"="),Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",null,",")]),Q("mtd",null,[Q("mtext",null,"when u"),Q("mo",null,"≠"),Q("mn",null,"0")])])]),Q("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])])])])])])])])])],-1))]),T[28]||(T[28]=Q("p",null,"DCT的威力究竟有多大,我们可以做一个实际的测试,比如一个所有数值都一样的矩阵,经过DCT转换后,将所有级数组合成一个新的矩阵",-1)),Q("mjx-container",N,[(m(),a("svg",A,T[21]||(T[21]=[t('',1)]))),T[22]||(T[22]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mtable",{columnalign:"center",columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")]),Q("mtd",null,[Q("mn",null,"100")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),Q("mtr",null,[Q("mtd")]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mstyle",{mathsize:"1.2em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"⇓")]),Q("mtext",null,"DCT")])])]),Q("mtr",null,[Q("mtd")]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mtable",{columnalign:"center",columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"800")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mn",null,"0")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])])])])],-1))]),T[29]||(T[29]=Q("p",null,[n("可以看到,经过DCT转换,矩阵的“能量”被全部集中在左上角上的直流分量F(0,0)上,其他位置都变成了0。"),Q("br"),n(" 在实际的JPEG压缩过程中,由于图像本身的连贯性,一个8X8的图像中的数值一般不会出现大的跳跃,经过DCT转换会有类似的效果,左上角的直流分量保存了一个大的数值,其他分量都接近于0,我们以Lenna左上角第一块图像的Y分量为例,经过变换的矩阵为")],-1)),Q("mjx-container",k,[(m(),a("svg",X,T[23]||(T[23]=[t('',1)]))),T[24]||(T[24]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mtable",{columnalign:"center",columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"35")]),Q("mtd",null,[Q("mn",null,"32")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"35")]),Q("mtd",null,[Q("mn",null,"32")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"35")]),Q("mtd",null,[Q("mn",null,"32")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"35")]),Q("mtd",null,[Q("mn",null,"32")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"34")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"35")]),Q("mtd",null,[Q("mn",null,"32")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"36")]),Q("mtd",null,[Q("mn",null,"36")]),Q("mtd",null,[Q("mn",null,"29")]),Q("mtd",null,[Q("mn",null,"27")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"31")]),Q("mtd",null,[Q("mn",null,"30")]),Q("mtd",null,[Q("mn",null,"31")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"32")]),Q("mtd",null,[Q("mn",null,"32")]),Q("mtd",null,[Q("mn",null,"35")]),Q("mtd",null,[Q("mn",null,"30")]),Q("mtd",null,[Q("mn",null,"32")]),Q("mtd",null,[Q("mn",null,"33")]),Q("mtd",null,[Q("mn",null,"31")]),Q("mtd",null,[Q("mn",null,"27")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"30")]),Q("mtd",null,[Q("mn",null,"30")]),Q("mtd",null,[Q("mn",null,"27")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"30")]),Q("mtd",null,[Q("mn",null,"30")]),Q("mtd",null,[Q("mn",null,"28")]),Q("mtd",null,[Q("mn",null,"29")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),Q("mtr",null,[Q("mtd")]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mstyle",{mathsize:"1.2em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"⇓")]),Q("mtext",null,"DCT")])])]),Q("mtr",null,[Q("mtd")]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mstyle",{mathsize:"0.85em"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mtable",{columnalign:"center",columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"257.1")]),Q("mtd",null,[Q("mn",null,"6.4")]),Q("mtd",null,[Q("mn",null,"2.5")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.3")]),Q("mtd",null,[Q("mn",null,"0.4")]),Q("mtd",null,[Q("mn",null,"0.1")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"6.0")]),Q("mtd",null,[Q("mn",null,"6.9")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"8.4")]),Q("mtd",null,[Q("mn",null,"0.0")]),Q("mtd",null,[Q("mn",null,"0.5")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.5")]),Q("mtd",null,[Q("mn",null,"1.9")]),Q("mtd",null,[Q("mn",null,"3.4")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"4.2")]),Q("mtd",null,[Q("mn",null,"3.3")])]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"5.3")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.0")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.4")]),Q("mtd",null,[Q("mn",null,"1.3")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.7")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.5")]),Q("mtd",null,[Q("mn",null,"2.1")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.7")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"2.4")]),Q("mtd",null,[Q("mn",null,"1.7")]),Q("mtd",null,[Q("mn",null,"1.5")]),Q("mtd",null,[Q("mn",null,"1.5")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.6")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.5")]),Q("mtd",null,[Q("mn",null,"0.2")]),Q("mtd",null,[Q("mn",null,"0.4")])]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.1")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.6")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.2")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.8")]),Q("mtd",null,[Q("mn",null,"1.6")]),Q("mtd",null,[Q("mn",null,"1.2")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.4")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.1")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"1.4")]),Q("mtd",null,[Q("mn",null,"0.9")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.9")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.1")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"2.0")]),Q("mtd",null,[Q("mn",null,"0.9")]),Q("mtd",null,[Q("mn",null,"1.5")]),Q("mtd",null,[Q("mn",null,"0.7")])]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"2.0")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.1")]),Q("mtd",null,[Q("mn",null,"3.1")]),Q("mtd",null,[Q("mn",null,"2.0")]),Q("mtd",null,[Q("mn",null,"1.8")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"2.7")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.9")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.3")])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"1.5")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"0.2")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"2.3")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.9")]),Q("mtd",null,[Q("mo",null,"−"),Q("mn",null,"1.0")]),Q("mtd",null,[Q("mn",null,"2.3")]),Q("mtd",null,[Q("mn",null,"0.3")]),Q("mtd",null,[Q("mn",null,"1.1")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])])])])])])],-1))]),T[30]||(T[30]=Q("p",null,"可以看到,数据经过DCT变化后,被明显分成了直流分量和交流分量两部分,为后面的进一步压缩起到了充分的铺垫作用,可以说是整个JPEG中最重要的一步,后面我们会介绍数据量化。",-1))])}const _=d(M,[["render",F],["__file","JPEG002.html.vue"]]),J=JSON.parse('{"path":"/blog/2025/02/JPEG002.html","title":"JPEG算法解密(二)","lang":"zh-CN","frontmatter":{"title":"JPEG算法解密(二)","tags":"压缩 图像 程序 算法"},"headers":[{"level":3,"title":"步骤三:离散余弦变换","slug":"步骤三-离散余弦变换","link":"#步骤三-离散余弦变换","children":[]}],"git":{},"filePathRelative":"blog/2025/02/JPEG002.md"}');export{_ as comp,J as data};