CN111885385B - 关于实现数字图像的无损压缩的像素值编码方法及编码器 - Google Patents

关于实现数字图像的无损压缩的像素值编码方法及编码器 Download PDF

Info

Publication number
CN111885385B
CN111885385B CN202010360614.6A CN202010360614A CN111885385B CN 111885385 B CN111885385 B CN 111885385B CN 202010360614 A CN202010360614 A CN 202010360614A CN 111885385 B CN111885385 B CN 111885385B
Authority
CN
China
Prior art keywords
encoder
pixels
pixel values
pixel
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010360614.6A
Other languages
English (en)
Other versions
CN111885385A (zh
Inventor
M·海纳森
M·约翰尼森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sick IVP AB
Original Assignee
Sick IVP AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sick IVP AB filed Critical Sick IVP AB
Publication of CN111885385A publication Critical patent/CN111885385A/zh
Application granted granted Critical
Publication of CN111885385B publication Critical patent/CN111885385B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/4115Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures involving the recognition of specific patterns, e.g. by symbol matching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本公开涉及关于实现数字图像的无损压缩的像素值编码方法及编码器。提供用于对包含多行像素的数字图像的像素值进行编码以实现数字图像的无损压缩的编码器(131;800)和方法。对于所述多行中的每一行,编码器(131;800)获得(701)行的未编码像素值。并且,对于所述多行中的每一行,编码器(131;800)对于行的一个或多个像素中的每一个像素确定(702)在数字图像的所述无损压缩中使用哪种编码对像素(x)的未编码像素值进行编码。确定基于所述未编码像素值与所述行中的其它最近相邻像素(N1,N2)的未编码像素值的关系。

Description

关于实现数字图像的无损压缩的像素值编码方法及编码器
技术领域
这里的实施例涉及与包含多行像素的数字图像的像素值的编码有关的方法和配置,用于实现数字图像的无损压缩。
背景技术
数字图像通常被定义为像素的阵列。阵列中的像素的数量通常被称为分辨率。各像素由包括关于像素位置的有关图像的信息的一个或多个像素值表示,即与一个或多个像素值相关联。在灰度图像中,像素由描述该像素的强度的非负整数值表示。图像的位深定义像素可以具有的值的范围。灰度图像通常具有8-16位的像素深度,从而意味着像素范围是[0;2N-1],这里,N是像素深度。
用于工厂和物流自动化的工业视觉照相机和系统可以基于捕获对象的三维(3D)图像的3D机器视觉。3D图像是指还包括“高度”或“深度”信息的图像,并且,不是或至少不仅仅是如在常规图像中那样关于仅二维(2D)的像素的信息(例如,强度和/或颜色)。然后可以施加处理以从3D图像提取关于对象的特性(即对象的3D特性)的信息,并且例如转换为各种3D图像格式。这种关于高度的信息可以被称为范围数据,这里,范围数据因此可以对应于来自被成像对象的高度测量(或者换句话说,来自对象的范围或距离测量)的数据。可选地或另外,像素可以对应于其它材料性能,诸如光在成像区域中的散射或特定波长的光的反射。
因此,像素值可以例如与像素的强度和/或与范围数据和/或与材料性能相关。
数字数据压缩是通过使用比原始表现更少的位编码信息的任务。其目标通常是减少存储空间或最小化传输带宽。通过最小化数字文件中的冗余信息,可以对数据进行无损或有损压缩。无损压缩,又称为无破坏压缩,是指压缩过程是完全可逆的,从而意味着压缩过程可以反转,以实现原始信息的精确拷贝。有损压缩是指通常由于压缩算法中的量化而无法实现这一点的压缩。
无损压缩技术是本公开的主要关注点。
为图像设计的压缩算法通常包括后面跟随熵编码的去相关步骤。由于正常的连续图像在相邻像素之间具有很高的相关性,即具有空间冗余,因此使用去相关步骤以最小化这种冗余,从而降低图像熵。
无损图像压缩技术可以分为两类:基于预测的技术和基于字典的技术。
存在许多发展良好的基于字典的压缩算法,包括例如所谓的Lempel-Ziv-Welch(LZW)算法、算术编码算法和所谓的Huffman编码算法。在这些中,重复和频繁出现的图案被赋予较短的码字。码字表基于图像的统计信息被创建,并然后用于对图像进行编码。概率表通常由两次(或更多次)扫描图像的所谓的two-pass方法创建,以建立可以对图像进行压缩的统计模型。另一种方案是使用基于编码器将处理的图像的假设创建的固定概率表。
基于预测的算法通过基于相邻(即邻近)像素预测当前像素值并然后对预测值与实际像素值之间的差值的预测误差(即残值)进行编码,利用图像中的空间冗余。可以一遍完成编码。例如,在支持无损压缩的联合摄影专家组LS(JPEG-LS)、基于上下文的自适应无损图像编解码器(CALIC)、快速高效无损图像压缩系统(FELICS)和作为扩展Rice无损压缩的实现的SZIP中,使用基于预测的算法。
在比如制造、装配和质量控制的高度自动化的行业中,例如由照相机和基于成像的系统提供的快速和精确的传感器和测量是必要的。这种系统可以通过千兆位以太网(Gigabit Ethernet)(GbE)将未压缩的图像数据发送到主机计算机以供进一步处理。由于在接收器处预期或甚至需要低延迟的图像,因此以太网链路的带宽设定照相机操作速度的限制。允许更快的以太网通信的硬件更新伴随高成本,并且,希望提高吞吐量的成本有效的方案。
常规的数字灰度和RGB图像以及具有范围数据的3D图像通常具有可用于压缩的很高的空间和时间冗余。比如JPEG-LS、CALICS和也称为游程编码(encoding)(RLE)的游程编码(coding)(RLC)的无损压缩方案可以被使用以增加信息密度和减小图像文件的大小。因此,与仅在未压缩图像数据的情况下可能实现的相比,可以利用这种方案以及足够高的压缩和解压缩速度来增加通信链路(例如,以太网链路)上的吞吐量。
由此,在照相机系统中,图像数据带宽可以非常高,并且有时诸如千兆位以太网的物理传输层限制性能。因此,无损压缩可以提高系统的性能。当使用照相机系统以执行测量时,希望或者常常甚至需要无损。
US 2016249064 A1公开了无损数据压缩和解压缩装置、系统和方法。目标是增加要以无损方式(诸如千兆位以太网连接)传输的图像数据的平均量,以增加其带宽。用于压缩的视频图像文件包括多个线段,每个线段具有M像素的长度和H位的头部,并且每个像素由t位表示。从未编码图像文件读取具有第一段长度M像素的第一线段中的第一数量的未编码像素值。进一步从未编码图像文件读取具有第二长度M的第二线段的第二数量的未编码像素值。然后确定第一和第二未编码像素值中的每一个之间的差异。对于段中的每个像素值,只有第一和第二未编码像素值中的每一个之间的差异通过使用给定数量的位的最小数量的位t被编码,其中,t被定义为1与N之间的整数。
发明内容
鉴于以上,目标是,诸如关于编码数字图像的像素值以实现无损压缩并有利于在带宽受限的通信链路上传输,提供现在技术的一种或多种改进或替代。
根据这里的实施例的第一方面,通过用于对包含多行像素的数字图像的像素值进行编码以实现数字图像的无损压缩的编码器,实现目标。编码器被配置为对于所述多行中的每一行,获得该行的未编码像素值。编码器被配置为对于所述多行中的每一行,对该行的一个或多个像素中的每一个,确定在数字图像的所述无损压缩中使用哪种编码对像素的未编码像素值进行编码。确定基于所述未编码像素值与所述行的其它最近相邻像素的未编码像素值的关系。
根据这里的实施例的第二方面,通过由编码器执行的用于对包含多行像素的数字图像的像素值进行编码以实现数字图像的无损压缩的方法实现目标。对于所述多行中的每一行,编码器获得该行的未编码像素值。对于所述多行中的每一行,编码器进一步对于行的一个或多个像素中的每一个,确定在数字图像的所述无损压缩中使用哪种编码对像素的未编码像素值进行编码。确定基于所述未编码像素值与所述行中的其它最近相邻像素的未编码像素值的关系。
根据这里的实施例的第三方面,通过包括当由一个或多个处理器执行时导致编码器执行根据第二方面的方法的指令的计算机程序实现目标。
根据这里的实施例的第四方面,通过包含根据第三方面的计算机程序的载体,实现目标。
通过基于同一行中的(例如同一行中对应于预测器的参考像素的)其它像素值确定在数字图像的所述无损压缩中使用哪种编码对像素的未编码像素值进行编码,特别是当数字图像是具有范围数据的3D图像时,使得快速和资源有效的硬件实现成为可能。像素值可以被行独立地编码和解码,并且,用于无损压缩的适合的编码可以按像素值被确定(例如,被选择)并且基于与所述确定相同的参考像素。
附图说明
参照在下面简要描述的示意性附图,更详细地描述这里的实施例的示例。
图1A示意性地示出用于提供3D图像的基于三角测量的测量系统,在该测量系统中可以应用本文中的实施例。
图1B示意性地示出在照相机单元中具有编码器并且用于通过通信链路将编码数据传送到具有解码器的接收单元的系统,在该系统中,可以应用本文的系统实施例。
图2示意性地示出两种情况下的预测上下文。
图3示意性地例示假设的概率分布。
图4示意性地示出游程编码(RLC)原理的两个示例。
图5是以总结关于当前像素的动作的形式示意性地示出并且例示建模阶段的流程图。
图6A-B示意性地分别示出与数据打包器有关的两种不同情况。
图7是示意性地示出根据本文的实施例的方法的实施例的流程图。
图8是用于示出根据本文的实施例的编码器的实施例以及它如何可以被配置为实施关于图7描述的方法和动作的功能框图。
图9是示出与导致编码器执行关于图7描述的方法和动作的计算机程序及其载体相关的实施例的示意图。
具体实施方式
这里的实施例是示例性实施例。应当注意,这些实施例不一定是互斥的。一个实施例中的构成要素可以被默认为存在于另一个实施例中,并且对于本领域技术人员来说,如何在其它示例性实施例中使用这些构成要素将是显而易见的。
作为对本文的实施例的发展,已经对现有的无损压缩技术、这些技术如何用所谓的行扫描图像数据执行以及像素值何时与范围数据相关进行了研究。当例如通过具有被配置为一次一行像素地感测和提供图像数据的传感器的照相机一次一行地扫描或提供图像的图像数据时,得到行扫描图像数据。行扫描图像的特殊情况是由所谓的“光片”或激光线、3D三角测量提供的图像数据。3D机器视觉系统通常基于主动三角测量。在这种系统中,存在用特定的光图案照亮对象的光源。通常使用光片作为例如由激光产生的特定的光图案。
图1A示意性地示出这种系统的示例,即测量系统100。系统100可以对应于被配置用于主动三角测量的机器视觉系统。测量系统100包括用于用特定光图案111照亮要被成像的对象的光源110,例如激光器,该光图案111在图中被例示和示出为光片。光可以但不需要是激光。在所示示例中,以汽车形式的第一对象120和齿轮结构形式的第二对象121例示这些对象。当特定光图案111入射到对象上时,这对应于特定光图案111在对象上的投影,当特定光图案111与对象相交时可以看到该投影。例如,在所示示例中,例示为光片的特定光图案111在第一对象120上产生光线112。特定光图案111被对象、更具体地说被对象的在交点处(即在所示示例中的光线112处)的部分反射。测量系统100还包括包含图像传感器(未示出)的照相机单元130,该照相机单元130相对于光源110和要成像的对象被配置为使得特定光图案当被对象反射时变为图像传感器上的入射光。图像传感器是用于将入射光转换为图像数据的配置,该配置通常被实现为芯片。对象的通过反射导致图像传感器上的所述入射光的所述部分可由此被照相机单元130和图像传感器捕获,并且,可以产生并提供相应的图像数据以供进一步使用。例如,在所示示例中,将向照相机单元130和图像传感器反射在第一对象120的车顶的一部分上的光线112处的特定光图案111,由此可以产生并提供具有关于车顶的所述部分的信息的图像数据。利用测量系统100的几何知识,例如,图像传感器坐标如何与针对被成像对象相关的世界坐标(例如坐标系123(例如笛卡尔)的坐标)及其上下文知识,图像数据可以被转换为适当格式的关于3D特性(例如,被成像对象的3D形状或轮廓)的信息。
通过移动例如光源110和/或被成像对象(诸如第一对象120或第二对象121),使得实际上通常通过扫描对象,对象的多个部分被照亮并且导致反射光照射到图像传感器上,可以产生描述对象的更完整3D形状的图像数据,该图像数据例如对应于对象的多个连续的轮廓,诸如第一对象120的所示轮廓140-1~140-K。如图所示,传输带122或类似装置可以被用于在光源110和照相机单元130通常静止的情况下移动对象通过特定的光图案112,使得照亮各对象的所有部分或至少所有面向光源110的部分。关于所述3D特性的信息,例如所述3D形状或轮廓,可以包括以任何合适格式描述3D特性的数据。
从以上可以理解,例如第一对象120的由照相机单元130和图像传感器提供的图像包括多行像素,其中每行可以对应于如图所示并且以范围数据作为像素值的被扫描轮廓。像素行可以在扫描期间被依次提供。
使用如图1A所示的配置的优点是,行失真集中在一个方向,这简化计算并降低校准复杂性。缺点是,对象的照相机视角成某个角度,这意味着,照相机需要更高的景深,并且,当对象的高度变化时,激光线的某些部分会被遮挡并由此对于照相机不可见。轮廓中的激光线被阻塞或强度低于设定阈值的像素被称为丢失数据,并且将在产生的图像中典型地表现为具有识别丢失数据的相同定义值(例如,0)的连续出现的像素。
由照相机单元130和图像传感器提供的图像通常希望转移(例如传送)到例如主机计算机或类似计算机以供在照相机单元之外进一步处理,并且,可能发生在背景技术中讨论的情况。即,通信链路,例如诸如千兆位以太网的物理传输层,可能限制通常必须是无损的性能和压缩,因此可以使用更好的传送以避免这一点并使得能够提高性能。
图1B示意性地示出用于数字图像编码(例如用于无损压缩)和通过通信链路140(例如千兆位以太网链路)传送编码数据的系统200。这里,编码由可以包含于这里示为照相机单元130的照相机单元(例如,照相机或图像捕获装置)中的编码器131(例如编码设备或编码器电路)执行,即,具有编码器131的照相机单元可以是图1A中的照相机单元130。编码的图像数据可以对应于由照相机单元130(或者更确切地说由其图像传感器)捕获并进行非破坏性压缩即无损压缩的图像数据。由编码器131提供的编码图像数据可以由发射器132(例如,电路或模块)获得,该发射器132也包含于照相机单元130中并且被配置为通过通信链路传送编码图像数据。发射器132可以是照相机单元130的输入/输出(I/O)电路或模块的一部分,并且接口连接通信链路。包含于主机计算机中或对应于主机计算机的接收单元150(例如,设备或装置)可以被配置为通过通信链路140接收编码图像数据。接收单元150可以包括接收器151(例如,传送电路或模块),该接收器151可以是接口连接通信链路140的输入/输出(I/O)电路或模块的一部分,并且被配置为通过通信链路140上的接收获得编码图像数据。所示的接收单元还可以包括被配置为解码(例如解压缩)已被编码器131编码(例如压缩)的图像数据的解码器152。实际上,照相机单元130和接收单元150还包括由技术人员实现的其它电路和/或模块,但出于简化的原因,这里不示出这些电路和/或模块。例如,如果接收单元150可以提供用于被解码图像数据的存储和/或进一步处理的部件和/或通路,该部件和/或通路在无损压缩的情况下因此可以在如编码之前(即由照相机单元130(诸如其图像传感器)提供的)的相同图像信息上操作。
上述的范围数据的像素值可与常规灰度图像的像素值相当。所提供的位深可以被设定为8位、12位或16位,其中正常情况(例如是12位深度)意味着像素值在0到212-1(即0到4095)的范围内,并且例如还包括识别丢失数据的值,例如0。当使用特定照相机时,图像行的像素宽度可以例如为2560像素。
3D图像的范围数据的像素值与常规灰度图像的像素值之间的主要区别是存在如上所述的丢失数据。
希望用于如上文提到的那样适合于与行扫描数据一起使用的图像数据的压缩的编码器满足的要求包括:它应适于实时应用,即范围数据的实时编码;使得能够实现至少1.5-2的压缩比;以及编码器的吞吐量应该超过千兆位以太网,即,大于125MB/s。编码器优选地在硬件中实现,并且然后还希望使实现所需的硬件资源量和提供编码数据时的延迟保持低水平。
压缩比指示编码器能够压缩典型图像(这里,是上述的典型的范围数据图像)多少,即减小其大小多少。描述压缩比的另一方式是代表压缩前数据所需的位数与压缩后所需的位数之间的关系。这里的吞吐量与每秒可以处理多少未编码的输入图像数据并由此导致编码的压缩的图像数据有关。
对于用于解码编码器的输出的解码器,希望具有低计算开销和低延迟,至少低得足以与编码器良好匹配。
基于上述考虑,对现有的压缩算法进行了综合研究,以评估和找到编码器(例如编码器131)可以基于的合适的无损图像压缩算法。
一些现有的算法,例如在背景技术中描述的two-pass算法,被认为不太合适。在压缩过程中通常需要存储上下文像素值、算法参数和统计模型。由于应实时并且通常以高频率执行压缩,因此发现光栅扫描顺序算法是优选的。光栅扫描顺序意味着图像逐个像素、逐行地被处理。一些算法将图像分割成块,使得每个块被单独处理。然而,这需要在处理之前对图像的几个行进行缓冲,从而导致更大的延迟和/或对存储/缓冲未编码的图像数据行的大量需要。这是例如在背景技术中描述的使用两行的现有技术方案的情况。
此外,由于硬件中的实现应能够以希望的速度实时运行,因此流水线级(pipelinestage)应相对简单。因此,可以用简单的逻辑和算术运算实现的算法应优先于其它算法。此外,应避免流水线中的数据依赖性,由此,可以更好避免在压缩期间更新的动态模型。
此外,研究了数个不同范围数据图像中的熵,并且应用不同的去相关方法以降低熵。熵可以用于评估可压缩性。图像的熵指示图像可以压缩多少的下限。通过用熵划分像素深度,可以实现压缩比的近似极限。
发现有前途(至少在一些调整和修改之后)的压缩方法是在FELICS中使用的一种。
以上导致开发被设计为简单、快速且资源效率高同时仍然能够利用如上所述的范围数据图像的可压缩性能的编码方法。这里的实施例基于所述得到的编码方法。
可以最容易地基于现有的FELICS算法(具有包括减少和增加的修改)描述编码方法。在P.G.Howard and J.S.Vitter,Proceedings DCC`93:Data CompressionConference,March 1993,“Fast and efficient lossless image compression”,pages351-360,10.1109/DCC.1993.253114中以及在T.Tsai and Y.Lee,IEEE Transactions onVery Large Scale Integration(VLSI)Systems,Jan 2010,volume 18,“Design andAnalysis of High-Throughput Lossless Image Compression Engine Using VLSI-Oriented FELICS Algorithm”,pages 39-52,10.1109/TVLSI.2008.2007230,ISSN 1063-8210中,可以找到FELICS的描述。
应当注意,在下文中可以称为原始或常规FELICS的现有FELICS算法,不是上述研究的见解之前的自然起点。原始FELICS在没有修改的情况下不是非常适合。例如,原始FELICS在编码图像时对单个像素使用动态预测上下文,该上下文涉及多行的像素。
简而言之,本文的实施例所基于的编码方法包括预测/建模和熵编码这两个主要阶段,即它基于预测。建模阶段试图降低熵,即增加信息密度。在建模阶段,优选使用同一行上的两个先前像素值作为上下文来预测当前像素。像素的像素值可以在常规图像的情况下与像素的强度相关,或者在如上所述的具有范围数据的3D图像的情况下与范围(即对象高度测量)相关。然后,通过使用在FELICS中使用的调整二进制编码(ABC)的修改简化变体(该简化变体在本文被称为简化调整二进制编码(SABC))或在FELICS中使用的Golomb-Rice编码(GRC)的变体,在编码步骤中对预测误差进行编码。除此之外,当上下文指示丢失数据时,本文的编码方法自适应地切换到游程模式。在游程模式中,编码是游程编码(coding)(RLC)(也可以称为行程编码(encoding)(RLE))。RLC本身是已知方法,并且在下面被单独地简要描述。源编码通常输出可变长度的位串,因此需要数据或位打包器。数据打包器应将输入的位串打包成固定长度的数据字,该数据字可输出为要例如通过通信链路(例如,通信链路140,诸如千兆位以太网链路)传输的最终代码。由于图像以行独立的方式(例如,以行独立的扫描顺序)被压缩,因此,每个行的总的得到的代码长度应与压缩代码一起被输出。这消除了行之间的数据依赖性,并允许解码器在多行上并行操作。
因此,本文的实施例所基于的编码方法是基于预测的,并且对于这一点使用与被编码的像素对象在同一行中的两个先前像素的上下文。基于上下文使用不同的编码技术。使用哪种编码技术提供某个像素值的编码(例如,对其使用SABC、GRC的所述变体或RLC中的一个)也基于上下文被确定。如上文所述,这使得能够简单、快速和资源高效地实现图像(特别是范围数据图像)的无损压缩。
接下来,将更详细地描述本公开的编码方法的所述两个主要阶段,即预测/建模和编码阶段以及数据打包器。编码阶段将被描述为分成所述三种编码技术,即SABC、GRC的所述变体和RLC。
1.预测/建模阶段
如上所述,像素值要以行独立的扫描顺序被编码。图像可以按照常规的光栅扫描顺序被扫描,但每一行要完全独立于其它行地被编码。这与通常使用二维以计算残值的图像的大多数预测图像压缩技术不同。通过用来自同一行的局部预测器单独地对行进行编码,可以消除行间数据依赖性。对于单独编码的行,预测模型应考虑到这一点。例如,与FELICS的原始预测模型相比,预测模型应被稍微调整。基本上,来自FELICS的预测模板的前两种情况(情况1和2)反而被用于图像的所有行。每行的前两个像素是未编码通过的,并且其余像素使用两个最近的先前像素作为上下文模型。
图2示意性地示出两种情况的预测上下文。情况1涉及行的不进行预测和编码的前两个像素(这里是x1、x2)。情况2对于行的所有其它像素,这里表示作为当前像素的像素x6,并且该行的两个最近先前像素是参考像素N1和N2,即预测器。
原始FELICS使用依赖于其预测器的值的概率分布的外观的实验验证的假定。然而,由于本方法中的预测器仅依赖于同一行上的先前的两个值,因此应调整假定的概率分布函数。
图3示意性地例示调整的假定概率分布可能看起来是什么样子。L是两个先前像素N1、N2的最小像素值,H是最大值。△是H和L之间的差值。对于连续图像,可以假设与N2相比x的值应更接近N1,这会导致图中的L和H之间的虚线。然而,当当前像素的像素值在范围内即在L和H之间并且通过使用SABC被编码(见下文)时,不利用这一点。因此,如图中的实线所示,范围中的概率分布可以被视为平坦的。
下面解释如何基于其上下文来预测行的当前像素的像素值,此处即,当前像素的像素值如何与同一行中的两个最近的先前像素相关。
下表1公开了可以如何根据当前像素的像素值x与其预测器(即,这里为其最近的相邻像素N1和N2)的像素值L和H的关系,计算对应于预测误差的残值ε。这涉及以上关于图2解释的情况2中的情景。
表1根据上下文的残值计算的示例
如已实现的,残值计算可以对应于原始FELICS的情况2。
除了残值计算外,引入检测用于自适应游程编码(即使用RLC)的平坦区域(诸如在丢失数据的情况下)的方法。用于确定是否应使用游程模式的上下文可能基于与上面相同的上下文。即,同一行中的两个最近先前像素与当前像素值一起用于确定编码器是否应进入游程模式。如果N1、N2和x均相同(通常是识别丢失数据的预定值,例如0),则编码器应进入游程模式。即,当至少三个连续出现的像素具有相同的值时,很可能这是由于丢失数据造成的并且沿着该行的其它像素也将是丢失数据。
图4示意性地示出以上在两个不同的示例中指示的游程模式和RLC编码原理。它表明,当进入游程模式时,当前像素x变为游程模式的开始像素rStart,并且通过使用RLC对该像素和随后的像素进行编码,直到像素具有不同的像素值(示例1)或到达行末(EOL)(示例2)。具有不同像素值的第一像素或EOL变成模式的结束像素rEnd。根据游程模式何时停止,使用RLC编码了数量rCount个像素。下面将进一步讨论这一点。
图5是关于具有像素值x的当前像素和同一行中的最近先前像素N1,N2,以总结动作的形式示意性地示出并例示建模阶段的流程图。符号x、N1、N2等如上所述。
在可能和适当的情况下,可以以任何适当的顺序采取和/或在时间上完全或部分重叠地实施下面的动作。
在动作501中,从N1和N2计算L、H及其△(即H减L)。
在动作502中,确定x在L和H的上下文中驻留在哪里。
在动作503中,计算残值ε。
在动作504中,确定在编码阶段应使用哪种编码器(即编码技术),例如,应使用下面进一步描述的SABC或GRC的变体中的哪一种。
在动作505中,确定是否应为下一像素激活游程模式。
在动作506中,检查是否处于游程模式中。
如果处于游程模式中,则在动作507中基于当前像素值或是否行结束来检查游程模式是否应结束。
如果游程模式应结束,则在动作508退出游程模式并且提供rCount,例如,用于在游程模式下编码像素值的输出,否则在动作509中rCount递增。
可以对行的所有像素执行上述操作,例如,从该行的第一像素等开始,直到对该行的所有像素执行所有操作。对于图像的所有行,也可以进一步这样执行。
2.编码阶段
编码阶段的目的基本上是从建模阶段接收残值,并用尽可能少的位对其进行编码。因此,编码阶段的输出具有可变位长度。
如前所述,要使用的编码技术可以从SABC、如FELICS中的GRC的变体和RLC中确定。如下表2例示的那样,可以用一个或两个位的索引码对确定要用于特定像素的源编码方案进行编码。
表2确定要使用的索引码和编码技术
因此,当像素x在范围内时,索引码可以是0并且可以使用SABC。当像素低于范围或高于范围时,索引码可以分别为10和11,并且可以使用GRC的变体。如以下在2.3RLC中进一步描述的那样,对于使用RLC的游程模式可能不需要使用索引码。
2.1GRC
如前所述,建议用于本编码方法的GRC与在FELICS中使用的GRC相似。主要差别是代替地应使用静态k值,这意味着k值对图像中的所有上下文应是相同的。但是,k值可以在设置阶段或类似阶段被调整,因为图像将在不同的应用中变化,并且可以为特定的应用和/或情况选择最合适的k值。此外,应使用一元码的最大码长,因为当k值未被适当选择时(由于以上所述这可能是困难的),大的残值在一些情况下可能导致非常大的码字。一元码的最大码长在此被称为qmax。当用于GRC的索引码(见上文)具有位长2时,qmax可定义为qmax=N-2,这里,N是位深,使得后跟一元代码的索引码具有等于位深的最大长度。qmax代码不需要像一元码那样在结尾处后跟零。当达到qmax时,可以代替或附加地提供具有其常规二进制表示的原始像素值,而不是在一元码后面跟随余数。例如,如果位深为8、当前像素值x=100、ε=25、k=0并且根据上下文得出的结论是当前像素低于范围,则根据本编码方法的GRC变体的码字将为:
对于相同的参数,这可以与源自在FELICS中使用的常规GRC的码字进行比较:
2.2SABC
出于以上关于图3讨论的原因(例如由于使用其它预测器),在FELICS中使用的调整二进制编码(ABC)假定对于本编码方法不应有效的概率分布。因此,对于本编码方法,原始FELICS中的常规ABC可以进一步简化,从而得到SABC。在SABC中,FELICS所使用的常规ABC中的旋转偏移操作可以被去除。常规ABC需要三个过程:参数计算、循环旋转和码字生成。这些操作可以转换为适于硬件实现的算术操作。然而,这可能会严重限制处理速度。在SABC中,二进制值是一直(而不是仅在x接近L或H的边缘情况下)使用upper_bound位被编码的。这意味着在一些情况下,与原始FELICS相比,可以使用利用一个额外位表示码字的次优码。
应当注意,虽然SABC是优选的,但是也可以使用原始FELICS中的ABC,但是在硬件实现的情况下有一些缺点。通过上面结合图3讨论的假设概率分布,也可以对范围中的像素使用SABC和常规ABC之外的其它二进制编码技术,如技术人员应实现的。
通常,基于像素值id在“范围内”区域或“范围外”(高于或低于)区域中确定的用于像素值的压缩的编码类型应考虑相应区域中的概率分布,另外,例如为了促进实施、降低成本、实现较低的延迟等,还应考虑其它要求,诸如关于用于实现的硬件实现。
2.3RLC
如上文结合图4所解释的,游程模式和RLC被用于更有效地处理丢失数据,并且因为对于除了源自丢失数据(例如,为0)的像素值以外的像素值,相同值的长行程的概率非常低。因此在原始FELICS中没有使用RLC。
即使是非常平坦的表面在诸如源自高度测量的高度映射图中(即,在像素值中)也有一些噪声和不一致。这已经用一系列测试范围数据图像进行了实验证明。可以看到,对于RLC优于常规GRC的较长形成行程,大多数行程都是与丢失的数据相对应的零的行程。除零以外的值的行程通常短到RLC并不有利,特别是考虑到行程的前2个像素可能仍然不是使用RLC编码的。如上面关于图4所示,当进入游程模式时,对rStart和rEnd之间的像素的数量进行计数。当如图4的示例1中那样达到rEnd时,当前像素x将不使用RLC编码,而是代替地例如使用SABC或GRC,并且累积的行程计数,即rCount,可以被编码为常规二进制值。在图4的示例2中,当到达行末时,编码器将退出游程模式,并且累积的行程计数,即rCount,可以被编码为常规二进制值。在最大行宽为2560像素(例如由所使用的照相机(例如其图像传感器)确定)的情况下,由于使用3个像素确定rStart,因此编码的行程的最大长度为2557。因此,游程可以始终通过使用log2(2557)=12位被编码为二进制值。由于解码器在默认情况下可以(即,它可以预定为)以预定的顺序(例如从左到右)解码行,因此可能不需要任何索引位以通知解码器游程模式是活动的,或者更确切地说,将使用RLC。解码器可以通过查看最后3个解码像素自动发现这一点。
当如以上关于图4解释的那样RLC在行末之前结束时,N1和N2均可以是0,并且可以像进入游程模式之前一样继续。另一个选项是以如同是行的第一像素的方式开始,即游程模式结束后的前两个像素不会进行编码,即,像素值保持未编码。另外一个选项是“记住”,即,在存储器中存储关于游程模式前的最后N1和N2的信息,并且这不是进入游程模式的确定的一部分,诸如行中的与“丢失数据”不对应的最近先前N1、N2。
3.数据打包器
由于源代码器输出可变长度的位串,因此应使用数据打包器以将这些位串连接成固定大小的数据字,即大小相等的数据字。码字的最大长度是上述位深度的两倍。如果编码器被设计为处理高达16位的位深,则最大码字长度因此为32位。因此,这种情况下的数据打包器应被设计为打包并输出32位字。32位字大小也是成像系统中通常使用的大小。为了避免数据打包器中的缓冲器溢出,所使用的缓冲器应至少是该大小的两倍,例如64位宽。当32位的完整字可用时,它可能被输出并且缓冲器偏移,从而只留下未被输出的像素。这样编码器总是可以输出恒定位宽的字。由于图像的行应该被单独编码,因此存在行结束时的特殊情况。
图6A-6B分别示意了不同的情况,这些情况与考虑何时到达行末有关,即与何时没有更多的行的编码像素值“要打包”到,即插入到,如上所述的数据字中有关。在所示的情况下,x1表示这些位属于同一像素x1,即,是该像素的编码像素值的一部分,因此这里是行的最后像素,因为这里的情况是要显示何时到达行末。如图所示,代码长度,即像素x1的编码像素值的长度,为9位。属于行中x1之前的像素的位表示为x2和x3。
图6A表示当完整的32位字在行末不可用时,即,该行的最后像素(这里是x1)的编码像素值中的位将不会完全“填满”数据字(这里是32位)。例如,当缓冲器不包含该行前面像素的位时(如下面讨论的图6B所示)。在这种情况下,可以将零连接,即插入,到末尾,直到完整的32位字可用并且可以被输出,在这种情况下,输出的32位字将只包含像素x1的编码像素值。在解码时,可能只是截断数据字以仅获得像素x1的编码像素值的有效位。
图6B从缓冲器的角度表示当在行末正好有一个32位字可用时,即当来自行的最后像素(这里是x1)的编码像素值的位被输入并由此将完全“填满”数据字(这里是32位字)时的情况。行中的先前像素(这里是像素x2和x3)的编码像素值的位已经在缓冲器中,然后所述32位数据字利用来自像素x1的编码像素值的位(这里是5位)而变完整,并且可以输出数据字并且从缓冲器中去除相应的位。在这种情况下,输出可以是“正常”的,即,只是32位字的输出。
图6B还从缓冲器的角度示出了当有超过32位字可用时,这里,是当缓冲器在图6B中的情况之后从x1偏移剩余的(4)位时的情况。缓冲器偏移的原理由此被示出,并且,如所实现的那样,然后情况类似于图6A,并且可以以对应的方式进行管理。
如上所述理解,不同行的像素值不在数据字中混合,这是有益的,因为这有助于处理行的并行解码,并且在这个阶段不需要引入某种在编码期间避免的行依赖性。
如上所述,编码方法可以按照行独立的光栅扫描顺序对图像进行编码。这样做的原因是使得编码行可以在主机计算机(例如,对应于接收单元120)上被并行解码,这将减少总解码时间。每次输出32位字时,计数器可能递增。当行已经被编码时,特定行达到的总计数(例如整数值)可以存储在单独的向量(即数据阵列)中,而不是包含代码,即编码像素值,的向量。向量可以由图像的每行的单独值形成,例如,对应于该行的计数器达到的数量(即累积计数)的值,其中,每个这样的值因此将识别对应的行在包含图像的编码像素值的数据字中的起始位置。
计数可以与编码图像数据一起通过通信链路110(例如,千兆位以太网链路)被发送。关于计数的信息优选地可以在辅助信道(例如,与用于编码数据的信道分离)上被发送。如果通信链路是所谓的GenlCam/GigE视觉链路,则计数(例如向量),可以作为所谓的块数据被发送。
除保持行独立性外,单独地发送计数(即,关于每行在数据字中开始的位置的信息)的另一个优点在于,如果数据在通信链路中丢失,则数据对于这些行丢失,但是仍能解码图像的剩余部分。
主机计算机的解码器(例如,可以在软件中实现的解码器122)可以由此与来自向量的信息一起获得压缩的图像。这样,解码器可以找到获得的压缩数据中的单独的行,例如32位字的位串,并且并行地将它们解压缩。
到目前为止,已经从编码器的角度做出解释。然而,应该意识到,基于此,解码器的设计和实现相当简单。编码器的各级和编码器执行的动作,建模、编码、数据打包等,可以简单地颠倒。解码器(例如解码器152),可以与例如包含每行的码大小的所述向量一起接收数据字中的压缩数据串。在找到行的开始后,可以与其它行单独地解码该行。解码器不必知道代码的大小,因为它将始终知道“到目前为止”解码了多少像素,并且预期的行宽度通常是(并且在实践中可以始终是)事先已知的。
图7是基于上述编码方法示意性地示出根据本文的实施例的方法的实施例的流程图。
可形成方法的下面的动作用于对包含多行像素的数字图像(例如,如上文所讨论的可包含范围数据的行扫描数字图像)的像素值进行编码。该方法及其动作可由编码器131执行,编码器131被用作下面的示例。即,编码是为了实现数字图像的无损压缩。
因此,编码应当用于数字图像的压缩,即其图像数据的压缩,并且该压缩应当是无损的,即非破坏性的。
对所述多行中的每一行执行下面的动作,即,使得由此可以对整个图像进行编码和例如压缩。此外,在可能和适当的情况下,可按任何适当顺序采取和/或以完全或部分重叠的方式实施以下的动作。
动作701
编码器131获取该行的未编码像素值,例如从照相机(诸如图1B中的照相机单元130)的图像传感器接收它们,其中,每行例如可对应于如图1A所示的捕获的简档。像素值可以按行获得(例如,一次一行),诸如以由编码器操作的图像传感器(例如,照相机单元130的图像传感器)的输出确定的速率。
动作702
编码器131针对行中的一个或多个像素中的每一个,确定在数字图像的所述无损压缩中使用哪种编码对像素(例如像素x)的未编码像素值进行编码。确定基于所述未编码像素值与所述行中的其它最近相邻像素(例如像素N1、N2)的未编码像素值的关系。编码应该是用于无损压缩的编码。确定要使用哪种编码可以是要确定要使用哪种编码技术。确定应独立于其它行的像素值,即应仅基于同一行的像素值。同样,编码本身可以基于所述未编码像素值与所述最近相邻像素的未编码像素值的关系。
该动作可以完全或部分对应于例如上述动作501-505,并且可以完全或部分地对应于以上关于预测/建模阶段并在部分“1.预测/建模阶”下所描述的。
所述最近相邻像素优选地是沿着行的某个方向上的先前像素,例如,两个最近的先前像素,诸如N1、N2。因此,在像素之前最近的两个像素应在进行确定的像素(例如对应于当前像素的像素x)之前。
行具有两个方向,并且某个方向可以是其中的任何一个,通常是从该行的第一像素到最后像素的预定方向。该方向可以是与读取或操作像素值的顺序相对应的方向,并且可以被称为与行相关联的操作方向。
如果多个随后出现的像素中的每一个的所述未编码像素值与所述最近相邻像素(例如N1、N2)的未编码像素值相同,诸如,如果它们具有相同的预定值,例如可以指示或识别丢失数据的0,则可以确定使用RLC来编码一个或多个随后出现的像素(例如在上述rStart-sEnd之间)的像素值。
这可以完全或部分地对应于关于可以如何确定使用并随后应用RLC的以上描述。
像素值或至少一些像素值应基于使用所述最近相邻像素的预测和预测的计算残值被编码,该计算残值基于未编码像素值与所述最近相邻像素中的至少一个的未编码像素值的关系。
这与上述研究得出的适当编码方法的结论是一致的。可以注意到,所有SABC、GRC,甚至RLC,都可以基于预测,甚至使用相同的预测器,尽管RLC通常不被视为基于预测。在任何情况下,除了RLC之外,还应基于预测对像素值进行编码,例如,不对应于丢失数据的所有像素值。
如果所述未编码像素值介于所述最近相邻像素(例如N1、N2)的所述未编码像素值之间,则可以确定使用第一类型编码,例如第一类型的无损编码,诸如上述的SABC,对于所述未编码像素值进行编码,并且,如果所述未编码像素值低于或高于所述最近相邻像素(例如,N1、N2)的所述未编码像素值中的任何一个,则可以确定使用另一第二类型的编码,例如,第二类型的无损编码(例如基于GRC),诸如如上面描述的那样修改的GRC对所述未编码像素值进行编码。因此,第一和第二类型的编码均应基于预测。
这使得能够如以上讨论和在图4中示出的那样利用预测的概率分布。因此,不同类型的编码应利用在所关注的编码所涉及的范围内的预测的概率分布。注意,如上所述,例如,作为SABC的替代,可以使用在FELICS中使用的常规ABC或其它二进制编码。对于第二类型,还可以考虑GRC以外的其它编码。
尽管如此,如上所述,所述第二类型的编码优选为被配置为使用与上下文无关的k值和预定的最大码长的Golomb-Rice编码,即GRC。因此,k值可以独立于所述最近相邻像素,并且,例如对于行的所有像素或对于整个数字图像是相同的。出于上述原因,后者可能是优选的。
动作703
编码器131然后可以基于确定提供编码像素值,该编码值是由编码器131编码的所述未编码像素值和数字图像的所述无损压缩的一部分。这可以包括:编码器131基于所述确定将所述未编码像素值中的一个或多个分别编码为编码像素值,和/或编码器首先完全或部分独立于所述确定地编码所述未编码像素值中的一个或多个,然后基于所述确定选择编码值。例如,出于硬件实现的原因,首先(例如,自动)使用多种类型的编码技术将每个未编码的像素值或者至少一些未编码像素值进行编码,然后通过基于所述确定选择编码值来提供编码像素可能是有益的。
该动作可完全或部分对应于以上关于编码阶段并且在部分“2.编码阶段”下所描述的。
动作704
编码器131可以提供包含于数个等长数据字中的各行的编码像素值。
即,预定长度的数据字对应于固定的通常相等的长度的数据字,每一个对应于一定长度的位串。可以例如使用等长数据字,例如32位,并且长度可以例如基于用于实现的硬件被预定。
行的不同像素的编码像素值可以共享所述等长数据字中的数据字,并且不同行的编码像素值可以在所述等长数据字中的单独数据字中。即,像素值根据编码在固定长度的数据字中“打包”,但是保留行独立性。
可以因此包括数字图像的压缩数据的等长数据字随后可以被传送到接收器,例如,接收单元150(例如,主机计算机)的接收器151。因此,传送可以通过可能与带宽限制相关联的通信链路,例如,通信链路140。
然后,数据字的编码像素值可由解码器152解码,并由此完成压缩数字图像的解压缩。
该动作可以完全或部分对应于以上关于数据打包器,例如在部分“3.数据打包器”下,所描述的。
动作705
编码器131可以与各行相关联地提供在包含所述编码像素值的所述等长数据字内识别行的起始位置的相应标识符。因此,每行可以有一个这样的标识符。如所实现的,标识符与等长数据字是分开的,即应分开地提供,即不包含在数据字中。
各标识符可以例如是关于第一数据字的开始识别与其相关联的行的起始位置的值,例如,包括数字图像的第一行的编码像素值。每行像素的数量由数字图像和例如所使用的图像传感器确定,并因此可以在本文的实施例的上下文中被认为是预先确定的。每行像素的数量可以例如由用于产生数字图像的图像传感器的分辨率和/或设定确定。
该标识符使得能够在包含所有行(即整个数字图像的所有行)的编码像素值的数据字内找到某行的所有像素值。因此,可以基于标识符和关于每行像素数量的知识,找到和获得某行的编码像素值。然后,可以将编码的像素值解码为原始的未编码像素值。这意味着行的解码可以并行地执行,并且一获得(例如接收到)包括行的编码像素值的数据字就立即开始。标识符可以例如以包含在一维阵列(或者如上所述的向量,例如每行一个值)中的值的形式提供,并且与所述数据字相关联地提供,例如与数据字的传送并行地或与数据字的传送一起(例如,使用相同或分离的数据信道)被传送到解码器。
换言之,标识符可以在数据结构中作为单独的值提供,数据结构对于数字图像的每行包含一个值,各值指示相对于参考数据字(例如,所述等长数据字中的第一数据字)的相应行的起始位置。第一数据字通常可以是包括数字图像的第一像素的像素值的数据字。
例如在向量中的标识符可以与等长数据字一起(即,与其相关联地)被发送到接收器。因此,标识符可以通过通信链路140与数据字一起被传送并由接收器151接收,并且数据字的编码像素值由解码器152解码,并由此完成压缩数字图像的解压缩。
该动作也可以完全或部分对应于以上关于数据打包器,例如在部分“3.数据打包器”下,所描述的。
图8是用于示出编码器800的实施例的示意性框图,该编码器800可以对应于编码器131。该示意性框图还用于示出编码器800(例如,设备131)如何可以被配置为执行以上关于图7讨论的方法和动作的实施例。
因此,编码器800用于对包括多行像素的所述数字图像的像素值进行编码,以实现数字图像的无损压缩。
编码器800可包括处理模块801,例如处理部件、一个或多个硬件模块,包括例如一个或多个处理电路、电路系统(诸如处理器)和/或用于执行所述方法和/或动作的一个或多个软件模块。
编码器800还可以包括存储器802,该存储器802可以包括(诸如包含或存储)计算机程序803。计算机程序803包括可由编码器800直接或间接执行以执行所述方法和/或动作的“指令”或“代码”。存储器802可以包括一个或多个存储器单元,并且还可以被配置为存储涉及或用于执行这里的实施例的功能和动作的数据,例如配置、数据和/或值。
此外,编码器800可以包括处理电路系统804,所述处理电路系统804涉及处理和例如编码数据,如例示硬件模块,并且可以包括或对应于一个或多个处理器或处理电路。处理模块801可以包括处理电路系统804,例如,“以处理电路系统804形式体现”或“由处理电路系统804实现”。在这些实施例中,存储器802可以包括可以由处理电路系统804执行的计算机程序803,由此,编码器800可操作或被配置为执行所述方法和/或其动作。
通常,编码器800(例如处理模块801)包括输入/输出(I/O)模块805,该输入/输出(I/O)模块805被配置为涉及(例如,执行)去往和/或来自其它单元和/或设备的任何通信,诸如向其它设备发送信息和/或从其它设备接收信息,例如,向接收单元120发送编码像素值(例如,对应于数字图像的压缩图像数据)。如果适用,可以通过获得(例如接收)模块和/或提供(例如发送)模块例示I/O模块805。
此外,在一些实施例中,作为用于实施本文的实施例的动作的例示硬件和/或软件模块,编码器800(例如处理模块801)包括获得模块、提供模块、编码模块中的一个或多个。这些模块可以由处理电路系统804全部或部分实现。
如以上关于图7描述的那样,编码器800和/或处理模块801和/或处理电路系统804和/或I/O模块805和/或获得模块因此可以操作或者被配置为对所述多行中的每一行获得行的所述未编码像素值。
此外,如以上关于图7描述的那样,编码器800和/或处理模块801和/或处理电路系统804和/或确定模块可以操作或被配置为对于所述多行中的每一行对行的所述一个或多个像素中的每一个确定在数字图像的所述无损压缩中使用哪种编码对像素(例如当前像素x)的未编码像素值进行编码。
此外,如以上关于图7描述的那样,编码器800和/或处理模块801和/或处理电路系统804和/或I/O模块805和/或提供模块可以因此操作或被配置为基于所述确定提供所述编码的像素值。
此外,如以上关于图7描述的那样,编码器800和/或处理模块801和/或处理电路系统804和/或I/O模块805和/或提供模块可以因此操作或被配置为提供包含于所述数个等长数据字中的每行的编码像素值。
此外,如以上关于图7描述的那样,编码器800和/或处理模块801和/或处理电路系统804和/或I/O模块805和/或提供模块25可以因此操作或被配置为与每行相关联地提供识别该行在所述等长数据字中的起始位置的所述相应标识符。
图9是示出与计算机程序及其载体相关的一些实施例的示意图,所述计算机程序及其载体使得以上讨论的所述编码器800执行所述方法和动作。计算机程序可以是计算机程序803,并且包括当由处理电路系统804和/或处理模块801执行时导致编码器800如上面描述的那样执行的指令。在一些实施例中,提供载体(或者,更具体地说,数据载体),例如包括计算机程序的计算机程序产品。载体可以是电子信号、光信号、无线电信号和计算机可读存储介质(例如,如图中示意性示出的计算机可读存储介质901)中的一个。因此,计算机程序803可以存储在计算机可读存储介质901上。载体可以排除暂时的、传播的信号,并且数据载体对应地可以被命名为非暂时的数据载体。数据载体是计算机可读存储介质的非限制性示例是存储卡或记忆棒、光盘存储介质(诸如CD或DVD)或通常基于硬盘驱动器或固态驱动器(SSD)的大容量存储设备。计算机可读存储介质901可用于存储可通过计算机网络902(例如因特网或局域网(LAN))访问的数据。计算机程序803还可被提供为纯计算机程序或包含在一个或多个文件中。一个或多个文件可以存储在计算机可读存储介质901上,并且例如通过下载(例如通过如图所示的计算机网络902)可用,例如通过服务器。服务器可以例如是web或文件传输协议(FTP)服务器。一个或多个文件可以例如是用于直接或间接下载到所述第一节点并在所述第一节点上执行以使其如上面描述的那样执行(例如通过由处理电路系统804执行)的可执行文件。一个或多个文件也可以或可选地用于涉及相同或另一个处理器的中间下载和编译,以导致它们在进一步下载和执行之前可执行,从而导致所述编码器800如上面描述的那样执行。
注意,前面提到的任何处理模块和电路可以被实现为软件和/或硬件模块,例如在现有硬件中和/或作为专用集成电路(ASIC)或现场可编程门阵列(FPGA)等。还要注意,前面提到的任何硬件模块和/或电路可以例如包括在单个ASIC或FPGA中,或者分布在几个单独的硬件组件中,无论是单独封装还是组装到片上系统(SoC)中。
本领域技术人员还将理解,本文中讨论的模块和电路系统可指的是当由一个或多个处理器执行时可以使得节点和设备被配置为和/或执行上述方法和动作的硬件模块、软件模块、模拟和数字电路和/或配置有软件和/或固件(例如存储在存储器中)的一个或多个处理器的组合。
此处任何标识符的标识可以是隐式的或显式的。标识在特定的上下文中可能是唯一的,例如对于特定的计算机程序或程序提供者可能是唯一的。
如本文所使用的,术语“存储器”可指的是用于存储数字信息的数据存储器,通常是硬盘、磁盘存储器、介质、便携式计算机软盘或盘、闪存存储器或随机存取存储器(RAM)等。此外,存储器可以是处理器的内部寄存器存储器。
还应注意,诸如第一节点、第二节点、第一基站、第二基站等的任何枚举术语应被视为非限制性的,并且这样的术语并不意味着某种层级关系。如果没有任何明确的相反信息,枚举命名应仅仅被视为完成不同名称的方式。
如本文中所使用的,表达方式“被配置为”可意味着处理电路通过软件或硬件配置被配置为或适于执行这里描述的动作中的一个或多个。
如本文中所使用的,术语“数量”或“值”可指的是任何类型的数字,诸如二进制、实数、虚数或有理数等。此外,“数量”或“值”可以是一个或多个字符,诸如字母或字母串。此外,“数量”或“值”可以由位串表示。
如本文所使用的,表达方式“可以”和“在一些实施例中”通常被用于指示所描述的特征可以与这里公开的任何其它实施例组合。
在附图中,通常使用点线或虚线绘制可能仅在一些实施例中存在的特征。
如本文所使用的,表达方式“传送”和“发送”通常是可互换的。
当使用词语“包含”或“包括”时,应将其解释为非限制性的,即意味着“至少包含”。
这里的实施例不限于上述实施例。可以使用各种替代、修改和等效物。因此,上述实施例不应被视为限制本公开的范围,该范围由附加权利要求限定。

Claims (12)

1.一种用于对包含多行像素的数字图像的像素值进行编码以实现数字图像的无损压缩的编码器(131;800),其中,编码器(131;800)被配置为:对于所述多行像素中的每一行,
获得(701)所述行的未编码像素值;以及
对于所述行的一个或多个像素中的每一个像素,确定(702)在数字图像的所述无损压缩中使用哪种编码来对像素(x)的未编码像素值进行编码,所述确定基于所述未编码像素值与所述行中的其它最近相邻像素(N1,N2)的未编码像素值的关系,其中所述最近相邻像素(N1,N2)是沿着所述行的某个方向上的两个最近的先前像素(N1,N2)。
2.如权利要求1所述的编码器(131;800),其中,如果所述行的一个或多个随后出现的像素中的每一个像素的所述未编码像素值与所述最近相邻像素(N1,N2)的未编码像素值相同,则确定使用游程编码RLC对所述一个或多个随后出现的像素的像素值进行编码。
3.如权利要求1至2中的任一项所述的编码器(131;800),其中,至少一些像素值基于使用所述最近相邻像素(N1,N2)的预测和所述预测的计算残值(ε)被编码,该计算的残值(ε)基于未编码像素值与所述最近相邻像素中的至少一个的未编码像素值的关系。
4.如权利要求1至2中的任一项所述的编码器(131;800),其中,如果所述未编码像素值处于所述最近相邻像素(N1,N2)的所述未编码像素值之间,则确定使用第一类型的编码对所述未编码像素值进行编码,并且如果所述未编码像素值低于或高于所述最近相邻像素(N1,N2)的所述未编码像素值中的任何一个,则确定使用另一种第二类型的编码对所述未编码像素值进行编码。
5.如权利要求4所述的编码器(131;800),其中,所述第二类型的编码是被配置为使用上下文无关的k值和预定的最大码长的Golomb-Rice编码。
6.如权利要求1所述的编码器(131;800),其中,编码器(131;800)进一步被配置为:
基于所述确定,提供(703)编码的像素值,这些编码的像素值是由编码器(131;800)编码的所述未编码像素值和数字图像的所述无损压缩的一部分。
7.如权利要求6所述的编码器(131;800),其中,编码器(131;800)进一步被配置为:
提供(704)包含于多个等长数据字中的每一行的编码像素值。
8.如权利要求7所述的编码器(131;800),其中,一行的不同像素的编码像素值共享所述等长数据字中的数据字,并且不同行的编码像素值在所述等长数据字中的单独的数据字中。
9.如权利要求7-8中的任一项所述的编码器(131;800),其中,编码器(131;800)进一步被配置为:
与每一行相关联地提供(705)在包含所述编码像素值的所述等长数据字内识别行的起始位置的相应标识符。
10.如权利要求9所述的编码器(131;800),其中,标识符作为数字图像的每行包含一个值的数据结构中的单独的值被提供,每个值指示相应行关于所述等长数据字中的参考数据字的起始位置。
11.一种由编码器(131;800)执行的用于对包含多行像素的数字图像的像素值进行编码以实现数字图像的无损压缩的方法,其中,所述方法包括:对于所述多行中的每一行,
获得(701)所述行的未编码像素值;以及
对于所述行的一个或多个像素中的每一个像素,确定(702)在数字图像的所述无损压缩中使用哪种编码来对像素(x)的未编码像素值进行编码,所述确定基于所述未编码像素值与所述行的其它最近相邻像素(N1,N2)的未编码像素值的关系,其中所述最近相邻像素(N1,N2)是沿着所述行的某个方向上的两个最近的先前像素(N1,N2)。
12.一种计算机可读存储介质,包括指令,所述指令在被编码器执行时使得所述编码器执行如权利要求11所述的方法。
CN202010360614.6A 2019-05-02 2020-04-30 关于实现数字图像的无损压缩的像素值编码方法及编码器 Active CN111885385B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP19172426.9 2019-05-02
EP19172426.9A EP3734973B1 (en) 2019-05-02 2019-05-02 Method and encoder relating to encoding of pixel values to accomplish lossless compression of a digital image

Publications (2)

Publication Number Publication Date
CN111885385A CN111885385A (zh) 2020-11-03
CN111885385B true CN111885385B (zh) 2023-11-28

Family

ID=66397072

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010360614.6A Active CN111885385B (zh) 2019-05-02 2020-04-30 关于实现数字图像的无损压缩的像素值编码方法及编码器

Country Status (5)

Country Link
US (1) US11645785B2 (zh)
EP (1) EP3734973B1 (zh)
JP (1) JP6985452B2 (zh)
KR (1) KR102400372B1 (zh)
CN (1) CN111885385B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112565793B (zh) * 2020-11-26 2022-11-01 华侨大学 一种基于预测差值分类熵编码的图像无损压缩方法
CN112887729B (zh) * 2021-01-11 2023-02-24 西安万像电子科技有限公司 图像编解码的方法和装置
FR3124673B1 (fr) * 2021-06-24 2023-09-29 Valeo Vision Procédé de gestion d'une image dans un dispositif d'éclairage automobile et dispositif d'éclairage automobile
CN113566855A (zh) * 2021-08-11 2021-10-29 珠海格力电器股份有限公司 编码盘、编码器、电机及编码器工作方法
CN116405574B (zh) * 2023-06-08 2023-08-08 中国人民解放军总医院第二医学中心 一种远程医疗图像优化通讯方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1653746A2 (en) * 2004-10-29 2006-05-03 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
CN1783144A (zh) * 2004-10-29 2006-06-07 微软公司 使用后向自适应规则进行整数数据的无损自适应Golomb/Rice编码和解码
CN101404765A (zh) * 2008-10-24 2009-04-08 宁波大学 一种交互式多视点视频编码方法
CN102970531A (zh) * 2012-10-19 2013-03-13 西安电子科技大学 Jpeg-ls近无损图像压缩编码器硬件实现方法
CN104038765A (zh) * 2014-06-26 2014-09-10 天津大学 面向硬件实现的快速高效无损图像压缩方法
JP2015195430A (ja) * 2014-03-31 2015-11-05 株式会社メガチップス データ記憶制御装置およびデータ記憶制御方法
CN106803959A (zh) * 2017-02-28 2017-06-06 腾讯科技(深圳)有限公司 视频图像编码、解码方法及装置
CN109040789A (zh) * 2017-04-08 2018-12-18 腾讯科技(深圳)有限公司 一种图片文件处理方法
CN109379598A (zh) * 2018-09-12 2019-02-22 合肥埃科光电科技有限公司 一种基于fpga实现的图像无损压缩方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8606949B2 (en) * 2005-04-20 2013-12-10 Jupiter Systems Interconnection mechanism for multiple data streams
JP2006311055A (ja) 2005-04-27 2006-11-09 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム
JP4468858B2 (ja) 2005-06-01 2010-05-26 オリンパスイメージング株式会社 データ符号化装置、データ符号化方法、プログラム
US9686560B2 (en) 2015-02-23 2017-06-20 Teledyne Dalsa, Inc. Lossless data compression and decompression apparatus, system, and method

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1653746A2 (en) * 2004-10-29 2006-05-03 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
CN1783144A (zh) * 2004-10-29 2006-06-07 微软公司 使用后向自适应规则进行整数数据的无损自适应Golomb/Rice编码和解码
CN101404765A (zh) * 2008-10-24 2009-04-08 宁波大学 一种交互式多视点视频编码方法
CN102970531A (zh) * 2012-10-19 2013-03-13 西安电子科技大学 Jpeg-ls近无损图像压缩编码器硬件实现方法
JP2015195430A (ja) * 2014-03-31 2015-11-05 株式会社メガチップス データ記憶制御装置およびデータ記憶制御方法
CN104038765A (zh) * 2014-06-26 2014-09-10 天津大学 面向硬件实现的快速高效无损图像压缩方法
CN106803959A (zh) * 2017-02-28 2017-06-06 腾讯科技(深圳)有限公司 视频图像编码、解码方法及装置
CN109040789A (zh) * 2017-04-08 2018-12-18 腾讯科技(深圳)有限公司 一种图片文件处理方法
CN109379598A (zh) * 2018-09-12 2019-02-22 合肥埃科光电科技有限公司 一种基于fpga实现的图像无损压缩方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
An Efficient ECG Lossless Compression System for Embeded Platforms With Telemedicine Applications;TsungHan Tsai等;IEEE Access;全文 *
Fast lossless image compression with 2D Golomb parameter adaptation based on JPEG-LS;Z. Wang等;20th European Signal Processing Conference;全文 *
Lossless compression of continuous-tone images;Bruno Carpentieri等;Proceedings of IEEE;全文 *
TsungHan Tsai ; YuHsuan Lee,YuYu Lee.Design and Analysis of High Throughput Lossless Image Compression Engine Using VLSI Oriented FELICS Algorithm.IEEE Transactions on Very Large Scale Intergration (VLSI) Systems.2010,摘要,正文第II节第C部分-第IV部分第D节,图1,5,8,9. *
基于FPGA实现JPEG-LS无损压缩算法的研究;李长兴;中国优秀硕士学位论文全文数据库;全文 *

Also Published As

Publication number Publication date
CN111885385A (zh) 2020-11-03
KR102400372B1 (ko) 2022-05-23
KR20200127899A (ko) 2020-11-11
JP6985452B2 (ja) 2021-12-22
EP3734973B1 (en) 2023-07-05
US20200349741A1 (en) 2020-11-05
JP2020184762A (ja) 2020-11-12
EP3734973A1 (en) 2020-11-04
US11645785B2 (en) 2023-05-09

Similar Documents

Publication Publication Date Title
CN111885385B (zh) 关于实现数字图像的无损压缩的像素值编码方法及编码器
US11895307B2 (en) Block-based predictive coding for point cloud compression
US5903676A (en) Context-based, adaptive, lossless image codec
US10893280B2 (en) Refined entropy coding for level maps
RU2654200C1 (ru) Усовершенствованное кодирование содержимого экрана с улучшенными способами кодирования таблицы палитры и индексной карты
EP0066697B1 (en) A method and system for compressing grey scale image data
JP6923677B2 (ja) ビデオ圧縮におけるエントロピーコーディングのための選択的ミキシング
US5045852A (en) Dynamic model selection during data compression
US4316222A (en) Method and apparatus for compression and decompression of digital image data
US7304590B2 (en) Arithmetic decoding apparatus and method
JPH05300382A (ja) ビットプレーン符号化方法及び装置
WO1997034375A1 (en) Method for reducing storage requirements for digital data
US10506242B2 (en) Efficient context model computation design in transform coefficient coding
US20050152610A1 (en) Image encoding apparatus, image decoding apparatus, and their control method, and computer program and computer-readable storage medium
CN115211117A (zh) 用于在基于几何形状的点云压缩中的预测变换的预测器索引信令
JP3087835B2 (ja) 画像符号化方法および装置ならびに画像復号方法および装置
AU2002230101A2 (en) Moving picture information compressing method and its system
Memon et al. Lossless compression of RGB color images
Hussin et al. A comparative study on improvement of image compression method using hybrid DCT-DWT techniques with huffman encoding for wireless sensor network application
US10869060B2 (en) Efficient context model computation design in transform coefficient coding
JP3985465B2 (ja) 画像符号化装置、画像復号装置および画像符号化復号装置ならびにそれらの方法
KR102109768B1 (ko) Uhd 영상의 고속 처리를 위한 cabac 이진 산술 부호화기
Hinnerson A Resource Efficient, HighSpeed FPGA Implementation of Lossless Image Compression for 3D Vision
KR20230075248A (ko) 데이터 압축 장치, 데이터 압축 시스템 및 데이터 압축 방법
JP4526069B2 (ja) 画情報の算術符号化装置及び画情報の算術復号化装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant