2 lines
24 KiB
JavaScript
2 lines
24 KiB
JavaScript
import{_ as x,c as a,a as c,b as m,d as s,o as j}from"./app-cMmQV7Pr.js";const n="/images/2014/08/Lenna.png",i="/images/2014/08/jpeg_01.jpg",t="/images/2014/08/RGB_YCBCR.png",e="/images/2014/08/jpeg_14.jpg",u="/images/2014/08/jpeg_15.jpg",r="/images/2014/08/jpeg_16.png",p="/images/2014/08/jpeg_17.png",o="/images/2014/08/jpeg_18.png",d={};function g(h,l){return j(),a("div",null,l[0]||(l[0]=[c('<h1 id="jpeg算法解密-一" tabindex="-1"><a class="header-anchor" href="#jpeg算法解密-一"><span>JPEG算法解密(一)</span></a></h1><p>图片压缩有多重要,可能很多人可能并没有一个直观上的认识,举个例子,一张800X800大小的普通图片,如果未经压缩,大概在1.7MB左右,这个体积如果存放文本文件的话足够保存一部92万字的鸿篇巨著《红楼梦》,现如今互联网上绝大部分图片都使用了JPEG压缩技术,也就是大家使用的jpg文件,通常JPEG文件相对于原始图像,能够得到1/8的压缩比,如此高的压缩率是如何做到的呢?<br> JPEG能够获得如此高的压缩比是因为使用了有损压缩技术,所谓有损压缩,就是把原始数据中不重要的部分去掉,以便可以用更小的体积保存,这个原理其实很常见,比如485194.200000000001这个数,如果我们用485194.2来保存,就是一种“有损”的保存方法,因为小数点后面的那个“0.000000000001”属于不重要的部分,所以可以被忽略掉。JPEG整个压缩过程基本上也是遵循这个步骤:</p><ol><li>把数据分为“重要部分”和“不重要部分”</li><li>滤掉不重要的部分</li><li>保存</li></ol><h3 id="步骤一-图像分割" tabindex="-1"><a class="header-anchor" href="#步骤一-图像分割"><span>步骤一:图像分割</span></a></h3><hr><p>JPEG算法的第一步,图像被分割成大小为8X8的小块,这些小块在整个压缩过程中都是单独被处理的。后面我们会以一张非常经典的图为例,这张图片名字叫做Lenna,据说是世界上第一张JPG图片,这张图片自从诞生之日开始,就和图像处理结下渊源,陪伴了无数理工宅男度过了的一个个不眠之夜,可谓功勋卓著,感兴趣的朋友可以在<a href="http://en.wikipedia.org/wiki/Lenna" target="_blank" rel="noopener noreferrer">这里</a>了解到这张图片的故事。</p><p align="center" width="100%"><img src="'+n+'" width="40%"><img src="'+i+'" width="40%"></p><h3 id="步骤二-颜色空间转换rgb-ycbcr" tabindex="-1"><a class="header-anchor" href="#步骤二-颜色空间转换rgb-ycbcr"><span>步骤二:颜色空间转换RGB->YCbCr</span></a></h3><hr><p>所谓“颜色空间”,是指表达颜色的数学模型,比如我们常见的“RGB”模型,就是把颜色分解成红绿蓝三种分量,这样一张图片就可以分解成三张灰度图,数学表达上,每一个8X8的图案,可以表达成三个8X8的矩阵,其中的数值的范围一般在[0,255]之间。</p><figure><img src="'+t+'" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure>',11),m("p",null,[s("不同的颜色模型各有不同的应用场景,例如RGB模型适合于像显示器这样的自发光图案,而在印刷行业,使用油墨打印,图案的颜色是通过在反射光线时产生的,通常使用CMYK模型,而在JPEG压缩算法中,需要把图案转换成为YCbCr模型,这里的Y表示亮度(Luminance),Cb和Cr分别表示绿色和红色的“色差值”。"),m("br"),s(" “色差”这个概念起源于电视行业,最早的电视都是黑白的,那时候传输电视信号只需要传输亮度信号,也就是Y信号即可,彩色电视出现之后,人们在Y信号之外增加了两条色差信号以传输颜色信息,这么做的目的是为了兼容黑白电视机,因为黑白电视只需要处理信号中的Y信号即可。"),m("br"),s(" 根据三基色原理,人们发现红绿蓝三种颜色所贡献的亮度是不同的,绿色的“亮度”最大,蓝色最暗,设红色所贡献的亮度的份额为"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"K"),m("mi",null,"R")])])])]),s(",蓝色贡献的份额为"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"K"),m("mi",null,"B")])])])]),s(",那么亮度为")],-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D44C TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msub",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c22C5"})]),m("mjx-mi",{class:"mjx-i",space:"3"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c31"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-msub",{space:"3"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-msub",{space:"3"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c22C5"})]),m("mjx-mi",{class:"mjx-i",space:"3"},[m("mjx-c",{class:"mjx-c1D43A TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-msub",{space:"3"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c22C5"})]),m("mjx-mi",{class:"mjx-i",space:"3"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("mi",null,"Y"),m("mo",null,"="),m("msub",null,[m("mi",null,"K"),m("mi",null,"R")]),m("mo",null,"⋅"),m("mi",null,"R"),m("mo",null,"+"),m("mo",{stretchy:"false"},"("),m("mn",null,"1"),m("mo",null,"−"),m("msub",null,[m("mi",null,"K"),m("mi",null,"R")]),m("mo",null,"−"),m("msub",null,[m("mi",null,"K"),m("mi",null,"B")]),m("mo",{stretchy:"false"},")"),m("mo",null,"⋅"),m("mi",null,"G"),m("mo",null,"+"),m("msub",null,[m("mi",null,"K"),m("mi",null,"B")]),m("mo",null,"⋅"),m("mi",null,"B")])])],-1),m("p",null,[s("根据经验,"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mn",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c32"}),m("mjx-c",{class:"mjx-c39"}),m("mjx-c",{class:"mjx-c39"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"K"),m("mi",null,"R")]),m("mo",null,"="),m("mn",null,"0.299")])])]),s(","),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mn",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c34"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"K"),m("mi",null,"B")]),m("mo",null,"="),m("mn",null,"0.114")])])]),s(",那么")],-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D44C TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mn",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c32"}),m("mjx-c",{class:"mjx-c39"}),m("mjx-c",{class:"mjx-c39"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c35"}),m("mjx-c",{class:"mjx-c38"}),m("mjx-c",{class:"mjx-c37"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43A TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c34"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("mi",null,"Y"),m("mo",null,"="),m("mn",null,"0.299"),m("mi",null,"R"),m("mo",null,"+"),m("mn",null,"0.587"),m("mi",null,"G"),m("mo",null,"+"),m("mn",null,"0.114"),m("mi",null,"B")])])],-1),m("p",null,"蓝色和红色的色差的定义如下",-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D436 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.045em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D44F TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mstyle",{size:"lg",space:"4"},[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mfrac",null,[m("mjx-frac",{type:"d"},[m("mjx-num",null,[m("mjx-nstrut",{type:"d"}),m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c31"})])]),m("mjx-dbox",null,[m("mjx-dtable",null,[m("mjx-line",{type:"d"}),m("mjx-row",null,[m("mjx-den",null,[m("mjx-dstrut",{type:"d"}),m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c32"})])])])])])])]),m("mjx-mfrac",null,[m("mjx-frac",{type:"d"},[m("mjx-num",null,[m("mjx-nstrut",{type:"d"}),m("mjx-mrow",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-mi",{class:"mjx-i",space:"3"},[m("mjx-c",{class:"mjx-c1D44C TEX-I"})])])]),m("mjx-dbox",null,[m("mjx-dtable",null,[m("mjx-line",{type:"d"}),m("mjx-row",null,[m("mjx-den",null,[m("mjx-dstrut",{type:"d"}),m("mjx-mrow",null,[m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c31"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-msub",{space:"3"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])])])])])])])])])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("msub",null,[m("mi",null,"C"),m("mi",null,"b")]),m("mo",null,"="),m("mstyle",{mathsize:"1.2em"},[m("mrow",{"data-mjx-texclass":"ORD"},[m("mfrac",null,[m("mn",null,"1"),m("mn",null,"2")]),m("mfrac",null,[m("mrow",null,[m("mi",null,"B"),m("mo",null,"−"),m("mi",null,"Y")]),m("mrow",null,[m("mn",null,"1"),m("mo",null,"−"),m("msub",null,[m("mi",null,"K"),m("mi",null,"B")])])])])])])])],-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D436 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.045em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D45F TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mstyle",{size:"lg",space:"4"},[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mfrac",null,[m("mjx-frac",{type:"d"},[m("mjx-num",null,[m("mjx-nstrut",{type:"d"}),m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c31"})])]),m("mjx-dbox",null,[m("mjx-dtable",null,[m("mjx-line",{type:"d"}),m("mjx-row",null,[m("mjx-den",null,[m("mjx-dstrut",{type:"d"}),m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c32"})])])])])])])]),m("mjx-mfrac",null,[m("mjx-frac",{type:"d"},[m("mjx-num",null,[m("mjx-nstrut",{type:"d"}),m("mjx-mrow",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-mi",{class:"mjx-i",space:"3"},[m("mjx-c",{class:"mjx-c1D44C TEX-I"})])])]),m("mjx-dbox",null,[m("mjx-dtable",null,[m("mjx-line",{type:"d"}),m("mjx-row",null,[m("mjx-den",null,[m("mjx-dstrut",{type:"d"}),m("mjx-mrow",null,[m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c31"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-msub",{space:"3"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43E TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.04em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})])])])])])])])])])])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("msub",null,[m("mi",null,"C"),m("mi",null,"r")]),m("mo",null,"="),m("mstyle",{mathsize:"1.2em"},[m("mrow",{"data-mjx-texclass":"ORD"},[m("mfrac",null,[m("mn",null,"1"),m("mn",null,"2")]),m("mfrac",null,[m("mrow",null,[m("mi",null,"R"),m("mo",null,"−"),m("mi",null,"Y")]),m("mrow",null,[m("mn",null,"1"),m("mo",null,"−"),m("msub",null,[m("mi",null,"K"),m("mi",null,"R")])])])])])])])],-1),m("p",null,"最终可以得到RGB转换为YCbCr的数学公式为",-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mtable",{style:{"min-width":"14.811em"}},[m("mjx-table",null,[m("mjx-itable",null,[m("mjx-mtr",null,[m("mjx-mtd",{style:{"text-align":"right","padding-right":"0","padding-bottom":"0.15em"}},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D44C TEX-I"})]),m("mjx-tstrut")]),m("mjx-mtd",{style:{"text-align":"left","padding-left":"0","padding-bottom":"0.15em"}},[m("mjx-mi",{class:"mjx-n"}),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mn",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c32"}),m("mjx-c",{class:"mjx-c39"}),m("mjx-c",{class:"mjx-c39"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c35"}),m("mjx-c",{class:"mjx-c38"}),m("mjx-c",{class:"mjx-c37"}),m("mjx-c",{class:"mjx-c30"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43A TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c34"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})]),m("mjx-tstrut")])]),m("mjx-mtr",null,[m("mjx-mtd",{style:{"text-align":"right","padding-right":"0","padding-top":"0.15em","padding-bottom":"0.15em"}},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D436 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.045em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D44F TEX-I"})])])]),m("mjx-tstrut")]),m("mjx-mtd",{style:{"text-align":"left","padding-left":"0","padding-top":"0.15em","padding-bottom":"0.15em"}},[m("mjx-mi",{class:"mjx-n"}),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-mn",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c36"}),m("mjx-c",{class:"mjx-c38"}),m("mjx-c",{class:"mjx-c37"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c33"}),m("mjx-c",{class:"mjx-c33"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c33"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43A TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2B"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c35"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})]),m("mjx-tstrut")])]),m("mjx-mtr",null,[m("mjx-mtd",{style:{"text-align":"right","padding-right":"0","padding-top":"0.15em"}},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D436 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.045em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D45F TEX-I"})])])]),m("mjx-tstrut")]),m("mjx-mtd",{style:{"text-align":"left","padding-left":"0","padding-top":"0.15em"}},[m("mjx-mi",{class:"mjx-n"}),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mn",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c35"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D445 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c34"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c38"}),m("mjx-c",{class:"mjx-c37"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D43A TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c2212"})]),m("mjx-mn",{class:"mjx-n",space:"3"},[m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c2E"}),m("mjx-c",{class:"mjx-c30"}),m("mjx-c",{class:"mjx-c38"}),m("mjx-c",{class:"mjx-c31"}),m("mjx-c",{class:"mjx-c33"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})]),m("mjx-tstrut")])])])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[m("mtr",null,[m("mtd",null,[m("mi",null,"Y")]),m("mtd",null,[m("mi"),m("mo",null,"="),m("mn",null,"0.299"),m("mi",null,"R"),m("mo",null,"+"),m("mn",null,"0.5870"),m("mi",null,"G"),m("mo",null,"+"),m("mn",null,"0.114"),m("mi",null,"B")])]),m("mtr",null,[m("mtd",null,[m("msub",null,[m("mi",null,"C"),m("mi",null,"b")])]),m("mtd",null,[m("mi"),m("mo",null,"="),m("mo",null,"−"),m("mn",null,"0.1687"),m("mi",null,"R"),m("mo",null,"−"),m("mn",null,"0.3313"),m("mi",null,"G"),m("mo",null,"+"),m("mn",null,"0.5"),m("mi",null,"B")])]),m("mtr",null,[m("mtd",null,[m("msub",null,[m("mi",null,"C"),m("mi",null,"r")])]),m("mtd",null,[m("mi"),m("mo",null,"="),m("mn",null,"0.5"),m("mi",null,"R"),m("mo",null,"−"),m("mn",null,"0.4187"),m("mi",null,"G"),m("mo",null,"−"),m("mn",null,"0.0813"),m("mi",null,"B")])])])])])],-1),c('<p>YCbCr模型广泛应用在图片和视频的压缩传输中,比如你可以留意一下电视或者DVD后面的接口,就可以发现色差接口。</p><figure><img src="'+e+'" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>这是有道理的,还记得我们在文章开始时提到的有损压缩的基本原理吗?有损压缩首先要做的事情就是“把重要的信息和不重要的信息分开”,YCbCr恰好能做到这一点。对于人眼来说,图像中明暗的变化更容易被感知到,这是由于人眼的构造引起的。视网膜上有两种感光细胞,能够感知亮度变化的视杆细胞,以及能够感知颜色的视锥细胞,由于视杆细胞在数量上远大于视锥细胞,所以我们更容易感知到明暗细节。比如说下面这张图</p><div align="center"><table class="invisibletable"><tbody><tr><td colspan="5"><figure><img src="'+u+'" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure></td></tr><tr><td><figure style="margin:5px;"><img src="'+r+'"><figcaption>Y</figcaption></figure></td><td></td><td><figure style="margin:5px;"><img src="'+p+'"><figcaption>Cb</figcaption></figure></td><td></td><td><figure style="margin:5px;"><img src="'+o+'"><figcaption>Cr</figcaption></figure></td></tr></tbody></table></div> 可以明显看到,亮度图的细节更加丰富。JPEG把图像转换为YCbCr之后,就可以针对数据得重要程度的不同做不同的处理。这就是为什么JPEG使用这种颜色空间的原因。 ',5)]))}const E=x(d,[["render",g],["__file","JPEG001.html.vue"]]),y=JSON.parse('{"path":"/blog/2025/02/JPEG001.html","title":"JPEG算法解密(一)","lang":"zh-CN","frontmatter":{"title":"JPEG算法解密(一)","tags":"压缩 图像 程序 算法","next":{"text":"JPEG算法解密(二)","link":"JPEG002.md"}},"headers":[{"level":3,"title":"步骤一:图像分割","slug":"步骤一-图像分割","link":"#步骤一-图像分割","children":[]},{"level":3,"title":"步骤二:颜色空间转换RGB->YCbCr","slug":"步骤二-颜色空间转换rgb-ycbcr","link":"#步骤二-颜色空间转换rgb-ycbcr","children":[]}],"git":{"contributors":[{"name":"thejinchao","username":"thejinchao","email":"thejinchao@gmail.com","commits":3,"url":"https://github.com/thejinchao"}]},"filePathRelative":"blog/2025/02/JPEG001.md"}');export{E as comp,y as data};
|