具体实施方式
描述了用于压缩、解压和显示连拍模式图像的技术和工具。
此处描述的各示例可组合或单独使用。此处描述的技术可以用于具有软件、硬件或软件和硬件的组合以处理数字静止图像的计算机系统中,或者用于不具体局限于处理数字静止图像的某种其他系统中。
I.数字成像-概览
A.示例性数字成像工作流
如图1中所示,示例性数字成像工作流100包括图像捕捉110、图像文件生成120、图像编辑130、以及图像渲染140。在图像捕捉110中,一个或多个图像被图像捕捉设备(例如,数字相机、具有数字相机功能的智能电话等)捕捉。在图像文件生成120中,捕捉的图像被保存在图像文件中。例如,图像数据(例如,像素数据)(有可能与诸如图像元数据等其他信息一起)被以压缩的或未压缩的格式存储在存储在文件中。在图像编辑130中,图像可被编辑。例如,图像编辑器可以用图像文件作为输入并且对该图像文件中的图像数据执行编辑功能。编辑后的文件版本可通过盖写旧的文件版本来保存,或者通过将编辑后的版本保存为新文件来保存。在图像渲染140中,图像信息被转换成另一种形式以用于显示。例如,被捕捉然后根据JPEG图像压缩格式压缩过的图像可被解压并渲染以用于显示。
尽管示例性工作流100示出图像捕捉110后面跟着图像生成120和图像渲染140,然而数字成像系统可以捕捉图像而不渲染所述图像,诸如当图像被生成以进行存储或用于进一步处理但是不被显示时。数字成像系统还可以渲染图像而不捕捉图像或生成图像文件,诸如当运行图像编辑应用的设备从另一来源获取预先存在的图像文件时(例如,经由通信介质)。数字成像工作流100中的不同阶段可以由不同的设备或软件应用执行。
一般而言,此处描述的数字图像可以由能够捕捉数字图像的任何设备捕捉(例如,数字静止图像相机、数字视频相机、扫描仪、或具有图像捕捉能力的多功能设备,诸如相机电话)并可以被存储在能够存储数字图像的任何介质上(例如,易失性存储器或非易失性存储器,诸如光盘或闪存)。
B.示例性文件格式
此处描述的数字图像可以是彩色、灰度或其他类型的图像,并且可以以用于原始的、未压缩的图像数据或压缩的图像数据的各种文件格式表示(例如,GIF、PNG、BMP、TIFF、TIFF Float32、JPEG、JPEG XR、和/或其他格式)。例如,所描述的技术和工具能够处理诸如JPEG等标准动态范围(SDR)格式的SDR图像,或者高动态范围表格式的高动态范围(HDR)图像。
一些图像格式是由国际标准指定的。例如,JPEG标准阐明了用于解码以JPEG格式编码的图像的解码器的要求。兼容JPEG的编码器和解码器(“编码解码器”)通常能够以良好的压缩效率提供高质量图像。
可交换图像文件(“EXIF”)格式指定了图像文件的结构。EXIF文件中的图像数据可以是压缩的(例如,在JPEG格式中)。或者,EXIF文件中的图像数据可以是未压缩的(例如,在TIFF格式中)。编写EXIF文件的设备和软件可被称为EXIF编写器。对EXIF文件编辑、删除或添加新数据的设备或软件可被称为EXIF编辑器。读取EXIF文件的设备和软件可被称为EXIF读取器。此处描述的连拍模式图像压缩技术可以结合EXIF编写器、EXIF编辑器、EXIF读取器或某个其他工具来实现。
术语“标签(tag)”指的是可被EXIF编写器用来记录有关EXIF文件中的图像的辅助数据的数据字段。这种有关图像的辅助数据可被称为元数据。元数据是能够与定义图像本身的图像数据(例如,像素值)区分的。如此处所描述的,元数据可以与图像数据组合使用以执行不同类型的图像处理,诸如连拍模式图像压缩。
许多EXIF标签是与特定图像属性(诸如快门速度、焦距等等)相关联的。其他标签不与特定图像属性相关联并且可以被用来向EXIF文件添加更加多样的元数据。例如,MakerNote是给予制造商标签的标签名,该标签名可被设备制造商用来添加专有信息,或用于其他用途。标签通常由标签名和数值标识。例如,在EXIF标准的一个版本中,MakerNote的相应数字标签ID是37500。有关EXIF的更多信息可以在相机和成像产品协会在2010年4月26日建立的“用于数字静止相机的可交换图像文件格式:Exif版本2.3”中找到。
II.连拍模式图像压缩
连拍模式(burst mode)是许多数字相机的一个特征,可用于在一个短时间段内捕捉(例如,用单次按钮按下)一系列静止图像。
在典型的连拍模式中,用单次按钮按下捕捉一系列若干个图像的能力是以对系统资源(例如,存储容量)的更高的负担为代价的,这种负担是由连拍图像的乘数效应导致的。随着捕捉更高分辨率的图像(例如,5百万像素图像、8百万像素图像等)变得常见,连拍模式图像对存储容量的乘数效应可具有更大的影响。而且,这种对存储容量的消耗可以在不同位置重复。例如,诸如具有数字相机功能的智能电话等设备上的本地存储(例如,存储器卡、闪存存储器等)可被消耗。随后,远程存储容量可被消耗,诸如当本地捕捉的图像被上传到远程服务器(例如,在云计算布置中)、同步到个人计算机、等等时。
此处描述的技术涉及经修改的压缩/解压以及使用连拍模式图像中的元数据来减少连拍模式图像所消耗的数据的量,以及其他潜在好处。在短时间段内以连拍模式捕捉的一系列图像可被称为连拍模式图像系列,或连拍系列。通常,连拍模式图像系列中的每个图像是在不同时刻处捕捉的,所述时刻可以由与该图像相关联时间戳指示。
对图像文件添加或编辑元数据以建立连拍模式图像系列中的各图像之间的关系可被称为链接连拍模式图像。与已添加了这样的元数据的图像文件相对应的连拍模式图像可被称为经链接的连拍模式图像。
一系列经链接的连拍模式图像可包括增量图像。在此处描述的示例中,增量图像表示连拍系列中在不同时刻处捕捉的两个连拍图像的图像数据(例如,像素数据)之间的时间上的差异。例如,第一增量图像可表示第一连拍图像和该系列中紧随其后的第二连拍图像之间的差异。或者,增量图像可表示非连续的连拍图像之间的差异。
一系列经链接的连拍模式图像可包括完全图像。与增量图像不同,完全图像不表示两个连拍图像之间的差异。完全图像的一个示例是根图像。在此处描述的示例中,在图像元数据中标识出经链接的连拍模式系列的根图像(例如,用全局唯一标识符(GUID))。对于特定的经链接的连拍模式系列的根图像的标识帮助将该系列与具有不同根图像的另一系列区分开。在此处描述的示例中,经链接的连拍模式系列具有单一根图像并可以包括一个或多个其他完全图像和一个或多个增量图像。完全图像的另一示例是连拍模式系列中相对于另一图像的差异超出阈值的图像。或者,经链接的连拍模式系列可具有超过一个根图像或没有根图像(例如,其中链接元数据不标识根数据而是用某种其他方式链接连拍模式系列中的图像,诸如用该系列作为整体的唯一标识符)。
因为增量图像通常比完全图像消耗更少的存储,所以经链接的连拍模式图像可以减少对存储资源的需要。例如,增量图像的差异信息被计算、压缩和存储。这样的增量图像可以通过解压该差异信息并将该差异信息与来自根图像文件的图像数据相组合来重构。差异信息、链接元数据、以及图像数据通常比两个连拍图像的图像数据使用更少的存储空间,从而这两个连拍图像的总大小可被显著减少。
所描述的技术还能够提供其他好处。例如,在提供设备上的图像文件的库视图的用户界面中,一系列经链接的连拍模式图像可以在该用户界面中用根图像表示(或根图像的缩略图版本),而该连拍系列中的其他图像保持隐藏,从而为独立图像、不同连拍系列的图像、或其他信息留下更多的屏幕区域。通过与根图像交互(例如,经由触摸屏上的姿势),用户可访问链接到该根图像的增量图像。例如,轻击根图像的缩略图版本可以导致链接到该根图像的增量图像的缩略图版本被显示,或可以导致连拍系列中的连续的重构图像的显示。
完全图像文件(例如,根图像文件)中的图像数据可被压缩(例如,根据诸如JPEG等标准化的压缩格式)。这种压缩可以在图像捕捉之后立即发生,或者可以在某个其他时间发生。例如,图像数据可被捕捉并且然后当其被第一次存储在根图像文件中时被压缩。作为另一示例,图像文件可被捕捉并存储在未压缩的图像文件中,然后该未压缩的图像文件可在随后根据诸如JPEG等压缩格式被压缩。元数据可压缩之前、压缩之后、或在压缩的中间阶段(例如,在各压缩阶段之间)被添加到图像文件以链接连拍图像。
在压缩之前、压缩之后或者在压缩的中间阶段(例如,在各压缩阶段之间)也可以导出增量图像文件的差异信息。例如,在包括正向频率变换、量化和熵编码的、针对根图像的压缩过程期间,根图像和非根图像之间的差异可在根图像数据和非根图像数据的量化之后、但在熵编码之前计算。差异信息也可以被压缩(例如,使用熵编码或另一编码模式)。
A.一般化的经链接的连拍模式图像系统
图2是实现此处描述的一个或多个经链接的连拍模式图像技术的示例性系统200的框图。在该示例中,计算设备205实现经链接的连拍模式图像工具220,该工具220接收图像输入210。图像输入210可包括由计算设备205捕捉的图像数据。例如,计算设备205可以是具有板载数字相机(未示出)的智能电话,该智能电话能被用于通过用该数字相机捕捉图像数据来获取图像输入210。或者,图像输入210可以以某种其他方式获取。例如,计算设备205可以以图像文件(例如,EXIF文件)的形式获取图像数据,其中该图像数据已由某个其他设备捕捉。一般而言,图像输入210可以是单一图像或者是一组图像并且可包括诸如与该图像相关的元数据或用户偏好数据(未示出)等其他信息。如果存在于图像输入210中,则元数据和用户偏好数据可以被包含在图像文件(例如,EXIF文件)内或分开提供。
经链接的连拍模式图像工具220链接图像输入210中的文件。例如,经链接的连拍模式图像工具220创建元数据字段或将信息添加到图像文件(例如,EXIF文件)中的现有元数据字段以链接连拍模式图像。与普通连拍模式图像相比,经链接的连拍模式图像文件可减少对存储容量的要求,同时仍旧允许连拍模式图像的轻松重构和显示(例如,在显示器240上)。经链接的连拍模式图像文件可被存储在存储230中。此处更详细地描述经链接的连拍模式图像和经链接的连拍模式图像文件。
在实际操作中,此处示出的诸如系统200的系统可以更复杂、具有附加功能、系统组件之间的关系更复杂等。例如,系统200可包括一个或多个压缩图像数据的编码器,从而输出压缩的数字图像信息的比特流。由该编码器执行的确切操作可以取决于压缩格式而变化。例如,编码器可根据有损压缩格式(诸如JPEG)或无损压缩格式(诸如TIFF)来压缩图像信息,并且压缩后的图像信息可被存储在EXIF文件中。在有损压缩中,原始图像数据中的一些数据丢失。因此,在有损压缩之前,对原始的、未压缩版本的图像(或者使用无损压缩的版本)进行存档可以是有用的。
系统200还可包括一个或多个解码器来解压压缩后的图像数据。由该解码器执行的确切操作可以取决于压缩格式而变化。例如,兼容JPEG的解码器可以解压根据JPEG标准压缩并存储在EXIF文件中的图像信息。
作为另一示例,系统200可包括预处理器,所述预处理器使用低通过滤器或其他过滤器来平滑输入的数字图像以便选择性地除去高频分量。或者,该预处理器执行其他预处理任务。系统200还可包括后处理器(post-processor),所述后处理器对解压后的图像数据执行后处理操作。例如,该后处理器可以执行专用于减少图像伪像(诸如块伪像、带伪像、环伪像或来自去镶嵌操作的伪像)的任务。预处理操作还可包括图像大小调整、曝光或动态范围控制、色温控制以及色彩增强。预处理操作和后处理操作可以以不同方式并以不同组合执行,取决于实现和/或用户偏好。
系统200内的各模块之间所示的关系指示了该系统中的一般信息流;为简明起见,未示出其它关系。取决于所需的实现和处理类型,该系统的模块可被添加、省略、分成多个模块、与其他模块组合、和/或用相似的模块来替代。一般而言,此处描述的技术通用于不同操作系统或硬件,并且可在任何类型的环境中应用以利用所描述的特征。
B.用于链接和重构连拍模式图像的示例技术
图3示出了用于链接连拍模式图像的示例性技术300,其中强调了在链接增量图像时执行的动作。诸如图2中示出的系统200之类的系统或其他系统执行技术300。
在310,系统获取连拍模式系列中的多个图像的图像数据。例如,执行技术300的、带数字相机功能的智能电话可以在以数字相机模式操作时捕捉图像数据。所获取的图像数据可被压缩。为了开始压缩图像数据的过程(例如,根据JPEG压缩标准),该系统可对该图像数据执行正向频率变换(例如,离散余弦变换)以生成该图像的变换系数,然后量化该变换系数。作为另一示例,该系统可从预先存在的图像文件获取图像数据(例如,从本地设备或经由网络从位于远程地点的设备)。
该系统可存储根图像元数据和表示作为根图像文件的第一图像的图像数据的信息。该根图像文件可以是EXIF文件。该根图像元数据可包括图像元数据链接器字段。该图像元数据链接器字段可以是与制造商标签(例如,MakerNote)或EXIF文件中的某个其他标签相关联的字段。表示第一图像的图像数据的信息可以根据JPEG标准被压缩并存储在EXIF文件中。或者,该根图像文件可以是包含或可被编辑以包含用于链接连拍模式图像的元数据的某种其他类型的文件。
在320,该系统计算该连拍模式系列中的该第一图像和第二图像的图像数据之间的差异。例如,该系统计算在第一时刻处拍摄的第一图像的图像数据和在时间上晚于该第一图像的第二图像的图像数据之间的差异。或者,该第二图像在时间上早于该第一图像。在一种情形中,该第一图像可以是在连拍模式系列中相对于连拍模式系列中的其他图像在时间上最早的图像(例如,在数字相机设备在连拍模式时快门按钮被按下之后捕捉的第一个图像)。或者,该第一图像在该连拍模式系列中在时间上较晚。该图像数据(例如,像素数据)限定图像本身,并且不包括图像元数据。
图像数据之间的差异可以以不同方式计算。例如,该系统可使用均方差(mean sqare difference)、差的平方和或用于确定像素值之间的差的大小的另一度量来确定像素值(例如,表示不同色彩通道的色彩值)之间的差异。或者,可以在对各自的图像数据执行正向频率变换和量化之后计算两个图像之间的差异,从而使用均方差、差的平方和或用于确定量化后的变换系数值之间的差的大小的另一度量来计算各个图像的量化后的变换系数之间的差异。在一些图像格式中,图像被布置成像素块(例如,8x8块、16x16块等)。可以以逐个像素为基础、以逐个块为基础或以某种其他基础计算并度量差异。作为另一实例,该系统可搜索匹配的像素值或匹配的像素块并确定对图像中的运动进行建模的运动向量。差异计算的细节,诸如构成用于检测匹配的匹配和搜索模式的标准可以取决于实现而变化。例如,该系统可搜索附近像素位置处的匹配,然后逐渐扩展搜索区域(诸如以逐渐扩展的螺旋图案)来匹配(例如,在像素值的指定范围内)连拍图像中的像素或像素块。
针对图像的差异度量可以与阈值相比较,且该图像可取决于该差异度量与该阈值相比如何而被不同地处理。例如,如果该差异度量小于阈值则该系统可将图像分类为增量图像,或者如果该差异度量超出该阈值则该系统可将图像分类为完全图像。
取决于用于不同度量的度量,可使用不同种类的阈值。例如,该阈值可以是均方差、差的平方之和或另一度量的预定义的值。或者,该阈值值可以是依赖于图像的(例如,取决于将该图像作为完全图像压缩的比特率)。或者,该阈值可以是不匹配的像素或像素块的数目。对像素值是否匹配的判定可以基于不同的标准。例如,该系统可查找各像素值之间的精确匹配,或者查找指定容差内的匹配(例如,在像素值范围内)。作为另一示例,该系统可查找像素块中的所有像素值之间的精确匹配,或者查找像素块中的像素值的某个百分比(例如,50%)之间的匹配。该系统还可以将图像的增量编码的总比特率与图像的完全编码的比特率相比较,然后选择哪种编码导致最低的比特率。
在330,该系统将增量图像元数据和表示差异的信息存储为增量图像文件。一组一个或多个图像元数据链接器字段(例如,在图像元数据中)将第二图像链接到第一图像以便于基于表示差异的信息和第一图像的图像数据而对第二图像进行重构。该图像元数据链接器字段可包括标识(例如,用全局唯一标识符(GUID))根图像的根图像标识符字段、以及包括表示第二图像相对于第一图像在连拍模式图像系列中的索引的索引值的图像索引字段。表示该差异的信息可以是压缩的或未压缩的。该增量图像文件可以是EXIF文件。该图像元数据链接器字段可以是与制造商标签(例如,MakerNote)或EXIF文件中的某个其他标签相关联的字段。或者,该增量图像文件可以是包含或可被编辑以包含用于链接连拍模式图像的元数据的某种其他类型的文件。
根图像文件可包括嵌入的数据(例如,表示该差异的信息)。嵌入的数据可便于对第二图像进行重构而不参考另一图像文件中的数据。嵌入的数据可能是有用的,例如,当期望在同一文件中具有重构增量图像的所有必需的图像数据时(例如,其中来自另一图像的图像数据在重构时不可用或可能不可用)。
对于连拍模式系列中的其他增量图像,重复图3中示出的计算320和存储330动作。因此,例如,该系统可分别对连拍模式系列中的其他图像对差异的计算、差异度量的计算、与阈值的比较、以及分类进行重复。如图3中示出的动作可对不同图像并行执行。例如,该系统存储该第二图像的增量图像元数据和差异信息,同时计算该第二图像和该连拍模式系列中的第三图像之间的差异,并且同时获取该连拍模式系列中的第四图像的图像数据。
该第一图像可基于表示该第一图像的图像数据的信息(例如,在该根图像文件中)而被重构。然后,该第二图像可基于该组图像元数据链接器字段、表示该第二图像的差异的信息、以及该第一图像的图像数据而被重构。例如,该系统可基于第二图像的图像元数据中的根图像标识符字段来标识根图像文件并从该根图像文件获取该第一图像的图像数据。然后该系统可重构该差异并将该差异与该第一图像的图像数据相组合来重构该第二图像。
图4示出了用于重构经链接的连拍模式图像的示例性技术400,其中强调了在重构增量图像时执行的动作。诸如图2中示出的系统200之类的系统或其他系统执行技术400。
在410,该系统获取增量图像元数据和表示与增量图像文件的差异的信息。该差异是经链接的连拍模式图像系列中的第一图像和第二图像的图像数据之间的差异。一组一个或多个图像元数据链接器字段将该第二图像链接到该第一图像以便于基于表示该差异的信息和该第一图像的图像数据而对该第二图像进行重构。
在420,该系统将表示该差异的信息与该第一图像的重构后的图像数据相组合以重构第二图像的图像数据。例如,该系统解压从增量图像文件获取的压缩后的差异信息并将其与来自根图像文件的解码后的图像数据相组合。一般而言,该系统所执行的重构技术可被调整以在压缩技术或链接技术中将差异纳入考虑。例如,如果在计算差异之前将正向频率变换和量化应用于图像数据,则该系统可在将表示该差异的信息与第一图像的重构后的图像数据相组合之后执行逆量化和逆频率变换。
对于连拍模式系列中的其他增量图像,重复图4中示出的获取410和组合420动作。因此,例如,该系统可分别对该连拍模式系列中的其他图像对差异的获取以及将差异与前一图像的图像数据的组合进行重复。如图4中示出的动作可对不同图像并行执行。
C.经链接的连拍模式图像压缩中的示例数据流
图5是示出将连拍模式图像的链接和其他数据压缩技术(例如,JPEG压缩)相组合的系统中的数据流500的流程图。诸如图2中示出的系统200之类的系统或其他系统执行图5中示出的各功能。
在图5中,该系统将分别与连拍模式图像系列中的第一、第二和第三图像相对应的图像数据510、512、514作为输入。该系统执行正向频率变换(例如,离散余弦变换)520、522、524以从图像数据510、512、514生成变换系数,并且对各个变换系数执行量化530、532、534。该系统对第一图像的量化后的变换系数执行熵编码550并且对第一图像执行元数据生成570。生成的元数据指示该第一图像是经链接的连拍模式图像系列中的根图像。该根图像充当该经链接的连拍模式系列中的其他图像的参考。该系统可以以不同方式将特定连拍图像分类为根图像。例如,该系统可将连拍模式系列中首先捕捉的连拍图像分类为该系列的根图像。作为另一示例,该系统可将后来捕捉的连拍图像作为根图像(例如,五图像连拍系列中的第三个连拍图像)。或者,可以以某种其他方式将连拍图像分类为根图像(例如,基于用户偏好信息)。所生成的元数据和熵编码后的图像数据一起存储在根图像文件590中,根图像文件590可以例如是EXIF文件。
该系统执行差异计算540以计算第一图像和第二图像的量化后的变换系数之间的差异,并且执行第二图像和第三图像的量化后的变换系数之间差异计算542。尽管图5中未示出,然而该系统还可确定差异度量并确定(例如,基于相应的计算的差异度量和阈值之间的比较)第二图像和第三图像是增量图像而不是完全图像。该系统可对各个差异信息执行差异压缩560、562。该差异压缩可使用与根图像的图像数据的熵编码相同的熵编码,或它可以使用不同的熵编码。或者,差异压缩被省略。
该系统分别为第二和第三图像执行元数据生成572、574。为第二图像生成的元数据指示该第二图像是经链接的连拍模式图像系列中的增量图像。为第二图像生成的元数据与压缩后的差异信息一起存储在增量图像文件592中,增量图像文件592例如可以是EXIF文件。为第三图像生成的元数据指示该第三图像是经链接的连拍模式图像系列中的增量图像。为第三图像生成的元数据与压缩后的差异信息一起存储在增量图像文件594中,增量图像文件594例如可以是EXIF文件。诸如根图像的缩略图版本等其他信息也可被存储在增量图像文件中。在增量图像文件中存储根图像的缩略图版本对于在一些图像查看器中显示可以是有用的,从而可以很容易地示出该增量图像的近似。
图5示出对连拍模式系列中的三个图像的压缩。或者,系统压缩连拍模式系列中的更少的图像(例如,2个)或更多的图像。而且,尽管图5示出了三个数据路径(分别针对三个图像),然而或者该数据流包括更少的路径。例如,该数据流包括用于根图像压缩的数据路径和用于增量图像压缩的数据路径,其中该差异被添加到前一图像的缓冲的图像数据。或者,该数据流包括单一数据路径,其中从增量图像的——而不从根图像的——量化的结果中选择性地减去前一图像的缓冲的量化后的图像数据。
D.经链接的连拍模式图像解压中的示例数据流
图6是示例性的经链接的连拍模式图像解压数据流600的流程图。参考图6描述的技术可用于例如解压根据图5中示出的压缩数据流500压缩的连拍模式图像。诸如图2中示出的系统200之类的系统或其他系统执行图6中示出的各功能。
在图6中,系统对来自与第一连拍图像相对应的根图像文件690的元数据执行元数据分析670。该根图像文件例如可以是EXIF文件。该元数据指示该第一连拍图像是经链接的连拍模式图像系列中的根图像。该根图像充当该经链接的连拍模式系列中的其他图像的参考。该系统对来自根图像文件690的编码后的图像数据执行熵解码650。
该系统分别对来自第二和第三连拍图像的增量图像文件692、694的元数据执行元数据分析672、674。增量图像文件692、694例如可以是EXIF文件。来自增量图像文件692、694的元数据指示第二和第三图像分别是经链接的连拍模式图像系列中的增量图像。例如,该元数据包括该经链接的连拍模式图像系列中的根图像的标识符以及各个增量图像的索引。下面更加详细地描述示例性元数据字段。
系统分别对来自增量图像文件692、694的压缩后的差异信息执行解压660、662。该差异解压可使用与根图像的图像数据的熵解码相同的熵解码,或它可以使用不同的熵解码。或者,在差异信息不被压缩时,差异信息的解压被省略。
系统将解压后的差异信息与之前重构的图像数据相组合640、642。在640,该系统将来自增量图像文件692的解压后的差异信息与来自根图像文件690的解码后的图像数据相组合以重构第二连拍图像的图像数据。在642,该系统将来自增量图像文件694的解压后的差异信息与第二连拍图像的重构后的图像数据相组合以重构第三连拍图像的图像数据。
该系统执行解量化(dequantization)630、632、634以获取解量化后的变换系数,并对各个变换系数执行逆频率变换(例如,逆DCT)620、622、624。该系统输出分别与第一、第二和第三连拍图像相对应的图像数据610、612、614。
图6示出对连拍模式系列中的三个图像的解压。或者,系统解压连拍模式系列中的更少的图像(例如,2个)或更多的图像。而且,尽管图6示出了三个数据路径(分别针对三个图像),然而或者该数据流包括更少的路径。例如,该数据流包括用于根图像解压的数据路径和用于增量图像解压的数据路径,其中该差异被添加到前一图像的缓冲的图像数据。或者,该数据流包括单一数据路径,其中前一图像的缓冲的图像数据选择性地添加到增量图像的熵解码的结果——而不添加到根图像的熵解码的结果。
E.示例性图像元数据链接器字段
本节描述能在EXIF文件中的图像元数据中使用的示例性链接器字段。术语“链接器字段”在此处是指可被用于链接连拍图像以将连拍图像标识为经链接的连拍图像的元数据字段。链接器字段可与图像文件中出现的其他元数据字段(诸如提供有关诸如快门速度、焦距等图像属性的信息的字段)区分开。
在此处描述的示例中,EXIF MakerNote标签被用于链接连拍图像。元数据可与MakerNote标签相结合以保留或建立各连拍图像之间时间上的关系。MakerNote是在EXIF标准中定义的开放式ASCII字段。使用EXIF元数据来链接图像允许链接图像而不依赖文件名,文件名有可能改变和干扰链接。
下面的表1示出了一组示例性图像元数据链接器字段,该字段可与MakerNote标签一起使用以链接连拍模式图像。或者,可以使用更多或更少的链接器字段。表1中还示出了每个字段中的数据的长度。或者,执行所描述的功能的链接器字段可占据不同的数据长度。
表1:示例性链接器字段
<CONST_GUID>是允许图像文件被标识为经链接的连拍模式图像文件的图像格式标识符字段。<CONST_GUID>可被用于例如确定要在库视图中显示哪些图像。(下面更加详细地描述了示例性库视图)
<GUID_OF_ROOT_IMAGE>是包括连拍模式图像系列的根图像的标识符的根图像标识符字段。在具有一个根图像的经链接的连拍模式图像系列中,<GUID_OF_ROOT_IMAGE>对于该系列中的每个图像文件将是相同的。<GUID_OF_ROOT_IMAGE>允许即便文件名改变也可标识该根图像。
<INDEX_THIS>是包括表示该连拍模式图像系列中给定图像的索引的索引值的图像索引字段。例如,如果当前图像是连拍系列中的根图像,则<INDEX_THIS>=0。如果当前图像在该连拍系列中的根图像之前,则<INDEX_THIS>是负的。如果当前图像在该连拍系列中的根图像之后,则<INDEX_THIS>是正的。如果当前图像是增量图像,则<INDEX_THIS>允许系统确定在当前图像被重构之前哪个或哪些其他图像要被重构。例如,如果对当前图像来说<INDEX_THIS>为1,且当前图像是增量图像,则当前图像可通过将差异信息与来自根图像(在索引0处)的图像数据相组合而重构。
除非当前图像是根图像,否则某些链接器字段将不存在。两个示例是<START_INDEX>和<END_INDEX>。<START_INDEX>是表示该连拍模式图像系列的起始索引的起始索引值。例如,如果连拍系列中的第一图像是根图像,则<START_INDEX>为0。如果该系列中的第一图像不是根图像,则<START_INDEX>是负的。<END_INDEX>是表示该连拍模式图像系列的结束索引的结束索引值。例如,如果连拍系列中的最后的图像不是根图像,则<END_INDEX>是正的。如果该系列中的最后的图像是根图像,则<END_INDEX>是0。<START_INDEX>和<END_INDEX>可被用来指示多少其他图像在连拍系列中以及根图像在该连拍系列中的时间上的位置。
<IS_FULL_IMAGE>是指示给定图像是完全图像还是增量图像的位。如果当前图像是根图像,或者如果当前图像的计算的差异度量已超出阈值,则当前图像是完全图像且<IS_FULL_IMAGE>=1。否则,当前图像是增量图像且<IS_FULL_IMAGE>=0。或者,<IS_FULL_IMAGE>可被省略。例如,如果总要求根图像为完全图像,则对根图像而言<IS_FULL_IMAGE>的值可被暗示且不需要被包括(例如,其中<INDEX_THIS>=0)。
<END_OF_SEQ>指示该文件的图像元数据链接器字段的结束。<END_OF_SEQ>可以是任何值。然而,<END_OF_SEQ>是不会在该图像元数据链接器字段中的其他地方重复的值可以是有用的,以避免在已经达到图像元数据链接器字段的末尾之前意外地仿真出<END_OF_SEQ>。
图7中示出示例性图像元数据链接器字段布局710、720、730。在布局710中,<INDEX_THIS>由值0表示,指示当前图像是根图像。<IS_FULL_IMAGE>由值1表示,指示当前图像是完全图像。<IS_FULL_IMAGE>的值之后是<START_INDEX>、<END_INDEX>和<END_OF_SEQ>。在布局720中,<INDEX_THIS>由值N表示(其中N不是0),指示当前图像不是根图像。<IS_FULL_IMAGE>由值0表示,指示当前图像是增量图像而不是完全图像。<IS_FULL_IMAGE>的值之后是<END_OF_SEQ>。
下面的表2示出了一组示例性嵌入数据链接器字段,该字段可在存在嵌入数据时与根图像中的MakerNote标签一起使用或者,可以使用更多或更少的嵌入链接器字段。表2中还示出了每个字段中的数据的长度。或者,执行所描述的功能的嵌入数据链接器字段可占据不同的数据长度。
表2:根图像的示例性嵌入数据链接器字段
嵌入数据链接器字段可被用于嵌入该系列中其他图像的数据。例如,可使用嵌入数据链接器字段将增量图像(或多个增量图像)的差异信息嵌入在根图像中。这提供了通过只访问一个图像文件来重构超过一个图像的能力。
当存在于根图像元数据中时,<EMBEDDED_INDEX>提供由嵌入数据表示的相同系列中的另一图像(例如,增量图像)的索引值,因而<EMBEDDED_INDEX>被限制为大于或等于<START_INDEX>且小于或等于<END_INDEX>,但是不等于0(表示根图像)。<SIZE_EMBEDDED>是指示嵌入数据的大小的值,而<EMBEDDED_DATA>是嵌入数据本身。<EMBEDDED_DATA>可包括例如表示根图像的图像数据和已被分类为增量图像的图像的图像数据之间的差异的压缩的或未压缩的信息。
在布局730中,<INDEX_THIS>由值0表示,指示当前图像是根图像。<IS_FULL_IMAGE>由值1表示,指示当前图像是完全图像。<IS_FULL_IMAGE>的值之后是<START_INDEX>、<END_INDEX>和嵌入数据链接器字段,之后是指示链接器字段的结束的<END_OF_SEQ>。
或者,连拍模式系列中的经链接的连拍模式图像的元数据被以另一格式存储或者被存储在不同于EXIF文件中的MakerNote标签的标签中。
F.寻找/显示经链接的连拍模式图像的示例性技术
本节描述用于在诸如系统200的系统中寻找并显示经链接的连拍模式图像的示例性技术。
例如,该系统可扫描文件目录的图像文件(例如,EXIF文件)并查找这些图像文件中的图像元数据链接器字段。该系统可显示来自其中不存在<CONST_GUID>字段的图像文件(例如,未经链接的连拍模式图像文件、不是连拍模式图像文件的图像文件等)的图像(或图像的缩略图版本)。该系统还可显示来自其中存在<CONST_GUID>字段的图像文件(例如,经链接的连拍模式图像文件)的图像(或图像的缩略图版本)。对于连拍模式图像文件,该系统可使用过滤的库视图以获取更干净的查看体验。在过滤的库视图中,该系统可显示来自其中存在<CONST_GUID>字段且<INDEX_THIS>等于0(指示图像是根图像)的图像文件的图像(或图像的缩略图版本),同时省略其中<INDEX_THIS>不等于0(指示图像不是根图像)的图像。
图8示出连拍模式图像的库视图的比较的图示。布置870是示例库视图,其中示出了非连拍图像802、804的缩略图版本以及未经链接的连拍图像810、812、814、816、818的缩略图版本。布置880是示例库视图,其中示出了经链接的连拍模式图像系列中的根图像820的缩略图版本以及未过滤的视图中增量图像822、824、826、828的缩略图版本。布置890是示例库视图,其中示出了根图像820的缩略图版本,同时经链接的连拍模式图像系列中的增量图像的缩略图版本在过滤的视图中保持隐藏。布置890包括用户界面(UI)元素830,用户界面元素830包括由边框和指示用户可以向后或向前导航到该系列中的其他图像的箭头围绕的根图像820的缩略图版本。用户界面元素830充当过滤的库视图中连拍模式图像系列的指示器。布置890给出了整洁的库视图,同时连拍模式图像的链接大大节省了存储成本。
根图像(由索引值0表示)可位于连拍模式图像系列中的不同位置处。例如,根图像可位于连拍模式图像系列中在时间上较早的图像(由负索引值表示)和在时间上较晚的图像(由正索引值表示)之间。在一种情形中,在时间上较晚的图像在用户按下以连拍模式操作的图像捕捉设备上的快门按钮之后捕捉,而在时间上较早的图像是从包含之前捕捉的图像(例如,在快门按钮的当前按下之前捕捉的图像)的一个或多个缓冲区(buffer)获取。根图像之前或之后的图像的量可以基于例如用户偏好、相机设置或应用设计考虑而变化。或者,在另一情形中,将连拍模式系列中的中间图像选择为根图像。
图9示出用于渲染一系列经链接的连拍模式图像中所选择的图像的技术900。例如,当用户在显示器上查看图像时,可执行技术900。在910,该系统渲染当前图像。例如,用户选择根图像且系统渲染所选择的根图像。在920,然后该系统确定是否选择了新图像。例如,该系统检测与UI元素(例如,图8中的UI元素830)相关联的用户输入。
在930,如果新图像已被选择,则该系统确定该选择是否导致了远离根图像的移动(例如,在连拍系列中在时间上更远离)。例如,该系统将新图像中<INDEX_THIS>的值与前一图像中<INDEX_THIS>的值相比较。新图像的<INDEX_THIS>的更大的绝对值指示该新图像在时间上更远离该根图像。新图像的<INDEX_THIS>的更小的绝对值指示该新图像在时间上更靠近该根图像。在932,如果该移动远离该根图像,则该系统确定该新图像是否是增量图像。例如,该系统检验新图像中<IS_FULL_IMAGE>的值是否为0,<IS_FULL_IMAGE>的值为0指示当前图像是增量图像。在934,如果该新图像是增量图像,则该系统将该增量图像的差异信息添加到之前重构的图像的重构后的图像数据。然后该系统渲染(936)该新图像。
如果已选择了新图像并且该选择没有导致远离该根图像的移动,则该选择导致了朝向该根图像的移动(例如,在时间上在连拍系列中更靠近该根图像)。在942,该系统确定该新图像是否为增量图像。在944,如果该新图像是增量图像,则该系统从之前重构的图像的重构后的图像数据中减去该增量图像的差异信息。然后该系统渲染(946)该新图像。
对于库视图,各种性能优化是可能的。例如,该系统可以在与其他图像文件分开的文件夹中存储所有的增量图像并创建根图像/增量图像关系的数据库(例如,使用图像的文件名或其他标识符),该数据库可被用于高效的查找和显示。
G.参数控制的示例性方法
本节描述了用压缩或解压连拍模式图像和/或渲染或显示压缩后的或解压后的连拍模式图像的系统来进行用户交互的示例性方法。该系统提供一个或多个控件来为经链接的连拍模式图像参数设置用户偏好。图10示出示例性用户界面1010。用户界面1010包括具有复选框和按钮控件的窗口1080,该复选框和按钮控件可被用来设置用于显示连拍模式图像的参数。在本示例中,提供用于选择是以已过滤的库视图还是以未过滤的库视图显示连拍模式图像的复选框。用户界面1010还可以包括用于设置与连拍模式图像有关的其他参数(诸如阈值)的用户界面元素,其中该系统可用该阈值来基于差异信息确定连拍模式图像系列中的图像将被编码为增量图像还是完全图像。
H.实验结果
进行实验来比较在对七个图像的连拍模式图像文件进行链接和不进行链接的情况下的存储利用率。每个图像具有约700kb的文件大小,在不进行链接的情况下总大小为约4900kb。两个图像是独立的、非连拍的图像,而五个图像是连拍系列中的图像。该连拍图像被链接以生成大小为约700kb的1个根图像和每个大小均为约130kb的4个增量图像,使得在进行链接的情况下7个图像的总大小为约3*700kb+4*130kb=2620kb。与根图像相比每个增量图像的分数大小为约130/700=0.19。因此在进行链接的情况下总共N个连拍图像所需的存储可以被近似为:(1+(N-1)*0.19))*<平均连拍图像大小>,而与之相比未经链接的连拍模式图像所需的存储为N*<平均完全连拍图像大小>。上面描述的文件大小(例如,完全连拍图像大小和增量图像大小)可以取决于图像分辨率、图像之间的差异度以及其他因素而不同于所描述的示例。
III.示例计算环境
图11示出了其中可实现所描述的技术的合适的计算环境1100的一般化示例。计算环境1100并非对使用范围或功能提出任何限制,因为这些技术可以在不同的通用或专用计算环境中实现。
参考图11,计算环境1100包括耦合至存储器1120的至少一个处理单元1110。在图11中,这一基本配置1130被包括在虚线内。处理单元1110执行计算机可执行指令,且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器1120可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合。存储器1120可存储实现此处描述的任意技术的软件1180。
计算环境可具有其他特征。例如,计算环境1100包括存储1140、一个或多个输入设备1150、一个或多个输出设备1160以及一个或多个通信连接1170。诸如总线、控制器或网络等互连机制(未示出)将计算环境1100的各组件互连。通常,操作系统软件(未示出)为在计算环境1100中执行的其它软件提供了操作环境,并协调计算环境1100的组件的活动。
存储1140可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、CD-ROM、CD-RW、DVD或可用于储存信息并可在计算环境1100内被访问的任何其它计算机可读介质。存储1140可存储包含用于此处描述的任意技术的指令的软件1180。
输入设备1150可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备、语音输入设备、扫描设备或可向计算环境1100提供输入的另一设备。输出设备1160可以是显示器、打印机、扬声器、CD或DVD刻录机、或从计算环境1100提供输出的另一设备。某些输入/输出设备,诸如触摸屏,可包括输入和输出功能两者。
通信连接1170允许通过通信机制到另一计算实体的通信。通信机制传达诸如计算机可执行指令、音频/视频或其他信息、或其它数据等的信息。作为示例而非限制,通信机制包括利用电、光、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。
此处的技术可在诸如程序模块中所包括的在目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可以如各实施例中所需的组合或在程序模块之间分离。用于程序模块的计算机可执行指令可以在本地或分布式计算环境中执行。
此处描述的存储动作中的任一个可通过存储在一个或多个计算机可读介质(例如,计算机可读存储介质或其他有形介质)中来实现。被描述为被存储的事物中的任一个可被存储在一个或多个计算机可读介质(例如,计算机可读存储介质或其他有形介质)中。
此处描述的各方法中的任一方法可通过一个或多个计算机可读介质(例如,计算机可读存储介质或其他有形介质)中(例如,在其上编码)的计算机可执行指令来实现。这些指令可使得计算机执行所述方法。此处描述的技术可用各种编程语言来实现。
此处描述的方法中的任一个可由存储在一个或多个计算机可读存储设备(例如,存储器、CD-ROM、CD-RW、DVD等)中的计算机可执行指令来实现。这些指令可使得计算机执行所述方法。
IV.示例实现环境
图12示出了其中可实现所描述的实施例、技术、和技艺的合适实现环境1100的一般化示例。
在示例环境1200中,由云1210提供各种类型的服务(例如,计算服务1212)。例如,云1210可包括可位于中央或是分布式的计算设备集,其向经由诸如因特网等网络连接的各种类型的用户和设备提供基于云的服务。云计算环境1200可用于以不同的方式来实现计算任务。例如,参考所述技术和工具,可对本地计算设备执行诸如处理用户输入以及呈现用户界面之类的某些任务,同时可在云中的别处执行诸如存储要在后续处理中使用的数据之类的其他任务。
在示例环境1200中,云1210向具有各种屏幕能力的连接的设备1220A-N提供服务。连接的设备1220A表示具有中型屏幕的设备。例如,连接的设备1220A可以是个人计算机,诸如台式计算机、膝上型计算机、笔记本、上网本等。连接的设备1220B表示具有小型屏幕的设备。例如,连接的设备1220B可以是移动电话、智能电话、个人数字助理、平板计算机等。连接的设备1220N表示具有大屏幕的设备。例如,连接的设备1220N可以是电视机(例如,智能电视机)或连接到电视机或投影仪屏幕的另一设备(例如,机顶盒或游戏控制台)等。
云1210可通过一个或多个服务提供者(未示出)来提供各种服务。例如,云1210可将与移动计算有关的服务提供给各个连接的设备1220A-N中的一个或多个。可针对特定的连接的设备(例如,连接的设备1220A-N)的屏幕大小、显示能力或其他功能来定制云服务。例如,可通过将屏幕大小、输入设备以及通常与移动设备相关联的通信带宽限制纳入考虑来为移动设备定制云服务。
V.示例移动设备
图13是描绘示例性移动设备1300的系统图,该移动设备包括各种可选的硬件和软件组件,在1302处概括地示出。该移动设备中的任何组件1302可与任何其他组件通信,尽管为便于描绘而未示出所有连接。该移动设备可以是各种计算设备(例如,蜂窝电话、智能电话、手持式计算机、个人数字助理(PDA)等)中的任一个,并且可允许与诸如蜂窝或卫星网络等一个或多个移动通信网络1304进行无线双向通信。
所示移动设备可包括用于执行如信号编码、数据处理、输入/输出处理、电力控制和/或其他功能等任务的控制器或处理器1310(例如,信号处理器、微处理器、ASIC、或其他控制和处理逻辑电路)。操作系统1312可控制对组件1302的分配和使用,并支持一个或多个应用程序1314。应用程序可包括公共移动计算应用(例如,包括电子邮件应用、日历、联系人管理器、web浏览器、消息收发应用)、或任何其他计算应用。
所示移动设备可包括存储器1320。存储器1320可包括不可移动存储器1322和/或可移动存储器1324。不可移动存储器1322可包括RAM、ROM、闪存、盘驱动器、或其他众所周知的存储器存储技术。可移动存储器1324可包括闪存或订户身份模块(SIM)卡,SIM卡是GSM通信系统中众所周知的,或者其他众所周知的存储器存储技术,诸如智能卡。存储器1320可用于存储数据和/或用于运行操作系统1312和应用程序1314的代码。示例数据可包括经由一个或多个有线或无线网络发送给和/或接收自一个或多个网络服务器或其他移动设备的网页、文本、图像、声音文件、视频数据、或其他数据集。存储器1320可用于存储诸如国际移动订户身份(IMSI)等订户标识符,以及诸如国际移动设备标识符(IMEI)等设备标识符。这些标识符可被传送给网络服务器以标识用户和装备。
移动设备可支持诸如触摸屏1332、话筒1334、相机1336、物理键盘1338、和/或跟踪球1340的一个或多个输入设备1330,以及诸如扬声器1352和显示器1354的一个或多个输出设备1350。其他可能的输出设备(未示出)可包括压电或其他触觉输出设备。一些设备可服务超过一个输入/输出功能。例如,触摸屏1332和显示器1354可被组合在单个输入/输出设备中。
触摸屏1332可用不同的方式接受输入。例如,电容式触摸屏在物体(例如,指尖)使流过表面的电流变形或中断流过表面的电流时检测到触摸输入。作为另一示例,电阻式触摸屏在来自物体(例如,指尖或指示笔)的压力引起物理表面的压缩时检测到触摸输入。作为另一示例,触摸屏可使用光学传感器以在来自该光学传感器的光束被中断时检测到触摸输入。为使输入被某些触摸屏检测到,与屏幕表面的物理接触不是必需的。
无线调制解调器1360可被耦合至天线(未示出),并且可支持处理器1310与外部设备之间的双向通信,如本领域中清楚理解的。调制解调器1360被一般性地示出,并且可包括用于与移动通信网络1304和/或其它基于无线电的调制解调器(例如蓝牙或Wi-Fi)进行通信的蜂窝调制解调器。无线调制解调器1360通常被配置成与一个或多个蜂窝网络(诸如,用于单个蜂窝网络内、蜂窝网络之间、或移动设备与公共交换电话网络(PSTN)之间的数据和语音通信的GSM网络)进行通信。
移动设备可进一步包括至少一个输入/输出端口1380、电源1382、卫星导航系统接收机1384(诸如全球定位系统(GPS)接收机)、加速计1386、收发机1388(用于无线发射模拟或数字信号)和/或物理连接器1390,它可以是USB端口、IEEE 1394(火线)端口和/或RS-232端口。所示组件1302不是必需的或穷举的,因为可删除组件并且可添加其他组件。
VI.扩展和替代
本节记录上面所呈现的技术和工具的其他扩展、替代和应用中的一些。
所描述的经链接的连拍模式图像技术可结合其他数字图像处理技术来使用。例如,所描述的经链接的连拍模式图像技术可以用于数字相片编辑情形,以在计算机上编辑经链接的连拍模式图像。相片编辑例如可以对增量图像或对根图像执行。
对此处所描述的示例的各种替代是可能的。例如,参考流程图所描述的技术可以通过改变流程图中所示的级的排序,通过重复或省略某些级等来改变。作为另一示例,尽管某些示例是参考特定数字媒体格式描述的,然而也可使用其他格式。
在参考所描述的实施例描述和示出了本发明的原理之后,可以认识到,可以在排列和细节上修改所描述的实施例,而不脱离这些原理。应当理解,此处所描述的程序、过程或方法不相关于或不限于任何特定类型的计算环境,除非另外指明。可依照此处所描述的教导来使用各种类型的通用或专用计算环境或执行操作。所描述的实施例中以软件示出的元素可以用硬件来实现,反之亦然。
鉴于可应用本发明的原理的许多可能的实施例,要求保护落入所附权利要求书及其等效技术方案的范围和精神之内的所有这样的实施例作为本发明。