CN113228627B - 图像处理系统和方法 - Google Patents

图像处理系统和方法 Download PDF

Info

Publication number
CN113228627B
CN113228627B CN201880100487.7A CN201880100487A CN113228627B CN 113228627 B CN113228627 B CN 113228627B CN 201880100487 A CN201880100487 A CN 201880100487A CN 113228627 B CN113228627 B CN 113228627B
Authority
CN
China
Prior art keywords
plane
bit
query
decoding
channel
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
CN201880100487.7A
Other languages
English (en)
Other versions
CN113228627A (zh
Inventor
孙智勇
朱竹青
陈琦
方伟
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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Publication of CN113228627A publication Critical patent/CN113228627A/zh
Application granted granted Critical
Publication of CN113228627B publication Critical patent/CN113228627B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/635Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by filter definition or implementation details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • 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
    • 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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

提供一种解码已编码码流的方法。该方法可以包括获得所述已编码码流。该方法可以包括基于所述已编码码流确定多个码块。该方法可以包括为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围从最高有效位平面到最低有效位平面。该方法可以包括为所述多个位平面中的每一个确定至少一个查询平面。该方法还可以包括基于所述至少一个查询平面解码所述多个位平面中的每一个。

Description

图像处理系统和方法
技术领域
本申请一般涉及图像处理技术,更具体地,涉及解码已编码图像数据的系统和方法。
背景技术
在数字时代,数字图像可以在人们的日常生活中为他们提供丰富的信息。例如,数字图像可以存储和显示各种信息设备(例如,手机、计算机、显示器、电视、照相机等)中的信息。在数字成像领域中,图像压缩技术可以应用于图像存储、处理、显示和传输。传统的图像压缩技术可以涉及图像编码和图像解码。一些图像压缩技术,例如JPEG2000,已经由ISO(国际标准化组织)标准化。在某些情况下,在JPEG2000中的图像编码或解码期间,可能需要花费时间执行一些不必要的冗余操作(例如,逐位平面扫描)。因此,希望开发高效的图像处理(例如,图像编码或解码)的系统和方法。
发明内容
本申请的一个方面提供了一种解码已编码码流的方法。该方法可以在具有至少一个处理器和至少一个计算机可读存储介质的计算设备上实现。该方法可以包括以下操作中的一个或多个。所述至少一个处理器可以获得所述已编码码流。所述至少一个处理器可以基于所述已编码码流确定多个码块。所述至少一个处理器可以为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围为从最高有效位平面到最低有效位平面。所述至少一个处理器可以为所述多个位平面中的每一个确定至少一个查询平面。所述至少一个处理器可以基于所述至少一个查询平面解码所述多个位平面中的每一个。
在一些实施例中,所述至少一个查询平面可以包括对应于有效性传播通道的第一查询平面、对应于幅度细化通道的第二查询平面或对应于清理通道的第三查询平面中的至少一个。
在一些实施例中,所述至少一个处理器可以基于第一有效性平面和第一未编码平面确定所述第一查询平面。
在一些实施例中,所述至少一个处理器可以基于第二有效性平面和第二未编码平面确定所述第二查询平面。
在一些实施例中,所述至少一个处理器可以基于第三未编码平面确定所述第三查询平面。
在一些实施例中,所述第一查询平面、所述第二查询平面和所述第三查询平面可以互相关联。
在一些实施例中,所述至少一个处理器可以沿所述有效性传播通道、所述幅度细化通道或所述清理通道解码所述多个位平面中的每一个。
在一些实施例中,所述至少一个处理器可以沿着所述清理通道解码所述最高有效位平面。所述至少一个处理器可以沿所述有效性传播通道、所述幅度细化通道和所述清理通道解码所述多个位平面中除所述最高有效位平面外的其他位平面。
在一些实施例中,对于所述多个位平面中除所述最高有效位平面外的其他位平面中的每一个,所述至少一个处理器可以预测关于沿所述最高有效性通道的当前解码位的决策。所述至少一个处理器可以通过根据第一搜索算法基于预测的决策搜索所述第一查询平面,解码位平面对应于所述最高有效性通道的第一位。所述至少一个处理器可以通过根据第二搜索算法搜索所述第二查询平面,解码位平面对应于所述幅度细化通道的第二位。所述至少一个处理器可以通过根据第三搜索算法搜索所述第三查询平面,解码位平面对应于所述清理通道的第三位。
在一些实施例中,所述第一搜索算法、所述第二搜索算法或所述第三搜索算法可以包括顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法中的至少一个。
在一些实施例中,所述第一搜索算法、所述第二搜索算法和所述第三搜索算法可以是相同或不同的。
在本申请的另一方面,提供了一种解码已编码码流的系统。该系统可以包括存储指令集的存储设备和与所述存储设备通信的至少一个处理器。当执行所述指令集时,所述至少一个处理器可被配置成使系统执行以下操作中的一个或多个。所述至少一个处理器可以获得所述已编码码流。所述至少一个处理器可以基于所述已编码码流确定多个码块。所述至少一个处理器可以为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围为从最高有效位平面到最低有效位平面。所述至少一个处理器可以为所述多个位平面中的每一个确定至少一个查询平面。所述至少一个处理器可以基于所述至少一个查询平面解码所述多个位平面中的每一个。
本申请的又一方面提供了一种非暂时性计算机可读介质。所述非暂时性计算机可读介质存储有指令集,当所述指令集由系统的至少一个处理器执行时,可以使所述系统实现方法。该方法可以包括以下操作中的一个或多个。所述至少一个处理器可以获得已编码码流。所述至少一个处理器可以基于所述已编码码流确定多个码块。所述至少一个处理器可以为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围为从最高有效位平面到最低有效位平面。所述至少一个处理器可以为所述多个位平面中的每一个确定至少一个查询平面。所述至少一个处理器可以基于所述至少一个查询平面解码所述多个位平面中的每一个。
本申请的一部分附加特性可以在以下描述中进行说明。通过对以下描述和相应附图的研究或者对实施例的生产或操作的了解,本申请的一部分附加特性对于本领域技术人员是明显的。本申请的特征可以通过实践或使用下文讨论的详细示例中阐述的方法、工具和组合的各个方面来实现和获得。
附图说明
本申请将通过示例性实施例进行进一步描述。这些示例性实施例将通过附图进行详细描述。附图未按比例绘制。这些实施例是非限制性的示例性实施例,在这些实施例中,各图中相同的编号表示相似的结构,其中:
图1是根据本申请一些实施例所示的示例性图像处理系统的示例性应用的示意图;
图2是根据本申请一些实施例所示的示例性图像处理系统的示意图;
图3是根据本申请一些实施例所示的示例性图像解码引擎的示意图;
图4A是根据本申请一些实施例所示的示例性查询平面确定模块的示意图;
图4B是根据本申请一些实施例所示的示例性解码模块的示意图;
图5是根据本申请一些实施例所示的示例性JPEG2000图像压缩引擎的示意图;
图6是根据本申请一些实施例所示的由三次小波变换产生的示例性子带的示意图;
图7是根据本申请一些实施例所示的示例性码块的示意图;
图8A-8C是根据本申请一些实施例所示的示例性位平面分解过程的示意图;
图9是根据本申请一些实施例所示的码块的位平面的示例性扫描方式的示意图;
图10是根据本申请一些实施例所示的图像编码的示例性过程的流程图;
图11是根据本申请一些实施例所示的图像解码的示例性过程的流程图;
图12是根据本申请一些实施例所示的确定对应于有效性传播通道的第一查询平面的示例性过程的示意图;
图13是根据本申请一些实施例所示的确定对应于幅度细化通道的第二查询平面的示例性过程的示意图;
图14是根据本申请一些实施例所示的确定对应于清理通道的第三查询平面的示例性过程的示意图;
图15A-15C是根据本申请一些实施例所示的图像解码的示例性流程的示意图;
图16是根据本申请一些实施例所示的示例性图像解码装置的示意图;
图17是根据本申请一些实施例所示的沿有效性传播通道解码时缺少预测的示例性流水线的示意图;以及
图18是根据本申请一些实施例所示的沿有效性传播通道解码时包含预测的示例性流水线的示意图。
具体实施方式
在下面的详细描述中,为了提供对相关申请的透彻理解,以示例的方式阐述了许多具体细节。然而,本领域技术人员应该明白,可以在没有这些细节的情况下实施本申请。在其他情况下,众所周知的方法、过程、系统、组件和/或电路已经在相对较高的层次上进行了描述,而没有详细说明,以避免不必要地模糊本申请的方面。对于本领域的普通技术人员来讲,显然可以对所披露的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请不限于所示的实施例,而是符合与申请专利范围一致的最广泛范围。
可以理解,本文中使用的术语“系统”、“引擎”、“模块”和/或“单元”是一种以升序区分不同级别的不同组件、要素、部分、段或部件的方法。然而,如果可以达到相同的目的,这些术语也可以被其他表达替换。
可以理解,除非上下文另有明确说明,当设备、单元或模块被称为“在”、“连接到”或“耦合到”另一设备、单元或模块时,它可以直接在、连接到或耦合到另一设备、单元或模块,或与之通信,或者可以存在中间装置、单元或模块。在本申请中,术语“和/或”可包括任何一个或以上相关所列条目或其组合。在本申请中,术语“和/或”可包括任何一个或以上相关所列条目或其组合。
本申请中所使用的术语仅出于描述特定示例和实施例的目的,而非限制性的。如本申请使用的单数形式“一”、“一个”及“该”同样可以包括复数形式,除非上下文明确提示例外情形。还可以理解,当在本申请中使用术语“包括”和/或“包含”时,其指定整数、装置、行为、声明的特征、步骤、要素、操作和/或组件的存在,但不排除一个或多个其他整数、装置、行为、特征、步骤,元件、操作、组件和/或其组合的存在或添加。
出于说明目的,提供以下描述以帮助更好地理解图像压缩方法或系统。应当注意,“图像”可指静止图片或视频帧。应当理解,这并不旨在限制本申请的范围。对于本领域普通技术人员,可以在本申请的指导下扣除一定数量的变化、变更和/或修改。这些变化、变更和/或修改不偏离本申请的范围。
可以提供本申请的各种实施例作为被配置为执行图像编码和图像解码的图像处理系统。在一些实施例中,该系统可以编码源图像数据以生成压缩数据(例如,码流)。在一些实施例中,该系统可以解码压缩后的码流以重构图像数据。例如,该系统可以将码流分解为多个码块。该系统可以确定码块的多个位平面。该系统可以沿解码通道(例如,有效性传播通道、幅度细化通道和清理通道)对所述多个位平面中的每一个进行解码。在一些实施例中,对于沿有效位传播通道的解码,该系统可以根据第一查询平面解码位平面。第一查询平面可以包括关于沿有效性传播通道要解码的第一系数位的信息。可以基于第一有效性平面和第一未编码平面确定第一查询平面。在一些实施例中,该系统可以在解码系数位之前预测有关该系数位的决策。在一些实施例中,对于沿幅度细化通道的解码,该系统可以根据第二查询平面解码位平面。第二查询平面可以包括关于沿幅度细化通道要解码的第二系数位的信息。可以基于第二有效性平面和第二未编码平面确定第二查询平面。在一些实施例中,对于沿清理通道的解码,该系统可以根据第三查询平面解码位平面。第三查询平面可以包括关于沿清理通道要解码的第三系数位的信息。可以基于第三未编码平面确定第三查询平面。通过搜索查询平面而不是在每个位平面的解码期间中逐位扫描来确定要解码的系数位是高效的。在一些实施例中,在每个位平面的解码期间,该系统还可以并行地解码系数位。这可以减少或避免处理连续系数位之间的等待期,从而进一步提高效率。出于说明目的而不旨在限制,参考图像压缩标准和编码系统JPEG2000提供以下描述用于说明目的。可以理解,本文公开的系统和方法的实施例可以应用于其他图像压缩标准和/或编码系统。
图1是根据本申请一些实施例所示的示例性图像处理系统的示例性应用的示意图。图像处理系统110可用于各种领域,包括例如安全技术、运输管理、监狱系统、通信业、能源领域、医疗、教育系统、金融服务等或其任意组合。
图像处理系统110可以被配置成处理图像数据,例如图像编码或图像解码。图像处理系统110或其部分可以在数码相机中实现。在一些实施例中,图像处理系统110可以包括执行本申请中公开的操作的一个或多个处理器。所述处理器可以包括微控制器、微处理器、精简指令集计算机(RISC)、专用集成电路(ASICs)、专用指令集处理器(ASIP)、中央处理单元(CPU)、图形处理单元(GPU)、物理处理单元(PPU)、微控制器单元、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、高级RISC机器(ARM)、可编程逻辑器件(PLD)或者能够执行一个或多个功能的任意电路或处理器等或其任意组合。
在一些实施例中,图像处理系统110还可以包括被配置为存储数据和/或指令的存储器。在一些实施例中,该存储器可以包括大容量存储设备、可移动存储设备、易失性读写存储器、只读存储器(ROM)等或其任意组合。示例性大容量存储器可以包括磁盘、光盘、固态驱动器等。示例性的可移动存储设备可以包括闪存驱动器、软盘、光盘、存储卡、zip盘、磁带等。示例性的易失性读写内存可以包括随机存取内存(RAM)。示例性的RAM可以包括动态RAM(DRAM)、双数据速率同步动态RAM(DDR-SDRAM)、静态RAM(SRAM)、晶闸管RAM(T-RAM)和零电容RAM(Z-RAM)等。示例性的ROM可包括掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(PEROM)、电可擦除可编程ROM(EEPROM)、光盘ROM(CD-ROM)和数字多功能磁盘ROM等。在一些实施例中,该存储器可被配置成存储一个或多个程序和/或指令,所述程序和/或指令可由图像处理系统110的处理器执行,以执行本申请中描述的示例性方法。例如,该存储器可以被配置为存储由图像处理系统110的处理器执行的程序和/或指令,所述程序和/或指令用于编码图像数据、解码图像数据和/或缩放图像。例如,ROM可以存储图像处理系统110编码数据的编码模式(例如,编码)。
在一些实施例中,可以从图像中,例如静止图像或视频的视频帧中,导出图像数据。所述图像可以包括数字图像、光学图像、模拟图像等或其任意组合。数字图像可以包括光栅图像、位图图像、向量图像、由数字表示的任意其他图像等或其任意组合。在一些实施例中,图像处理系统110可以通过网络150与诸如图像捕获设备120、存储设备130或其他外部设备的其他设备通信。
图像捕获设备120可以被配置为捕获图像。所述图像可以包括相应的图像数据。仅作为示例,图像捕获设备120可以包括被配置为获得静止图像或视频的数码相机。所述数码相机可以包括2D相机、3D相机、全景相机、VR相机、网络相机、即时成像相机等或其任意组合。所述数码相机可以安装在医疗成像设备、夜视设备、雷达系统、声纳系统、电子眼、摄像机、热成像设备、智能手机、平板电脑、笔记本电脑、可穿戴设备(例如,3D眼镜)、机器人的眼睛等或其任意组合中。所述数码相机可以包括光学传感器、无线电探测器、人造视网膜、镜子、望远镜等或其任意组合。例如,所述数码相机可以包括小型相机、手动对焦相机、自动对焦相机、长焦相机、广角相机、单镜头反射(SLR)相机、数字单镜头反射(DSLR)相机等或其任意组合。
在一些实施例中,图像捕获设备120可以包括一个或多个成像传感器。所述成像传感器可以检测和/或传输图像数据。所述成像传感器可以包括模拟成像传感器和/或数字成像传感器。成像传感器可以包含摄像机管、真空管、(CCD)或有源像素传感器(例如,互补金属氧化物半导体()或N型金属氧化物半导体())等或其任意组合。在一些实施例中,所述成像传感器可被滤色镜阵列(CFA)覆盖以获得滤色过的图像数据。由具有CFA的成像传感器生成的图像数据可以被指定为CFA图像数据。CFA可以将具有特定波长范围的光过滤到所述成像传感器的像素传感器。CFA可包括拜尔滤色镜、RGB(红、绿和蓝)滤色镜、CYYM(青色、黄、黄和洋红)滤色镜、CYGM(青色、黄、绿和洋红)滤色镜、RGBW(红、绿、蓝和白)滤色镜(例如,RGBW#1、RGBW#2、RGBW#3)。最常见的CFA可以是拜尔滤色镜。拜尔滤色镜可以在正方形网格上排列红色、绿色和蓝色滤光镜。所述正方形网格可由50%的绿色滤光片、25%的红色滤光片和25%的蓝色滤光片来排列。由具有拜尔滤色镜的成像传感器生成的图像数据被指定为拜尔图像数据。
在一些实施例中,由图像捕获设备120获得和/或收集的数据可以包括原始数据、处理过的数据、控制数据、交互数据、图像数据、视频数据、模拟数据、数字数据等或其任意组合。在一些实施例中,所述图像数据可以是一维图像、二维图像(例如,照片)、三维图像或屏幕显示图像等或其任意组合。在一些实施例中,所述图像数据可以指图像的像素、纹素、面元或体素的值。
在一些实施例中,图像捕获设备120可以基于具有各种波长和/或频率的电磁波获得和/或收集图像数据。在一些实施例中,所述电磁波可包括无线电波、微波、红外辐射、可见光、紫外线辐射、X射线、伽马射线等或其任意组合。
存储设备130可以被配置为存储系统100中的其他组件(系统100中的组件,包括图像处理系统110、图像捕获设备120、存储设备130和/或显示设备140)可以访问的信息。所述信息可以包括数据、程序、软件、算法、文本、数字等或其任意组合。所述信息可以从图像处理系统110、图像捕获设备120、显示设备140、网络150或者其他模块或单元等或其任意组合获得。在一些实施例中,存储设备130可以是硬盘驱动器、固态驱动器、可移动存储驱动器。仅作为示例,所述可移动存储驱动器可以包括闪存磁盘驱动器、硬盘驱动器、磁带、CD-ROM、云存储、光盘驱动器等或其任意组合。
显示设备140可以被配置为显示信息。在一些实施例中,显示设备140可以包括键盘、液晶显示器(LCD)、基于发光二极管(LED)的显示器、平板或曲面面板显示器、阴极射线管(CRT)、3D显示器、等离子显示面板、触摸屏、鼠标、遥控器等或其任意组合。在一些实施例中,显示在显示设备140上的信息可以包括图像、用户界面、值、文本、控制信息、程序、软件、算法等或其任意组合。显示的图像可以包括原始图像、压缩图像、缩放图像等。所述用户界面可以是用户交互界面、图形用户界面或用户定义的界面等。
网络150可以被配置为促进系统100的组件之间的通信,系统100的组件包括图像处理系统110、图像捕获设备120、存储设备130和/或显示设备140。例如,数据可以通过网络150从图像捕获设备120传输至图像处理系统110。作为另一示例,由图像处理系统110处理和/或生成的数据可以通过网络150传输至存储器130和/或显示设备140。在一些实施例中,网络150可以是有线网络、纳米级网络、近场通信(NFC)、身体区域网(BAN)、个人区域网(PAN,例如蓝牙、Z波、紫峰网络、无线USB)、近距离区域网(NAN)、本地无线网、主干网、城域网(MAN)、广域网(WAN)、因特网区域网(IAN、或云)等或其任意组合。在一些实施例中,图像处理系统110、图像捕获设备120、存储设备130、显示设备140和网络150可以直接或间接地相互连接或通信。
在一些实施例中,可以集成图像处理系统110、图像捕获设备120、存储设备130、显示设备140和网络150中的两个或以上组件。在一些实施例中,图像处理系统110可以在图像捕获设备120、存储设备130、显示设备140或网络150或其任意组合中实现。
在一些实施例中,图像处理系统110、图像捕获设备120、存储设备130和/或显示设备140可以互相集成。例如,图像处理系统110和存储设备130可以集成到单个设备中。例如,图像处理系统110和图像捕获设备120可以集成到单个设备中。在一些实施例中,上述设备中的一个或多个可以互相远离。仅作为示例,图像处理系统110可以在云平台(例如,云计算平台或云存储平台)上实现。
应当理解,图1中所示的设备可以以各种方式实现。例如,在一些实施例中,可以通过硬件、软件或其组合来实现这些设备。这里,硬件可以由专用逻辑实现;软件可以存储在存储器中,该系统可以通过适当的指令执行,例如通过微处理器或专用设计硬件执行。本领域技术人员可以理解的,上述方法和系统可以通过计算机中的可执行指令和/或处理器中的控制代码来实现,例如,通过在诸如只读存储器(固件)之类的可编程存储器中、在诸如磁盘、CD、DVD-ROM之类的载体介质中或者在诸如光信号载体或电信号载体之类的数据载体中提供的代码来实现。本申请中的系统和模块可以通过超大规模集成电路中的可编程硬件设备中的硬件电路、门阵列芯片、半导体如晶体管、现场可编程门阵列、可编程逻辑器件、由各种处理器执行的软件或其组合(例如,固件)来实现。
图2是根据本申请一些实施例所示的示例性图像处理系统的示意图。在一些实施例中,图2所示的图像处理系统110可以在计算设备上实现。计算设备可以包括个人计算机(PC)、服务器、移动设备或者其他类型的工作站或终端设备。通常,如本文中所使用的词语“引擎”、“模块”和“单元”是指体现在硬件或固件中的逻辑或者是指软件指令的集合。本文描述的引擎、模块和单元可以实现为软件和/或硬件模块,并且可以存储在任何类型的非暂时性计算机可读介质或其他存储设备中。在一些实施例中,软件模块可以被编译并链接到可执行程序中。可以理解的是,软件模块可以从其它模块或从其自身调用的,和/或可以响应于检测到的事件或中断而被调用。被配置用于在计算设备上执行的软件模块可以在计算机可读介质上提供,例如,在光盘、数字视频光盘、闪存驱动器、磁盘或任意其他有形介质上提供,或者作为数字下载物被提供(最初可以以压缩或可安装的格式存储,该格式在执行之前需要安装、解压缩或解密)。此类软件代码可以部分或全部储存于执行计算设备的内存设备中,并且由计算设备执行。软件指令可以嵌入固件中,例如EPROM中。将进一步理解的是,硬件模块可以由诸如门和触发器之类的连接的逻辑单元组成,和/或由诸如可编程门阵列或处理器之类的可编程单元组成。本文描述的模块或计算设备功能优选地实现为软件模块,但是可以用硬件或固件来表示。通常,这里所描述的模块是指可以与其他模块组合连接或者可以不顾它们的物理组织或存储被划分为子模块的逻辑模块。
参考图2,图像处理系统100可以包括图像数据获得引擎210、图像预处理引擎220、图像编码引擎230、图像解码引擎240、图像缩放引擎250和图像后处理引擎260。
图像数据获得引擎210可以被配置为接收数据。在一些实施例中,所述数据可包括原始数据、处理数据、控制数据、交互数据、图像数据、视频数据、模拟数据、数字数据等或其任意组合。所述图像数据可以从图像(例如,静止图像)或视频(或其视频帧)中获得。例如,所述图像数据可包括彩色图像数据、CFA图像数据、拜尔图像数据、数字图像数据或模拟图像数据等或其任意组合。在一些实施例中,所述数据可以从图像捕获设备120、存储设备130、显示设备140、网络150或能够生成数据的其他设备等或其任意组合获得。
图像预处理引擎220可被配置为预处理接收到的数据。例如,图像预处理引擎220可以预处理从图像获得引擎210接收的源图像数据。具体地,图像预处理引擎220可以执行包括图像平铺、直流电平转换和/或色彩变换在内的预处理操作。图像预处理引擎220可以将整个源图像分割成一个或多个图像片。在一些实施例中,图像片可以包括大小相等的矩形和不重叠块。对于图像片的每个分量(例如,红色分量、绿色分量或蓝色分量),图像预处理引擎220可以通过将图像块分量的采样(即,像素值)减去相同的量来执行直流电平偏移,例如,2P-1,其中P是该分量的深度。在一些实施例中,在直流电平转换后图像预处理引擎220可以对每个图像块执行色彩变换。例如,图像预处理引擎220可以执行可逆色彩变换(RCT)和/或不可逆色彩变换(ICT)。
在一些实施例中,预处理过的数据可由图像编码引擎230、图像缩放引擎250和/或图像后处理引擎260进一步处理。在一些实施例中,预处理过的数据可以存储在本地存储或(通过网络150)存储设备130中。在一些实施例中,图像预处理引擎220可与图像数据获得引擎210、图像编码引擎230、图像缩放引擎240和图像后处理引擎260等或其任意组合通信。在一些实施例中,图像预处理引擎220可与图像编码引擎230或图像后处理引擎260或其任意组合集成。在一些实施例中,图像预处理引擎220可以是可选的。
在一些实施例中,图像编码引擎230可以被配置为编码所述图像数据。在一些实施例中,在JPEG2000中,图像编码引擎230可以对每个预处理过的图像片执行前向变换,例如,二维(2D)小波变换。图像编码引擎230可以通过2D小波变换生成变换系数。在2D小波变换期间,可以生成一个或多个子带(例如,如图6所示)。在一些实施例中,图像编码引擎230可以通过使用标量量化来量化所述变换系数。图像编码引擎230可以将所述变换系数映射到量化系数。所述量化系数可以被编码作为所述压缩码流的一部分。在一些实施例中,在量化之后图像编码引擎230可以执行熵编码。例如,图像编码引擎230可以将每个子带划分为不重叠的码块。所述码块可以作为熵编码的输入。在一些实施例中,图像编码引擎230可以独立地编码每个码块,而不参考其他码块。码块可以被分解为范围为从最高有效位平面(MSB)到最低有效位平面(LSB)的一个或多个位平面。在一些实施例中,对于每个码块,图像编码引擎230可以对该码块的每个位平面执行位平面编码。在一些实施例中,图像编码引擎230可以沿着有效性传播道(SIG通道)、幅度细化通道(REF通道)和/或清除通道(CLN通道)编码位平面。在一些实施例中,在位平面编码之后图像编码引擎230可以执行算术编码。图像编码引擎230可以通过熵编码(例如,位平面编码和算术编码)生成压缩码流。所述压缩码流可以被存储和/或发送至图像处理系统110的其他组件(例如,图像解码引擎240)。
在一些实施例中,图像解码引擎240可被配置为解码图像数据(例如,压缩码流)。在一些实施例中,如图3所示,图像解码引擎240可以包括诸如码流获得模块310、码块确定模块320、位平面确定模块330、查询平面确定模块340、搜索模块350和/或解码模块360的功能块。
具体地,码流获得模块310可以从图像编码引擎230获得所述已编码码流。所述码流可以指示关于所述源图像的每个图像片的多个码块的信息。在一些实施例中,所述码流可以包括主头部和与该主头部对应的多个片流。片流可以指示图像片的信息。片流可以包括片头部和对应于该片头部的数据包流。数据包流可以指示包括在图像片中的数据包的信息。数据包可以包括数据包头部和与该数据包头部对应的压缩数据。在一些实施例中,数据包可以包括一个或多个码块。因此,数据包中的压缩数据可以指示对应于一个或多个码块的已编码数据。
在一些实施例中,码块确定模块320可以基于获得的码流确定多个码块。例如,码块确定模块320可以通过解析所述码流获得所述多个码块的压缩数据。具体地,码块确定模块320可以获得数据包头部,并确定由该数据包头部指示的数据包。码块确定模块320可以进一步确定数据包中包含的多个码块,并获得对应于所述多个码块的压缩数据。
在一些实施例中,位平面确定模块330可以为所述多个码块中的每一个确定多个位平面。例如,位平面确定模块330可以进一步解析多个数据包以确定与所述码块对应的多个位平面。
在一些实施例中,查询平面确定模块340可以为所述多个位平面中的每一个确定至少一个查询平面。在一些实施例中,如图4A所示,查询平面确定模块340还可以包括第一查询平面确定单元402、第二查询平面确定单元404和第三查询平面确定单元406。具体地,第一查询平面确定单元402可以确定与有效性传播通道对应的第一查询平面。第二查询平面确定单元404可以确定与幅度细化通道对应的第二查询平面。第三查询平面确定单元406可以确定与清理通道对应的第三查询平面。
如本文中所使用的,查询平面(例如,第一查询平面1206、第二查询平面1306和第三查询平面1404)可以包括在当前解码通道(例如,有效性传播通道、幅度细化通道或清理通道)期间要解码的位平面的系数位的二维位置数组。在一些实施例中,查询平面可以指示要解码的系数位。在查询平面中,可以使用元素的二进制值变量来指示系数位是否需要被解码。例如,假设q[i,j]表示查询平面的元素,其中,i指示查询平面在水平方向上的位置,j指示查询平面在垂直方向上的位置。如果元素q[i,j]的值是1,这意味着q[i,j]对应的系数位可以需要被解码。作为另一个例子,如果元素q[i,j]的值是0,这意味着q[i,j]对应的系数位可以不需要被解码。
在一些实施例中,第一查询平面确定单元402可以基于第一有效性平面和第一未编码平面第一查询平面。第一查询平面可以包括要沿有效性传播通道要解码的第一系数位。如图12所示,第一查询平面确定单元402可以通过对第一有效性平面1202和第一未编码平面1204执行逻辑操作确定第一查询平面1206。所述逻辑操作可以包括OR操作、NOT操作和AND操作。
在一些实施例中,第二查询平面确定单元404可以基于第二有效性平面和第二未编码平面确定第二查询平面。第二查询平面可以包括沿幅度细化通道要解码的第二系数位。如图13所示,第二查询平面确定单元404可以通过对第二有效性平面1302和第二未编码平面1304执行逻辑操作(例如,AND操作、OR操作、NOT操作)来确定第二查询平面1306。
在一些实施例中,第三查询平面确定单元406可以基于第三未编码平面确定第三查询平面。第三查询平面可以包括要沿清理通道要解码的第三系数位。如图14所示,第三查询平面确定单元406可以指定第三未编码平面1402作为第三查询平面1404。确定第一查询平面、第二查询平面和第三查询平面的更多描述可以在本申请的其他地方(例如,图11-15C及其说明)找到。
在一些实施例中,搜索模块350可以被配置为搜索要解码的系数位。例如,搜索模块350可以通过根据第一搜索算法搜索第一查询平面获得要解码的第一系数位。搜索模块350可以通过根据第二搜索算法搜索第二查询平面获得要解码的第二系数位。搜索模块350可以通过根据第三搜索算法搜索第三查询平面获得要解码的第三系数位。在一些实施例中,第一搜索算法,第二搜索算法和第三搜索算法可以是相同或不同的。例如,第一搜索算法、第二搜索算法或第三搜索算法可以包括顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法。
在一些实施例中,解码模块360可以基于所述至少一个查询平面对所述多个位平面中的每一个进行解码。在一些实施例中,如图4A所示,解码模块360可以包括第一解码单元408、第二解码单元410和第三解码单元412。具体地,第一解码单元408可以基于第一查询平面沿有效性传播通道对位平面进行解码。第二解码单元410可以基于第二查询平面沿幅度细化通道解码位平面。第三解码单元412可以基于第三查询平面沿清理通道解码位平面。
在一些实施例中,解码模块360可以依次解码范围为从MSB到LSB的所述多个位平面。解码模块360可先仅沿清理通道解码MSB。例如,第三解码单元412可以基于与清理通道对应的查询平面(例如,第三查询平面)解码MSB。第三解码单元412可以解码包含在与MSB关联的第三查询平面中的系数位。在完成MSB的解码之后,解码模块360可以沿着有效性传播通道、幅度细化通道和清理通道中的至少一个解码所述多个位平面中除MSB之外的其他位平面。对于其他位平面中的每一个,第一解码单元408可以首先沿有效位性播通道解码位平面的第一系数位,然后第二解码单元410可以沿幅度细化通道解码位平面的第二系数位,第三解码单元412可以沿清理通道解码位平面的第三系数位。在一些实施例中,在解码第一系数位时第一解码单元408可以执行预测过程。在一些实施例中,解码模块360还可以对每个码块执行逆量化、逆变换。在逆变换之后解码模块360可以生成重构图像数据。关于解码的更多描述可以在本申请的其他地方(例如,图5或图11-16及其描述)找到。
在一些实施例中,图像缩放模块250可以被配置为通过使用一个或多个算法来缩放所述图像数据(例如,所述重构图像数据)。图像缩放是指调整数字图像的大小。所述算法可以包括最近邻插值、双线性和双三次算法、Sinc和Lanczos重采样、盒采样、Mipmap、傅里叶变换方法、边缘定向插值、矢量化、hqx等或其任意组合。图像缩放引擎250可以通过改变图像的像素数量来增大或减小图像的物理尺寸。
在一些实施例中,图像后处理引擎260可以被配置成对图像数据进行后处理。在一些实施例中,所述后处理可以包括渲染、融合、剪裁、二值化、增强等或其任意组合。在一些实施例中,后处理过的数据可由图像后处理引擎260调整。调整可以包括所述图像数据的增强、感兴趣区域的调整等或其任意组合。在一些实施例中,后处理过的数据可用于包括目标获得、监视、夜视、归位、跟踪、热效率分析、环境监测、工业设施检查、遥感温度、短距离无线通信、光谱学、天气预报、皮肤血流观察等或其任意组合在内的用途中。
应当注意,图像处理系统110的上述描述仅仅是出于说明目的而提供的,并不旨在限制本申请的范围。对于本领域的普通技术人员而言,在不脱离本申请的原则的情况下,可以对上述方法和系统的应用形式和细节进行各种修改和改变。例如,码流获得模块310和位平面确定模块330可以集成到单个模块中。作为另一示例,第一解码单元408可以在有效位传播通道的解码期间更新第一查询平面,第二解码单元410可以在幅度细化通道的解码期间更新第二查询平面,第三解码单元412可以在清理通道的解码期间更新第三查询平面。然而,这些变化和修改也落在本申请的范围之内。
为了便于理解本申请,下面描述编码和解码方案(例如,JPEG2000)。JPEG2000由ISO(国际标准化组织)标准化。JPEG2000是一种流行的静止图像压缩技术。图5示出了根据本申请一些实施例的示例性JPEG2000图像压缩引擎。如图5所示,JPEG压缩引擎2000可以包括编码器装置和解码器装置。编码器装置可以被配置成编码图像数据。解码器装置可以被配置成解码由编码器编码的图像数据。
源图像数据可以被输入到编码器装置中。源图像数据可以由预处理单元进行预处理(502)。在一些实施例中,所述预处理可以包括图像平铺、直流电平转换和色彩变换。预处理单元可以将整个源图像分割成一个或多个图像片。在一些实施例中,图像片可以包括大小相等的矩形和不重叠块。对于图像片的每个分量(例如,红色分量、绿色分量或蓝色分量),直流电平转换意味着将图像片的分量的采样(即,像素值)减去相同的量,例如2P-1,其中P是该分量的深度。分量的深度(例如,色彩深度)也被称为位深,位深是用于色彩分量的位数。在一些实施例中,在直流电平转换之后预处理单元可以对每个图像片执行色彩变换。JPEG2000中定义了两种色彩变换。一种是可逆色彩变换(RCT),它是整数到整数和用于无损编码的变换。另一种是不可逆色彩变换(ICT),它与RGB到YCbCr变换相同。在一些实施例中,RCT可以根据等式(1)表示如下:
Figure BDA0003131169770000121
在一些实施例中,RCT可以根据等式(2)表示如下:
Figure BDA0003131169770000122
在等式(1)和等式(2)中,R、G和B分别表示RGB图像的红色、绿色和蓝色分量;Y、Cb和Cr分别表示变换后的色彩分量。
前向变换单元可以对每个预处理过的图像片执行前向变换(504)。所述前向变换可以包括二维(2D)离散小波变换。前向变换单元可以是至少一个低通滤波器和至少一个高通滤波器组合成的滤波器组。前向变换单元可对输入图像数据执行小波变换过程,计算和输出变换系数。可以进一步量化并熵编码变换系数。可以在小波变换过程之后生成多个子带。参考图6,图6示出了根据本申请一些实施例的由三次小波变换产生的示例性子带。如图6所示,图像片600可以被划分为10个子带,这些子带是由三次小波变换产生的。应当注意,图6中的“L”和“H”分别指示低频和高频频带,“L”和“H”旁边的数字分别指示变换次数。例如,“LH-1”指示变换次数为“1”的子带,该子带的频率在水平(x)方向上较低,在垂直(y)方向上较高。
如图6所示,当执行第一小波变换过程时,可以生成具有包括LL-1、LH-1、HL-1和HH-1在内的子带的第一层的图像。当执行第二小波变换过程时,可以生成第二层的图像。第二小波变换过程可以仅对通过之前的小波变换过程获得的层的子带中的LL子带执行。因此,可以将第一层的图像的LL-1子带分解为四个子带,例如,LL-2、LH-2、HL-2和HH-2。当执行第三小波变换过程时,可以生成第三层的图像。可以仅对第二层的图像的LL-2子带执行第三小波变换过程。因此,可以将第二层的图像的LL-2子带分解为四个子带,例如,LL-3、LH-3、HL-3和HH-3。LL-3子带可以呈现图像片600的最低频率分量。
在小波变换之后,变换系数可以由量化单元(506)使用标量量化进行量化。标量量化操作可将给定输入(例如,变换系数)映射到量化系数,该量化系数随后被编码作为所述压缩码流的一部分。量化单元可以将所述变换系数映射到所述量化系数。在一些实施例中,标量量化可根据等式(3)来表示:
Figure BDA0003131169770000123
其中,y是量化单元506的输入,Δb是量化步长,q是量化值(或量化索引),sign(y)表示y的符号,|y|表示y的绝对值,
Figure BDA0003131169770000131
表示不大于
Figure BDA0003131169770000132
的值的最大整数。例如,假定输入变换系数为-21.82,量化步长为10,则量化指数等于
Figure BDA0003131169770000133
即,-2。
在一些实施例中,在量化之后,每个子带可被划分成不重叠的码块,其形成熵编码的输入(508)。每个码块可以具有预定的大小,被用作熵编码的单元。参照图7,图7示出了子带中的示例性码块。如图7所示,虚线矩形块指示码块,例如,码块702。在JPEG20000中,通常,在所有子带中生成每个大小为64×64的码块。例如,对于大小为640×320的子带,总共可以存在50个码块,每个码块的大小为64×64,其中,在水平方向上有10个码块,在垂直方向上有5个码块。每个码块可以独立地被编码,而不参考其他码块。
对应于码块的量化系数可以由熵编码器单元(508)进行熵编码。熵编码器单元可以将码块中的量化系数分解成位平面,并且在至少一个编码通道中对单个位平面进行编码。
图8A-8C示出了根据本申请一些实施例的示例性位平面分解过程。如图8A所示,假定附图标记802表示总共包括16个量化系数的码块,其中包括三个非零系数,其分别取值“+13”、“6”和“+3”。每个非零系数可以被表示为至少一个二进制值变量。附图标号804表示示出非零系数的二进制值变量的示意图。例如,16个量化系数的绝对值中最大的一个是“13”,在二进制表示法中是“1101”。因此,如图8B所示,系数的绝对值的位平面包括四个位平面(例如,806、808、810和812)。四个位平面可以从MSB806排列到LSB812。在一些实施例中,可以生成与量化系数的符号对应的位平面。除了量化系数取负值“-6”之外,量化系数取“0”或正值。因此,符号的位平面如图8C所示,即位平面814。
在JPEG2000中,可以使用EBCOT(具有优化截断的嵌入式块编码)来执行熵编码处理。量化系数的熵编码可以以码块为单位进行操作。码块可以在从最高有效位平面(MSB)到最低有效位平面(LSB)的方向上彼此独立地被编码。如图8B所示,可以将码块802分解为范围为从MSB806到LSB812的位平面。每个位平面的大小可以等于码块的大小,例如,如图8A-8C所示的4×4。子带的码块的每个位平面可以沿着三种类型的编码通道依次被编码,这三种类型的编码通道包括有效性传播通道(在本文中也称为SIG通道)、幅度细化通道(在本文中也称为REF通道)、清理通道(在本文中也称为CLN通道)。每个编码通道可以收集位平面数据的上下文信息。算术编码器可以使用上下文信息来生成压缩位流。
位平面可以从MSB开始被编码到LSB。首先沿CLN通道编码MSB。注意,MSB的编码通道始终是CLN通道。然后,除了MSB之外的其他位平面可以沿着SIG通道、REF通道和CLN按此顺序依次向LSB被编码。
可以按特定顺序扫描码块的每个位平面。图9示出了码块的位平面的示例性扫描模式。如图9所示,码块900可以在每四个垂直系数位处被划分为条纹。每个条纹与码块一样宽。可以按照从码块中的顶部条纹到底部条纹的顺序、每个条纹中从左侧行到右侧行的顺序以及在每行中从顶部到底部的顺序来扫描位。图9所示的箭头的方向指示码块的每个位平面的位的扫描序列。注意,可以沿着每个编码通道在上述扫描序列中扫描所有系数位。
位平面中的每个系数位可以仅在三个编码通道(即,SIG通道、REF通道、CLN通道)之一中被编码。在SIG通道的解码期间,若系数位无效,但是其八个互连邻位中的至少一位是有效的,则可以对该系数位进行编码。在一些实施例中,零编码(ZC)和/或符号编码(SC)可应用于沿SIG通道的位平面编码。
术语“有效性”在被用于描述系数位时表示该系数位具有的状态。所述状态可以包括有效或无效。系数位的状态可取决于在上一位平面中被编码的该系数位的对应系数位若在上一位平面中被编码的系数位的对应系数位中存在至少一个非零系数位,则可以说该系数位为有效。无效的系数位可以被称为无效。在一些实施例中,系数位的“有效性”的初始值是0。当第一非零系数位被编码时,“有效性”的取值可以变为1,这意味着该系数位是“有效的”,且此后对于下一位平面中的对应系数位该系数位可以保持“1”。例如,假定量化系数为“22”,其二进制表示法为“0001010”,其中二进制表示法中的第一位“0”表示MSB,最后一位“0”表示LSB,并且每个二进制值表示范围为从MSB到LSB的系数位。在这种情况下,从MSB到第三位平面系数位的值都是“0”,它们连续地为“无效的”。然而,当系数位取值为“1”的第四位平面被编码时,位状态可以从“无效的”变为“有效的”。随后,无论该系数位的值是“0”还是“1”,位状态都可以保持为“有效的”。与量化系数“00010110”对应的状态可以被表示为“00011111”,其中,“0”表示“无效”,“1”表示“有效”。
在沿REF通道编码期间,可以对在上一位平面中变为有效的所有系数位进行编码。在一些实施例中,幅度细化编码(MRC)可应用于沿REF通道的位平面编码。
在沿CLN通道编码期间,对沿上一通道编码期间未编码的所有系数位进行编码。在一些实施例中,零编码(ZC)、符号编码(SC)和/或行程编码(RLC)可应用于沿CLN通道的位平面编码。
注意,对于不同的编码过程,可以选择零编码、符号编码、幅度细化编码或行程长度编码(RLC)来编码系数位,以及输出与系数位对应的决策和上下文。然后,可以使用算术编码(也称为“MQ编码”)对所述决策和所述上下文进行编码。MQ编码是一种学习型二进制算术编码技术。MQ编码的更多描述可在,例如,题为“ISO/IECFDIS14492,Lossy/LosslessCodingofBi-levelImages,March2000,”的文件等,中找到。在JPEG2000中,为三个编码通道定义了总共19种类型的上下文。这19种上下文可以被表示为0-18(即,0、1、2、…、18)。
在熵编码之后,源图像数据可以被压缩为码流(510)。所述码流可以被存储为JPEG2000中的文件格式。所述码流可以被发送到解码器装置以供解码。JPEG2000中描述的解码可以是编码的镜像过程。例如,可以对所述码流的每个码块的压缩数据进行熵解码(514)。所述熵解码可以包括算术解码和位平面解码。熵解码器可以对每个码块的数据序列执行算术解码,以及执行位平面解码以获得位平面形式的已算术解码的数据的每个色彩分量。在熵解码期间,熵解码器可以通过逐位平面扫描来解码。对于要解码的码块的每个位平面,熵解码器可以沿着三个解码通道(例如,SIG通道、REF通道和CLN通道)对位平面中的系数位进行解码。在熵解码之后,逆量化单元可以对输入数据执行逆量化过程(516)。然后,逆变换单元可以对逆量化数据执行逆小波变换(518),并输出所述重构图像数据。注意,解码序列可以与编码序列一致。
为了容易理解解码过程,编码过程如图10所示。图10是根据本申请一些实施例所示的用于图像编码的示例性过程的流程图。如上所述,每个码块可以独立地被编码而不参考其他码块。仅为了说明,图10中所示的流程1000可用于编码图像的每个码块。在一些实施例中,可以在图像处理系统110上实现流程1000。例如,过程1000可以以指令的形式存储在存储设备130和/或该图像处理系统的内部存储介质(例如,内存、ROM)中,并由图像处理系统110中的至少一个处理器调用和/或执行。
在操作1002之前,可以初始化一些参数。例如,可以生成并初始化有效性表。有效性表可以包括要编码的码块的系数位的有效性状态的二维阵列。在一些实施例中,有效性表的大小可以等于码块的大小。所述阵列中的所有元素可以初始化为“0”,指示每个系数位具有无效状态。当系数的第一个非零位平面值被编码并且所述阵列的相应元素被重置为“1”时,该系数位的有效性状态可被改为“1”。在编码通道期间可以更新有效性表。在一些实施例中,有效性表可以由在图像编码引擎230上实现的状态寄存器存储和更新。
作为另一示例,在初始化期间,可以生成和初始化有效性传播列表(在本文中也称为SIG列表)、幅度细化列表(在本文中也称为REF列表)和清理列表(在本文中也称为CLN列表)。这些列表可以包括在当前通道期间要编码的码块的系数位的位置。例如,SIG列表包括沿SIG通道要编码的码块的系数位的位置的列表。如本文中所使用的,系数位的位置可指该系数在码块的位平面中的阵列位置。例如,该系数位的位置被指示为S[i,j],其中i表示位平面在水平方向上的位置,j表示位平面在垂直方向上的位置。在一些实施例中,可以根据码块中的扫描序列(例如,图9所示的扫描序列)对列表中的位置进行索引。最初,SIG列表和REF列表可以为空,而CLN列表指示码块中的所有位置,且用于编码具有非零位的MSB。
在1002中,处理器(例如,图像处理系统110的图像编码引擎230)可以确定码块的多个位平面。
在一些实施例中,图像编码引擎230可获得码块的变换系数,并将所述变换系数划分为多个位平面。如图8A-8C所示,所述多个位平面的范围可以从最高有效位平面(MSB)到最低有效位平面(LSB)。所述变换系数可以由二维离散小波变换(2DDWT)产生。具体地,图像数据获得引擎210可以获得源图像数据(例如,灰度图像或RGB图像)。所述源图像数据可以由图像预处理引擎220进行预处理。预处理过程可以包括图像平铺、直流电平转换和/或色彩变换。然后,图像编码引擎230可以对预处理的图像数据执行2DDWT,并获得相应的小波变换系数。在2DDWT之后,如图6所示,可以将每个图像片划分为多个子带。可以将每个子带进一步划分为具有特定大小(例如,64×64)的多个码块。图像编码引擎230可以进一步将码块的变换系数划分成范围为从MSB到LSB的位平面。每个位平面可以包括由二进制表示法表示的系数位阵列。
在1004中,处理器(例如,图像处理系统110中的图像编码引擎230)可以确定最高有效位平面(MSB)。如图8B所示,图像编码引擎230可以确定与码块802对应的MSB806。
在1006中,处理器(例如,图像处理系统110的图像编码引擎230)可以沿着清理通道执行熵编码。在JPEG2000中,可以仅沿清理通道对MSB进行熵编码。具体地,可以对MSB中的所有非零系数位进行熵编码。可以按照预定的扫描模式/序列(例如,如图9所示的扫描模式)对非零系数位进行熵编码。在一些实施例中,图像编码引擎230可以选择零编码(ZC)和/或符号编码(SC)来编码系数位。在编码之后,图像编码引擎230可以输出决策(0或1)和上下文。然后,可以进一步使用JPEG2000中描述的算术编码方法对所述决策和所述上下文进行熵编码。
在一些实施例中,在沿清理通道编码期间,可以更新SIG列表和REF列表。例如,当发现第一系数位是有效的时,可以将第一系数位的位置添加到当前的REF列表中。作为另一示例,当发现第二系数位是无效的但其邻位(例如,八个邻位)中的至少一个是有效的时,可将第二系数的位置添加到当前的SIG列表中。如本文中所使用的,特定系数位的邻位可以指与特定系数位相邻的系数位。例如,对于阵列
Figure BDA0003131169770000161
系数位A4的八个邻位是A0、A1、A2、A3、A5、A6、A7和A8。
在1008中,处理器(例如,图像处理系统110中的图像编码引擎230)可以确定当前编码的位平面是否是最后一个位平面。如果当前编码的位平面是最后一个位平面,则处理器可以终止码块的编码过程。如果当前编码的位平面不是最后一个位平面,则处理器可以继续执行操作1010。
在1010中,处理器(例如,图像处理系统110中的图像编码引擎230)可以移动到要编码的下一位平面。例如,如图8B所示,在沿清理通道编码MSB之后,位平面808成为按顺序要编码的下一位平面。图像编码引擎230可以获得关于下一位平面(例如,是位平面806的下一位平面的位平面808)的系数位的信息。
在1012中,处理器(例如,图像处理系统110中的图像编码引擎230)可以沿有效性传播通道对当前位平面执行熵编码。可以对与当前的SIG列表中的位置相对应的当前位平面中的系数位进行熵编码。在一些实施例中,图像编码引擎230可以选择ZC和/或SC来编码当前位平面中的系数位。在编码之后,图像编码引擎230可以输出所述决策和所述上下文。然后,可以进一步使用JPEG2000中描述的算术编码算法对所述决策和所述上下文进行熵编码。在一些实施例中,在沿SIG通道编码期间,当发现第一系数位是有效的时,图像编码引擎230可以将第一系数位的位置添加到新的REF列表中,在沿清理通道编码之后(即,操作1016),该新的REF列表可以与当前的REF列表合并。如本文中所使用的,合并两个REF列表可以通过将当前的REF列表中的空元素替换为新的REF列表中对应的非空元素来实现。例如,假定新的REF列表包括
Figure BDA0003131169770000171
当前的REF列表包括
Figure BDA0003131169770000172
其中null表示其对应元素为空(即相应系数位不需要被编码),“1”表示要被编码的相应系数位,则合并后的REF列表包含
Figure BDA0003131169770000173
在一些实施例中,在沿SIG通道编码期间,若发现第一系数位是有效的,则图像编码引擎230可以确定第一系数位的八个邻位,获得具有无效状态的邻位的位置。在一些实施例中,如果在扫描序列中第一系数位的位置之前有一个或多个无效系数位的位置,则图像编码引擎230可以将这些位置添加到新的SIG列表中。如本文中所使用的,若第一系数位在第二系数位之前被扫描和熵编码,则第一系数位的位置可以被描述为在第二系数位的位置之前。若在扫描序列中第一系数位的位置之后有一个或多个无效系数位的位置,图像编码引擎230可以将这些位置添加到当前的SIG列表中,更新当前的SIG列表。如本文中所使用的,若第一系数在第二系数位之后被扫描和熵编码,则第一系数位的位置可以被描述为在第二系数位的位置之后。图像编码引擎230可以对与更新后的SIG列表中的位置对应的系数位进行编码。在一些实施例中,在沿SIG通道编码期间,图像编码引擎230可以基于更新后的SIG列表和当前的REF列表来确定CLN列表。例如,CLN列表可以包括除了包含在更新后的SIG列表和当前的REF列表中的系数位之外的系数位的位置。
在沿SIG通道的编码完成之后,在1014中,处理器(例如,图像处理系统110中的图像编码引擎230)可以沿幅度传播通道对当前位平面执行熵编码。可以对与当前REF列表中的位置对应的当前位平面中的系数位进行熵编码。在一些实施例中,图像编码引擎230可以选择MRC来编码系数位。在编码之后,图像编码引擎230可以输出所述决策和所述上下文。然后,可以进一步使用JPEG2000中描述的算术编码算法对所述决策和所述上下文进行熵编码。
在完成沿REF通道的编码之后,在1016中,处理器(例如,图像处理系统110的图像编码引擎230)可以沿清理通道对当前位平面执行熵编码。可以对与当前CLN列表中的位置对应的当前位平面中的系数位进行熵编码。在一些实施例中,在沿清理通道编码期间,当发现第一系数位是有效的时,可以将其位置添加到新的REF列表(在沿1012中所示的上一SIG通道编码期间生成)中。在一些实施例中,图像编码引擎230可以确定第一系数位的八个邻位,获得具有无效状态的邻位的位置。图像编码引擎230可以将这些无效邻位的位置添加到新的SIG列表(在沿1012中所示的上一SIG通道编码期间生成)中。新的SIG列表可以与当前的SIG列表合并。新的REF列表可以与当前的REF列表合并。合并两个SIG列表类似于如上所述的合并两个REF列表。在一些实施例中,合并后的SIG列表和REF列表可被重新用于当前位平面的编码。
流程1000可以仅仅是出于说明目的提供一种用于图像编码的编码技术,而非旨在限制。本领域技术人员将理解,可以将其他图像编码技术应用于图像编码引擎230。例如,编码技术还可以包括哈夫曼编码、香农编码、范围编码等或其任意组合。
应当理解,在编码或解码期间,过程顺序基本相同。解码过程与编码过程(例如,过程1000)是镜像的。在熵解码期间,码块的每个位平面可以需要沿至少一个通道(例如,SIG通道、REF通道和/或CLN通道)被熵解码。MSB可以仅沿CLN通道被解码。其他位平面可以沿SIG通道、REF通道和CLN通道依次被解码。在JPEG2000中,可以扫描其他位平面中的每一个三次。然而,对于每个解码过程,图像解码引擎240可以需要扫描所有位置,确定系数位在当前过程中是否已被解码。显然,扫描不需要解码的位置是浪费时间的。
为了解决上面确定的问题和其他问题,在本申请中提供图11中所示的流程1100。图11是根据本申请一些实施例所示的用于图像解码的示例性过程的流程图。在一些实施例中,流程1100可以在图像处理系统110上实现。例如,流程1100可以以指令形式存储在存储设备130和/或该图像处理系统的内部存储介质(例如,存储器内存、ROM)中,并且由图像处理系统110中的至少一个处理器调用和/或执行。
在1102中,处理器(例如,图像解码引擎240的码流获得模块310)可以获得已编码码流。
如结合图5所描述的,可以通过编码过程将源图像数据压缩为码流。编码过程可以包括预处理、前向变换、量化和熵编码。在熵编码之后,可以将与源图像数据关联的码块编码为码流。已编码码流可以存储在存储设备(例如,存储设备130)中,和/或发送至图像解码引擎240。对于本领域技术人员而言,编码过程可以参考由ISO标准化的JPEG2000。关于编码的更多描述也可以在本申请的其他地方(例如,图5或图10及其描述)找到,这里不再重复。
在一些实施例中,码流获得模块310可以从编码器(例如,图像编码引擎230)获得与源图像数据对应的已编码码流。在一些实施例中,码流获得模块310可以从存储设备(例如,存储设备130)检索要解码的码流。所述码流可以指示关于源图像的每个图像片的多个码块的信息。在一些实施例中,所述码流可以包括主头部和与该主头部对应的多个片流。所述片流可以指示所述图像片的信息。片流可以包括片头部和对应于该片头部的数据包流。所述数据包流可以指示包括在所述图像片中的数据包的信息。数据包可以包括数据包头部和与该数据包头部对应的压缩数据。在一些实施例中,组可以包括一个或多个码块。因此,所述数据包中的压缩数据可以指示与所述一个或多个码块对应的已编码数据。
在1104中,处理器(例如,图像解码引擎240的码块确定模块320)可以基于获得的码流确定多个码块。
在一些实施例中,码块确定模块320可以通过解析所述码流来获得所述多个码块的压缩数据。例如,码块确定模块320可以获得数据包头部,并确定由该数据包头部指示的数据包。码块确定模块320可以进一步确定包含在所述数据包中的多个码块,并获得与所述多个码块对应的压缩数据。
在1106中,处理器(例如,图像解码引擎240的位平面确定模块330)可以为所述多个码块中的每一个确定多个位平面。
在一些实施例中,位平面确定模块330可以进一步解析多个数据包以确定与码块对应的多个位平面。在JPEG2000中,码块的每个位平面的已编码数据可以按顺序被组织在所述码流中。例如,位平面对应于唯一的头部。位平面确定模块330可以轻易地通过索引该唯一的头部来识别所述多个位平面。
在1108中,处理器(例如,图像解码引擎240中的查询平面确定模块340)可以为所述多个位平面中的每一个确定至少一个查询平面。如本文中所使用的,所述查询平面可以包括在沿当前解码通道解码期间要解码的位平面的系数位的位置的二维阵列。解码通道可以包括有效性传播通道、幅度细化通道或清理通道。
查询平面的大小可以等于位平面或码块的大小。例如,假定码块的大小为64×64,则查询平面的大小也可以为64×64。查询平面中每个元素的位置可以与位平面中每个系数位的位置对应。在一些实施例中,查询平面可以指示要解码的系数位。在查询平面中,可以使用元素的二进制值变量来指示系数位是否需要被解码。例如,假定q[i,j]表示查询平面的元素,其中i表示查询平面在水平方向上的位置,j表示查询平面在垂直方向上的位置。如果元素q[i,j]的值是1,这意味着与q[i,j]对应的系数位可以需要被解码。作为另一个示例,如果元素q[i,j]的值是0,这意味着与q[i,j]对应的系数位可以不需要被解码。
在解码期间,码块可以独立地被解码,而不参考其他码块。码块的位平面可以需要从最高有效位平面(MSB)被解码到最低有效位平面(LSB)。在一些实施例中,位平面的系数位需要沿三个解码通道中的一个且唯一一个进行解码。在一些实施例中,针对位平面,查询平面确定模块340可以沿当前解码通道确定查询平面。例如,第一查询平面确定单元402可以确定与有效性传播通道对应的第一查询平面。作为另一示例,第二查询平面确定单元404可以确定与幅度细化通道对应的第二查询平面。作为又一示例,第三查询平面确定单元406可以确定与清理通道对应的第三查询平面。关于确定查询平面的更多描述可以参考图12-14及其描述。
在一些实施例中,第一查询平面确定单元402可以基于第一有效性平面和第一未编码平面确定第一查询平面。第一查询平面可以指示沿有效性传播通道要解码的第一系数位。例如,搜索模块350可以在第一查询平面中搜索值为“1”的系数位,并将这些系数位指定为沿有效性传播通道要解码的第一系数位。
如本文中所使用的,有效性平面可以包括要解码的码块的系数位的有效状态的二维阵列。在一些实施例中,有效性平面的所有元素可以初始化为“0”,指示每个系数位具有无效状态。在解码过程中,若发现系数位是有效的,则与其对应的有效状态可以改为“1”。
如本文中所使用的,未解码平面可以包括码块的系数位的解码状态的二维阵列。在未解码平面中,阵列的所有元素可以初始化为“1”,指示每个系数位尚未被解码(即,未解码状态)。若系数位已被解码,则与其对应的元素可重置为“0”。换句话说,在未解码平面中,若元素的值为“0”,则意味着与该元素对应的系数位已被解码。如果元素的值为“1”,则意味着与该元素对应的系数位尚未被解码,需要被解码。
参考图12,图12示出了根据本申请一些实施例的用于确定与有效性传播通道对应的第一查询平面的示例性过程。在流程1200中,附图标记1202表示与要解码的当前位平面对应的第一有效性平面。附图标记1204表示对应于当前位平面的第一未编码平面。附图标记1206表示与当前位平面对应的第一查询平面。在一些实施例中,第一查询平面确定单元402可以通过对第一有效性平面1202和第一未编码平面1204执行逻辑操作来确定第一查询平面1206。逻辑操作可以包括OR操作、NOT操作和AND操作。
例如,假定二进制值变量表示系数位的有效状态,则系数位的八个邻位的有效状态可以表示为
Figure BDA0003131169770000201
其中sk[·]表示紧接在系数位X[i,j]的解码之前的有效状态。如图12所示,在第一有效性平面1202中,第一查询平面确定单元402可以对sk[i,j]执行NOT操作以确定第一值。第一查询平面确定单元402可以对sk[i,j]的八个邻位执行OR操作以确定第二值。第一查询平面确定单元402可以对第一值和第二值执行AND操作以确定第三值。假定二进制值变量uk[i,j]表示未编码平面1204中的系数位的解码状态。第一查询平面确定单元402可以对第三值执行AND操作以确定第四值。第四值可以被重置为第一查询平面1206中qk[i,j]的二进制值变量。如果qk[i,j]等于“0”,这意味着系数位X[i,j]不需要沿有效性传播通道被解码。如果qk[i,j]等于“1”,这意味着系数位X[i,j]需要沿有效性传播通道被解码。
应当理解,在沿有效性传播通道解码期间,可以更新第一有效性平面和第一未编码平面。相应地还可以基于更新后的第一有效性平面和更新后的第一未编码平面更新第一查询平面。在一些实施例中,第一查询平面确定单元402可以基于上一位平面的熵解码结果获得初始第一有效性平面(S1)和初始第一未编码平面(U1)。例如,假定将上一位平面的熵解码结果表示为阵列
Figure BDA0003131169770000202
其中该阵列的每个元素表示由图像解码引擎240输出的决策。那么初始第一有效性平面S1可以被表示为
Figure BDA0003131169770000203
初始第一未编码平面U1可以被表示为
Figure BDA0003131169770000204
在一些实施例中,在沿有效性传播通道解码期间,若系数位已被解码,则其在U1中的对应元素可被重置为0,相应地U1可以被更新。若该系数位的解码决策为1,则其在S1中的对应元素可以被重置为1,相应地S1可以被更新。在完成沿有效性传播通道的解码之后,第一有效性平面可以更新为S2,第一未编码平面可以更新为U2。
在一些实施例中,第二查询平面确定单元404可以基于第二有效性平面和第二未编码平面确定第二查询平面。第二查询平面可以指示要沿幅度细化通道解码的第二系数位。例如,搜索模块350可以在第二查询平面中搜索值为“1”的系数位,并将这些系数位指定为要沿幅度细化通道解码的第二系数位。
参考图13,图13示出了根据本申请一些实施例的用于确定与幅度细化通道对应的第二查询平面的示例性过程。在流程1300中,附图标记1302表示与要解码的当前位平面对应的第二有效性平面。附图标记1304表示与当前位平面对应的第二未编码平面。附图标记1306表示与当前位平面相对应的第二查询平面。在一些实施例中,第二查询平面确定单元404可以通过对第二有效性平面1302和第二未编码平面1304执行逻辑操作(例如,AND操作、OR操作、NOT操作)来确定第二查询平面1306。
例如,假定二进制值变量sk[i,j]表示第二有效性平面1302中的系数位X[i,j]的有效状态,二进制值变量uk[i,j]表示第二未编码平面1304中的系数位X[i,j]的解码状态。如图13所示,第二查询平面确定单元404可以对sk[i,j]和uk[i,j]执行AND操作以确定值。该值可以被重置为第二查询平面1306中qk[i,j]的二进制值变量。如果qk[i,j]等于“0”,这意味着系数位X[i,j]不需要沿着幅度细化通道进行解码。如果qk[i,j]等于“1”,这意味着系数位X[i,j]需要沿着幅度细化通道进行解码。
在一些实施例中,第二查询平面确定单元404可以基于上一位平面的熵解码结果获得第二有效性平面。例如,假定将上一位平面的熵解码结果被表示为阵列
Figure BDA0003131169770000211
其中该阵列的每个元素表示图像解码引擎240输出的决策。那么第二有效性平面可以被表示为
Figure BDA0003131169770000212
换言之,第二有效性平面可以与初始第一有效性平面(S1)相同。应当注意,在沿幅度细化通道解码期间,第二有效性平面可以保持不变,这与第一有效性平面不同。第二有效性平面可以仅取决于上一位平面的熵解码结果。
在一些实施例中,第二查询平面确定单元404可以获得初始第二未编码平面。初始第二未编码平面可以与U2相同。在沿幅度细化通道解码期间,如果系数位已被解码,则其在U2中的对应元素可以被重置为0,相应地U2可以被更新。在完成沿幅度细化通道的解码之后,第二未编码平面可以被更新为U3。
在一些实施例中,第三查询平面确定单元406可以基于第三未编码平面确定第三查询平面。第三查询平面可以指示沿清理通道解码的第三系数位。例如,搜索模块350可以在第三查询平面中搜索值为“1”的系数位,并将这些系数位指定为沿清理通道解码的第二系数位。
参考图14,图14示出了根据本申请一些实施例的用于确定与清理通道相对应的第三查询平面的示例性流程。在流程1400中,附图标记1402表示与当前位平面相对应的第三未编码平面。附图标记1404表示与当前位平面对应的第三查询平面。如图14所示,第三查询平面确定单元406可以将第三未编码平面1402指定为第三查询平面1404。可以理解,第三未编码平面1420和第三查询平面可以与U3相同。
回到图11,在1110中,处理器(例如,图像解码引擎240的解码模块360)可以基于所述至少一个查询平面解码所述多个位平面中的每一个。
在一些实施例中,解码模块360可以依次解码范围为从MSB到LSB的所述多个位平面。解码模块360可沿解码通道(例如,有效性传播通道、幅度细化通道或清理通道)解码每个位平面。
在一些实施例中,解码模块360可以先仅沿清理通道解码MSB。解码模块360可以基于与清理通道对应的查询平面(例如,第三查询平面)解码MSB。因为MSB是要解码的第一个位平面,所以MSB的所有系数位可以需要被解码。因此,当前的第三查询平面的每个元素可以被重置为1,这意味着每个系数位需要被解码。在一些实施例中,解码模块360可以选择解码技术,例如,零解码(ZD)、符号解码(SD)或行程编码(RLD),来解码系数位。在一些实施例中,搜索模块350可以根据搜索算法搜索与清理通道对应的查询平面中要解码的系数位。所述搜索算法可以包括但不限于顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法。搜索模块350可以在当前查询平面中值为“1”的系数位,并将这些系数位的位置发送给解码模块360。解码模块360还可以对与这些位置对应的系数位进行熵解码。
在一些实施例中,解码模块360可以沿有效性传播通道、幅度细化通道或清理通道中的至少一个解码所述多个位平面中除MSB之外的其他位平面。例如,解码模块360可以先沿有效性传播通道解码位平面的第一系数位,然后沿幅度细化通道解码位平面的第二系数位,沿清理通道解码位平面的第三系数位。
在沿有效性传播通道解码期间,解码模块360可以选择ZD或SD来解码第一系数位。第一系数位可以对应于第一查询平面中值为“1”的元素。搜索模块350可以搜索值为“1”的元素,并将这些元素的位置发送到解码模块360。解码模块360可以进一步解码与这些位置对应的第一系数位。
本领域技术人员将理解,在传统的JPEG2000中,位平面解码是逐位平面执行的。对于每个位平面,可以根据扫描模式,例如,图9所示的扫描模式,逐位扫描。只要当前系数位已经被解码,就可以允许下一系数位被解码。在当前系数位和下一系数位的两个解码操作之间可能存在等待期,这是浪费时间的。为了解决此问题和其它问题,解码模块360可以在沿有效性传播通道解码期间并行解码至少两个系数位。例如,解码模块360可以预测关于当前解码的系数位的决策。在大多数情况下,因为系数位的决策为0的概率很高,所以解码模块360可以总是预测当前解码的系数位的决策为0。响应于关于当前系数位的决策,解码模块360可以同时对下一系数位执行解码。
在沿幅度细化通道解码期间,解码模块360可以选择MRD来解码第二系数位。第二系数位可以对应于第二查询平面中值为“1”的元素。搜索模块350可以搜索值为“1”的元素,并将这些元素的位置发送到解码模块360。解码模块360可以进一步解码与这些位置对应的第二系数位。
在沿清理通道解码期间,解码模块360可以选择ZD、SD或RLD来解码第三系数位。第三系数位可对应于第三查询平面中值为“1”的元素。搜索模块350可以搜索值为“1”的元素,并将这些元素的位置发送到解码模块360。解码模块360可以进一步解码与这些位置对应的第三系数位。
在一些实施例中,搜索模块350可以根据相同的搜索算法在第一查询平面、第二查询平面和/或第三查询平面中搜索值为“1”的元素。在一些实施例中,搜索模块350可以根据单独的搜索算法分别在第一查询平面、第二查询平面和/或第三查询平面中搜索值为“1”的元素。例如,搜索模块350可以根据第一搜索算法搜索第一查询平面。搜索模块350可以根据第二搜索算法搜索第二查询平面。搜索模块350可以根据第三搜索算法搜索第三查询平面。在一些实施例中,第一搜索算法、第二搜索算法和/或第三搜索算法可以包括顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法中的至少一个。本领域技术人员可以理解的,搜索算法是可以变化的,并且这样的变化在本申请的保护范围内。关于解码的更多描述可以在本申请的其他地方(例如,图15A-15C及其描述)找到。
应当注意,上述描述仅出于说明目的,不旨在限制本申请的范围。应当理解,本领域技术人员在理解了系统的原理后,在不偏离原理的情况下,可以对上述方法的实现形式和细节以及系统的应用进行任意修改或转换。例如,操作1104和1106可以集成到一个操作中。
图15A-15C是根据本申请一些实施例所示的用于图像解码的示例性流程的示意图。在一些实施例中,可以在图像处理系统110上实现流程1500。例如,流程1500可以以指令形式存储在存储设备130和/或图像处理系统的内部存储介质(例如,内存、ROM)中,并且由图像处理系统110中的至少一个处理器调用和/或执行。
在1502中,处理器(例如,例如,图像解码引擎240的码流获得模块310)可以获得已编码码流。
如图5所示,可以通过编码过程将源图像数据压缩为码流。所述编码过程可以包括预处理、前向变换、量化和熵编码。在熵编码之后,可以将与源图像数据关联的码块编码为码流。已编码码流可以存储在存储设备(例如,存储设备130)中和/或发送到图像解码引擎240中。对于本领域技术人员而言,编码过程可以参考由ISO标准化的JPEG2000。关于编码的更多描述也可以在本申请的其他地方(例如,图5或图10及其描述)找到,这里不再赘述。
所述码流可以包括关于源图像的每个图像片的多个码块的信息。在一些实施例中,所述码流可以包括主头部和与该主头部对应的多个片流。所述片流可以包括所述图像片的信息。例如,片流可以包括片头部和对应于该片头部的数据包流。所述数据包流可以指示包含在所述图像片中的数据包的信息。数据包可以包括数据包头部和与该数据包头部对应的压缩数据。在一些实施例中,所述数据包可以包括一个或多个码块。因此,所述数据包中的压缩数据可以指示与所述一个或多个码块对应的已编码数据。
在1504中,处理器(例如,图像解码引擎240的码块确定模块320)可以基于获得的码流确定多个码块。
在一些实施例中,码块确定模块320可以通过解析所述码流来获得所述多个码块的压缩数据。例如,码块确定模块320可以获得数据包头部,并确定由该数据包头部指示的数据包。码块确定模块320可以进一步确定包含在所述数据包中的多个码块,并获得与所述多个码块对应的压缩数据。
在1506中,处理器(例如,图像解码引擎240的位平面确定模块330)可以为所述多个码块中的每一个确定多个位平面。
在一些实施例中,位平面确定模块330可以进一步解析多个数据包以确定与码块对应的多个位平面。在JPEG2000中,码块的每个位平面的已编码数据可以按顺序被组织在码流中。例如,位平面对应于唯一的头部。位平面确定模块330可以很轻易地通过索引该唯一的头部来识别所述多个位平面。
在1508中,处理器(例如,图像解码引擎240的查询平面确定模块340)可以初始化多个查询平面。
如本文中所使用的,查询平面可以包括在沿当前解码通道解码期间要解码的位平面的系数位的位置的二维阵列。所述多个查询平面可以包括与有效性传播通道对应的第一查询平面(例如,第一查询平面1206)、与幅度细化通道对应的第二查询平面(例如,第二查询平面1306)和/或与清理通道对应的第三查询平面(例如,第三查询平面1404)。在初始化的查询平面中,查询平面的每个元素的二进制值变量可以被初始化为0。在一些实施例中,可以根据与要解码的当前位平面关联的当前解码通道更新查询平面。在一些实施例中,对于要解码的当前位平面,解码模块360可以基于对第一查询平面的搜索沿有效位传播通道执行解码。解码模块360可以基于对第二查询平面的搜索沿幅度细化通道执行解码。解码模块360可以基于对第三查询平面的搜索沿清理通道执行解码。
在1510中,处理器(例如,图像解码引擎240的解码模块360)可以确定最高有效位平面(MSB)。在一些实施例中,可以按顺序将确定的多个位平面从MSB组织到LSB。解码模块360可以识别MSB,并先沿清理通道解码MSB。
在1512中,处理器(例如,查询平面确定模块340的第三查询平面确定单元406)可以获得与清理通道对应的当前的第三查询平面。
在一些实施例中,第三查询平面确定单元406可以确定与MSB对应的当前的第三查询平面。返回参考图14,可以根据当前的未编码平面确定第三查询平面。对于MSB,每个系数位可以需要被解码,因此,在当前第三查询平面中每个元素的二进制值变量可以被重置为1。每个元素可以分别与MSB中的每个系数位对应。例如,假定当前的第三未编码平面1402可以被表示为
Figure BDA0003131169770000241
其中二进制值变量“1”指示系数位的未编码状态。第三查询平面1404可以基于当前的第三未编码平面1402,即
Figure BDA0003131169770000242
来确定。
在1514中,处理器(例如,图像解码引擎240的搜索模块350)可以根据第三搜索算法搜索当前的第三查询平面。
在一些实施例中,第三搜索算法可以包括但不限于顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法。
如1516中所示,搜索模块350可以确定当前位平面(例如,MSB)中是否存在未编码系数位。在当前第三查询平面中,与值为1的元素对应的系数位可以被指定为未编码系数位。如本文中所使用的,与第一查询平面对应的未编码系数位也可以被称为第三系数位。若在当前第三查询平面中存在为“1”的值,则搜索模块350可以确定在当前的第三查询平面中存在未编码系数位。处理器可以继续执行操作1518。若在当前的第三查询平面中没有为“1”的值,则搜索模块350可以确定在当前第三查询平面中没有未编码系数位。处理器可以继续执行操作1524。在1524中,处理器可以确定当前解码的位平面是否为最后一个位平面。若当前解码的位平面是最后一个位平面,则处理器可以终止当前码块的解码。否则,处理器可以继续执行操作1526。
在1518中,处理器(例如,图像解码引擎240的搜索模块350)可以获得当前的第三查询平面中的未编码位(例如,第三系数位)。在一些实施例中,搜索模块350可以在当前的第三查询平面中搜索值为1的元素,并将这些元素的位置发送给解码模块360。
在1520中,处理器(例如,图像解码引擎240的解码模块360的第三解码单元412)可以沿清理通道解码未编码位(例如,第三系数位)。
在一些实施例中,第三解码单元412可以对当前位平面执行位平面解码和算术解码。在位平面解码阶段,第三解码单元412可以确定每个第三系数位的上下文。在JPEG2000中,上下文可以取决于解码方法。对于沿清理通道的位平面解码,所述解码方法可以包括零解码(ZD)、符号解码(SD)和/或行程编码(RLD)。在完成位平面解码之后,第三解码单元412可以执行算术解码。三解码单元412可以将与要解码的当前系数位关联的上下文和压缩码流数据作为输入,确定决策。所述决策可以是二进制值变量(0或1)。在一些实施例中,第三解码单元412可以逐个解码第三系数位。在一些实施例中,第三解码单元412可以并行解码第三系数位。
如1522所示,在沿清理通道解码期间,可以同时更新当前的第三查询平面。例如,当系数位已被解码时,其在当前的第三查询平面中的对应元素可以被重置为0。第三解码单元412可以根据更新后的第三查询平面继续解码,直到所有的第三系数位被解码。
在完成MSB的解码之后,处理器可以继续执行操作1524。在1524中,处理器(例如,图像解码引擎240)可以确定当前解码的位平面是否是最后一个位平面。若当前解码位平面是最后一个位平面,则处理器可以终止当前码块的解码。否则,处理器可以继续执行操作1526。
在1526中,处理器(例如,图像解码引擎240)可以移至下一位平面进行解码。在一些实施例中,对于除MSB之外的每个其它位平面,图像解码引擎240可以需要分别沿三个解码通道(例如,有效性传播通道、幅度细化通道和清理通道)对要解码的位平面中的系数位进行解码。例如,图像解码引擎240可以解码与最高有效性通道对应的当前位平面的第一系数位。作为另一示例,图像解码引擎240可以解码与幅度细化通道对应的当前位平面的第二系数位。作为又一示例,图像解码引擎240可以解码与清理通道对应的当前位平面的第三系数位。在一些实施例中,第一系数位、第二系数位和第三系数位的总和可以等于当前位平面中的全部系数位。
在1528中,处理器(例如,查询平面确定模块340的第一查询平面确定单元402)可以获得与有效性传播通道对应的当前的第一查询平面。
在一些实施例中,第一查询平面确定单元402可以为当前位平面确定当前的第一查询平面。返回参考图12,第一查询平面确定单元402可以通过对第一有效性平面1202和第一未编码平面1204执行逻辑操作(例如,AND操作、OR操作、NOT操作)来确定第一查询平面1206。当解码模块360开始解码当前位平面时,可以获得初始第一有效性平面(S1)和初始第一未编码平面(U1)。初始第一有效性平面可以取决于上一位平面(例如,MSB)的熵解码结果。例如,假定上一MSB的熵解码结果被表示为阵列
Figure BDA0003131169770000261
其中该阵列的每个元素表示由第三解码单元412确定的决策。初始第一有效性平面S1可以被表示为
Figure BDA0003131169770000262
其中1指示系数位是有效的,0指示系数位是无效的。初始第一未编码平面U1可以被表示为
Figure BDA0003131169770000263
这意味着当前位中的所有系数位可以需要被解码。第一查询平面确定单元402可以通过对S1和U1执行逻辑操作来确定初始第一查询平面。初始第一查询平面(Q1)可以被确定为
Figure BDA0003131169770000264
其中1指示系数位需要沿有效性通道被解码。
在1530中,处理器(例如,图像解码引擎240的搜索模块350)可以根据第一搜索算法搜索当前的第一查询平面(例如,初始第一查询平面)。
在一些实施例中,第一搜索算法可以包括但不限于顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法。
如1532所示,搜索模块350可以确定当前位平面中是否有未编码位。若当前位平面中没有未编码位,则处理器可以继续执行操作1548。若在当前位面中有未编码位,则处理器可以继续执行操作1534。
本领域技术人员可以理解的,在传统的JPEG2000中,位平面解码是逐位平面执行的。对于每个位平面,可以根据图9所示的扫描模式逐位扫描。只要当前系数位已被解码,就可以允许解码下一系数位。在当前系数位和下一系数位的两个解码操作之间可能存在等待期,这是浪费时间的。在一些实施例中,处理器可以通过执行操作1534来解决该问题。解码模块360可在沿有效性传播通道解码期间并行解码至少两个系数位。
在1534中,处理器(例如,图像解码引擎的解码模块360的第一解码单元408)可以执行预测过程。具体地,第一解码单元408可以预测当前解码的系数位的决策。在大多数情况下,由于系数位的决策为0的概率很高,因此,第一解码单元408可以总是预测当前解码的系数位的决策为0。当前系数位的决策一出现,第一解码单元408就可以同时对下一系数位执行解码。在一些实施例中,如果预测的决策与真实决策相同,则第一解码单元408可以继续执行操作1536。例如,预测的决策与真实决策都是0。在一些实施例中,如果预测的决策不同于真实决策,则第一解码单元408可以继续执行操作1542。例如,预测决策为0,而真实决策为1。在一些实施例中,若决策为1,则第一解码单元408可以需要对相应的系数位执行符号解码(SD)。因此,一旦发生符号解码,就证明预测结果是错误的。根据预测过程,可以在不等当前位解码完成的情况下开始下一系数位的解码。
在1536中,处理器(例如,图像解码引擎240的搜索模块350)可以获得当前的第一查询平面中的未编码位。如本文中所使用的,与第一查询平面对应的未编码位也可被称为第一系数位。在一些实施例中,搜索模块350可以在当前的第一查询平面中搜索值为1的元素,并将这些元素的位置发送给第一解码单元408。
在1538中,处理器(例如,图像解码引擎240的解码模块360的第一解码单元408)可以沿有效性传播通道解码未编码系数位(例如,第一系数位)。
在一些实施例中,第一解码单元408可以对当前位平面执行位平面解码和算术解码。在位平面解码阶段,第一解码单元408可以确定每个第一系数位的上下文。对于沿有效性传播通道的位平面解码,第一解码单元408可以选择ZD和/或SD来解码第一系数位。在完成位平面解码之后,第一解码单元408可以执行算术解码。第一解码单元408可以将与要解码的当前系数位关联的上下文和压缩码流数据作为输入,确定所述决策。
如1540所示,在沿有效性传播通道解码期间,可以同时更新当前的第一查询平面。在一些实施例中,在预测的决策可以与真实决策相同的情况下,处理器(例如,第一查询平面确定单元402)可以更新第一查询平面。例如,当第一系数位已被解码时,其在当前的第一未编码平面中的对应元素可以被重置为0。由于相应被更新的第一未编码平面,第一查询平面也可以被更新。第一解码单元408可以根据更新后的第一查询平面继续解码,直到所有的系数位被解码。当第一解码单元408已经解码了当前的第一查询平面中的所有第一系数位时,处理器可以继续执行操作1548。
在一些实施例中,在预测的决策可能不同于真实决策的情况下,处理器(例如,第一查询平面确定单元402)也可以更新第一查询平面。例如,当系数位的解码决策为0时,在当前第一有效性平面中,对应于系数位的无效状态可以保持不变。然而,当系数位的决策为1时,在当前的第一有效性平面中,与该系数位对应的无效状态可以变为有效状态。可相应更新当前的第一有效性平面。同时,因为该系数位已被解码,所以其在当前的第一未编码平面中的对应元素可以被重置为0。因此,可以根据更新的第一有效性平面和更新后的第一未编码平面来更新第一查询平面。第一解码单元408可以根据更新后的第一查询平面继续解码,直到所有的系数位被解码。当第一解码单元408已经解码了当前的第一查询平面中的所有第一系数位时,处理器可以继续执行操作1548。如本文中所使用的,在完成沿有效性传播通道的解码之后,第一有效性平面可以被更新为S2,第一未编码平面可以被更新为U2。
当预测的决策与真实决策不同时,在操作1540之后,处理器可以继续执行操作1542。在1542中,处理器(例如,图像解码引擎240的搜索模块350)可以获得当前的更新后的第一查询平面中的未编码位(例如,第一系数位)。例如,搜索模块350可以在当前第一查询平面中搜索值为1的元素,并将这些元素的位置发送到第一解码单元408。
在1544中,处理器(例如,图像解码引擎240的解码模块360的第一解码单元408)可以沿有效性传播通道解码未编码系数位(例如,第一系数位)。
在1546中,在完成系数位的解码之后,可以更新当前的第一查询平面。第一解码单元408可以根据更新后的第一查询平面继续解码,直到所有的系数位被解码。当第一解码单元408已经解码了当前的第一查询平面中的所有第一系数位时,处理器可以继续执行操作1548。
在1548中,处理器(例如,查询平面确定模块340的第二查询平面确定单元404)可以获得与幅度细化通道对应的当前的第二查询平面。
在一些实施例中,第二查询平面确定单元404可以为当前位平面确定当前的第二查询平面。返回参考图13,如图13所示,第二查询平面确定单元404可以通过对第二有效性平面1302和第二未编码平面1304执行逻辑操作来确定第二查询平面1306。
在一些实施例中,当图像解码引擎240开始沿幅度细化通道解码当前位平面时,第二查询平面确定单元404可以获得第二有效性平面和初始第二未编码平面。第二有效性平面可以取决于上一位平面(例如MSB)的熵解码结果。例如,第二有效性平面可以与初始第一有效性平面(S1)相同。注意,在沿幅度细化通道解码期间,第二有效性平面可以保持不变。初始第二未编码平面可以取决于第一未编码平面,当前位平面沿有效性通道的解码在该第一未编码平面上完成。例如,初始第二未编码平面可以与U2相同。
在1550中,处理器(例如,图像解码引擎240的搜索模块350)可以根据第二搜索算法搜索当前的第二查询平面。
在一些实施例中,第二搜索算法可以包括但不限于顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法。
如1552所示,搜索模块350可以确定当前位平面中是否有未编码位。如果当前位平面中没有未编码位,则处理器可以继续执行操作1512。如果在当前位平面中有未编码位,则处理器可以继续执行操作1554。
在1554中,处理器(例如,图像解码引擎240的搜索模块350)可以获得当前的第二查询平面中的未编码位(例如,第二系数位)。在一些实施例中,搜索模块350可以搜索当前的第二查询平面中值为1的元素,并将这些元素的位置发送给第二解码单元410。
在1556中,处理器(例如,图像解码引擎240的解码模块360的第二解码单元410)可以沿幅度细化通道解码未编码系数位(例如,第二系数位)。
在一些实施例中,第二解码单元410可以对当前位平面执行位平面解码和算术解码。在位平面解码阶段期间,第二解码单元410可以确定每个第二系数位的上下文。对于沿幅度细化通道解码的位平面,第二解码单元410可以选择MRD来解码第二系数位。在完成位平面的解码之后,第二解码单元410可以执行算术解码。第二解码单元410可以将与要解码的当前系数位关联的上下文和压缩码流数据作为输入,确定所述决策。
如1558所示,在沿幅度细化通道解码期间,可以同时更新第二查询平面。例如,当系数位已被解码时,其在当前的第二未编码平面中的对应元素可以被重置为0。相应地第二查询平面确定单元404可以基于更新后的第二未编码平面更新第二查询平面。第二解码单元410可以根据更新后的第二查询平面继续解码,直到所有的系数位被解码为止。当第二解码单元410已经解码了第二查询平面中要解码的所有系数位时,处理器可以继续执行操作1512。如本文中所使用的,在完成沿幅度细化通道的解码之后,第二未编码平面可以被更新为U3。
在完成沿幅度细化通道的解码之后,当前位平面剩余的未编码系数位可以需要沿清理通道被解码。在1512中,处理器(例如,查询平面确定模块340的第三查询平面确定单元406)可以获得与清理通道对应的当前的第三查询平面。第三查询平面确定单元406可以为当前位平面确定第三查询平面。第三未编码平面可以取决于第二未编码平面,沿幅度细化通道的解码在该第二未编码平面上完成。例如,第三未编码平面可以与U3相同。第三查询平面可以与第三未编码平面相同。第三个查询平面也可以与U3相同。应当理解,在完成沿清理通道的解码之后,第三查询平面可以被更新为U4,U4的每个元素等于0,这意味着当前位平面中的所有系数位(第一系数位、第二系数位和第三系数位的总和)已经被解码。
在一些实施例中,搜索模块350可以根据第三搜索算法搜索当前的第三查询平面(1514)。搜索模块350可以确定当前位平面中是否有未编码位(1516)。若搜索模块350可以确定当前第三查询平面中没有未编码位。搜索模块350可以进一步搜索并获得当前的第三查询平面(1518)中的未编码位(例如,第三系数位)。第三解码单元412可以沿清理通道(1520)解码未编码位。在沿清理通道解码期间,可以同时更新第三查询平面(1522)。在沿清理通道解码期间,可以同时更新第三查询平面(1522)。
对于当前位平面,在沿清理通道完成解码之后,如1524所示,处理器可以确定当前解码的位平面是否是最后一个位平面。若当前解码位平面是最后一个位平面,则处理器可以终止当前码块的解码。否则,处理器可继续执行操作1526,开始下一位平面的解码。
应当注意的是,上述描述仅出于说明目的,不旨在限制本申请的范围。应当理解,本领域技术人员在理解了系统的原理后,在不偏离原理的情况下,可以对上述方法的实现形式和细节以及系统的应用进行任意修改或转换。例如,操作1514和操作1516可以集成到单个操作中。作为另一示例,操作1530和操作1532可以集成到单个操作中。作为又一示例,操作1550和操作1552可以集成到单个操作中。
图16是根据本申请一些实施例所示的示例性图像解码装置的示意图。如图16所示,图像解码装置1600可以包括码流缓冲器1602、熵解码器1604、位平面解码控制器1606、SIG预测控制器1608、SIG查询平面更新模块1610、REF查询平面更新模块1612、CLN查询平面更新模块1614、SIG搜索器1616、REF搜索器1618,CLN搜索器1620、解码通道选择器1622、状态寄存器1624、解码方法选择器1626、零解码器1628、符号解码器1630、幅度细化解码器1632、行程解码器1634和上下文选择器1636。在一些实施例中,图像解码装置(或称为图像解码器)1600可以被实现为图像处理系统110的图像解码引擎240。
码流缓冲器1602可以被配置成存储来自图像编码装置(例如,图像编码引擎230)的已编码码流。在一些实施例中,码流缓冲器1602可将已编码码流分解成多个码块,并获得与包含在每个码块中的多个位平面对应的压缩数据。码流缓冲器1602可以将位平面或码块的分解后数据发送到熵解码器1604。
熵解码器1604可以被配置为对接收到的数据执行算术解码,以及生成要解码的系数位的决策。在一些实施例中,接收的数据可以包括所述分解后数据和上下文选择器1636输出的上下文。对于要解码的码块,可使用初始化的上下文对第一位平面(即,MSB)的第一系数位进行熵解码。该初始化的上下文是17。可以将所述决策发送到位平面解码控制器1606、SIG预测控制器1608和/或状态寄存器1624。
位平面解码控制器1606可以被配置为控制系数位的位平面解码。例如,在位平面解码阶段,位平面解码控制器1606可以命令SIG查询平面更新模块1610基于所述决策更新SIG查询平面(例如,第一查询平面1206)。位平面解码控制器1606可以命令REF查询平面更新模块1612基于所述决策更新REF查询平面(例如,第二查询平面1306)。位平面解码控制器1606可以命令CLN查询平面更新模块1614基于所述决策更新CLN查询平面(例如,第三查询平面1404)。在一些实施例中,根据图12-14及其描述,SIG查询平面更新模块1610、REF查询平面更新模块1612和CLN查询平面更新模块1614可以分别更新相应的查询平面。在一些实施例中,位平面解码控制器1606可以命令解码通道选择器1622选择解码通道(例如,有效性传播通道、幅度细化通道或清理通道)。在一些实施例中,位平面解码控制器1606可以命令状态寄存器1624输出要解码的系数位和/或其八个邻位的有效状态。在一些实施例中,位平面解码控制器1606可命令解码方法选择器1626选择解码方法(例如,零解码、符号解码、幅度细化解码、符号解码或行程解码)。在一些实施例中,位平面解码控制器1606可以命令上下文选择器1636确定与该解码方法对应的上下文。
SIG预测控制器1608可以被配置成预测要解码的当前系数位的决策,并确定预测的决策是否为真。预测之后,SIG控制器可以命令SIG搜索器1616从SIG查询平面更新模块1610搜索SIG查询平面。SIG搜索器1616搜索之后,解码过程选择器1622就可以选择要解码的有效性传播通道。接收到选择的解码通道后,状态寄存器就可以输出当前系数位及其八个邻位以及其有效状态。然后,解码方法选择器1626可以选择解码方法(例如,零解码或符号解码),以及选择相应的解码器。例如,在沿有效性传播通道的解码中,零解码器可以将所述决策作为输入,通过上下文选择器1636输出与该解码方法对应的上下文。上下文选择器1636可以被配置为选择与该解码方法对应的上下文。
与沿有效性传播通道的解码流程类似,图像解码器1600还可以通过图像解码器1600的一个或多个组件沿幅度细化通道和/或清理通道执行解码。
在一些实施例中,熵解码器1604输出的决策可以存储在状态寄存器1624中。所述决策可以被指定为量化系数。可以对多个位平面的决策执行逆量化(例如,逆量化516)和逆变换(例如,逆变换518)。在逆变换操作之后,可以生成最终的已解码数据(例如,重构图像)。
应当注意,上述描述仅用于说明目的,并不意在限制本申请的范围。应当理解,本领域技术人员在理解了系统的原理后,在不偏离原理的情况下,可以对上述方法的实现形式和细节以及系统的应用进行任意修改或转换。
图17示出了根据本申请一些实施例的在解码有效性传播通道解码时缺少预测的示例性流水线1700。如图17所示,两条相邻垂直线之间的长度表示一个时钟周期。每个虚线框表示一个处理操作。图17所示的零解码可以包括零解码操作和决策生成操作。熵解码可以仅包括熵解码器的状态更新,与决策生成操作无关。符号解码可以包括符号解码操作。当与系数位对应的生成决策为1时,系数位可能需要符号解码。在沿有效性传播通道解码期间,在第一时钟内,可以搜索要解码的第一系数位(例如,SIG通道搜索0)。在第二时钟内,搜索到的第一系数位可以被零解码(例如,零解码0)。在零解码之后,在第三时钟内,可以对第一系数位进行熵解码(例如,熵解码0)和/或符号解码(例如,符号解码0)。仅当熵解码完成时,才可以搜索和解码第二系数位。在一些实施例中,有效性通道中每个系数位的解码期可以包括三个时钟周期。
图18示出了根据本申请一些实施例的示例性流水线1800,其包括在解码有效性传播通道解码中的预测。如图18所示,在沿有效性传播通道解码期间,在第一时钟内,可以搜索要解码的第一系数位(例如,SIG通道搜索0)。在第二时钟内,搜索到的第一系数位可以被零解码(例如,零解码0)。同时,可以预测与第一系数位对应的决策。预测的决策总是0。如果由零解码生成的真实决策是1,这意味着预测不成功(例如,SIG通道预测失败)。在这种情况下,可以延迟到第三时钟来搜索第二系数位(例如,SIG通道搜索1)。在第四时钟内,搜索到的第二系数位可以被零解码(例如,零解码1)。同时,可以预测与第二系数位相对应的决策。若通过零解码生成的真实决策为0,则表示预测成功(例如,SIG通道预测成功)。在这种情况下,可以在当前的第四时钟内搜索第三系数位(例如,SIG通道搜索1)。在预测成功的情况下,可能需要四个时钟来完成两个系数位的解码。如图17所示,如果在没有有效性传播通道中的预测的情况下进行解码,则可能需要六个时钟来完成两个系数位的解码。预测操作可以加速沿有效性传播通道的系数位的解码。
上文已对基本概念做了描述,显然,对于阅读此申请后的本领域的普通技术人员来说,上述发明披露仅作为示例,并不构成对本申请的限制。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。例如“一个实施例”、“一实施例”、和“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特性。因此,应当强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改进。因此,本申请的各个方面可以全部由硬件、全部由软件(包括固件、驻留软件、微代码等)或组合的软件和硬件实现来实现,这些软件和硬件实现在本文中通常被称为“模块”、“单元”、“组件”、“设备”或“系统”。此外,本申请的方面可以采取计算机程序产品的形式,该计算机程序产品体现在一个或多个计算机可读介质中,其上体现有计算机可读程序代码。
计算机可读信号介质可以包含一个内含有计算机程序代码的传播数据信号,例如,在基带上或作为载波的一部分。此类传播信号可以有多种形式,包括电磁形式、光形式等或任何合适的组合。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通信、传播或传输供使用的程序。位于计算机可读信号介质上的程序代码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF等,或任何上述介质的组合。
用于执行本申请的方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,包括面向对象的编程语言,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,传统的过程编程语言,例如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言,例如Python、Ruby和Groovy,或者其他编程语言。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可以与外部计算机建立连接(例如,通过使用网络服务提供商的网络)或在云计算环境中或作为服务提供,例如,软件服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其它名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,尽管上述各种组件的实现可以体现在硬件设备中,但也可以实现为纯软件解决方案,例如,在现有服务器或移动设备上的安装。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请的实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,本申请的该方法不应被解释为反映所声称的待扫描对象物质需要比每个权利要求中明确记载的更多特征的意图。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

Claims (23)

1.一种解码已编码码流的方法,包括:
获得所述已编码码流;
基于所述已编码码流确定多个码块;
为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围为从最高有效位平面到最低有效位平面;
为所述多个位平面中的每一个确定至少一个查询平面,其中,所述至少一个查询平面中的每一个包括指示当前解码通道期间是否要解码的位平面的系数位的二维位置数组,每个所述二维位置数组在查询平面中的位置可以与位平面中每个系数位的位置对应;以及
基于所述至少一个查询平面解码所述多个位平面中的每一个。
2.根据权利要求1所述的方法,其中,所述至少一个查询平面包括对应于有效性传播通道的第一查询平面、对应于幅度细化通道的第二查询平面或对应于清理通道的第三查询平面中的至少一个。
3.如权利要求2所述的方法,还包括:
基于第一有效性平面和第一未编码平面确定所述第一查询平面。
4.如权利要求2所述的方法,还包括:
基于第二有效性平面和第二未编码平面确定所述第二查询平面。
5.如权利要求2所述的方法,还包括:
基于第三未编码平面确定所述第三查询平面。
6.如权利要求2所述的方法,其中,所述第一查询平面、所述第二查询平面和所述第三查询平面互相关联。
7.如权利要求2所述的方法,其中,所述基于所述至少一个查询平面解码所述多个位平面中的每一个,包括:
沿所述有效性传播通道、所述幅度细化通道或所述清理通道解码所述多个位平面中的每一个。
8. 如权利要求7所述的方法,其中,所述沿所述有效性传播通道、所述幅度细化通道或所述清理通道解码所述多个位平面中的每一个,包括:
沿所述清理通道解码所述最高有效位平面;以及
沿所述有效性传播通道、所述幅度细化通道和所述清理通道解码所述多个位平面中除所述最高有效位平面外的其他位平面。
9.如权利要求8所述的方法,其中,所述沿所述有效性传播通道、所述幅度细化通道和所述清理通道解码所述多个位平面中除所述最高有效位平面外的其他位平面,包括:
对于所述多个位平面中除所述最高有效位平面外的其他位平面中的每一个,
预测关于沿最高有效性通道的当前解码位的决策;
通过根据第一搜索算法基于预测的决策搜索所述第一查询平面,解码该位平面对应于所述最高有效性通道的第一位;
通过根据第二搜索算法搜索所述第二查询平面,解码该位平面对应于所述幅度细化通道的第二位;以及
通过根据第三搜索算法搜索所述第三查询平面,解码该位平面对应于所述清理通道的第三位。
10.根据权利要求9所述的方法,其中,所述第一搜索算法、所述第二搜索算法或所述第三搜索算法包括顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法中的至少一个。
11.如权利要求9所述的方法,其中,所述第一搜索算法、所述第二搜索算法和所述第三搜索算法是相同或不同的。
12.一种解码已编码码流的系统,包括:
存储指令集的存储设备;
与所述存储设备通信的至少一个处理器,其中,当执行所述指令集时,所述至少一个处理器被配置成使所述系统:
获得所述已编码码流;
基于所述已编码码流确定多个码块;
为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围为从最高有效位平面到最低有效位平面;
为所述多个位平面中的每一个确定至少一个查询平面,其中,所述至少一个查询平面中的每一个包括指示当前解码通道期间是否要解码的位平面的系数位的二维位置数组,每个所述二维位置数组在查询平面中的位置可以与位平面中每个系数位的位置对应;以及
基于所述至少一个查询平面解码所述多个位平面中的每一个。
13.如权利要求12所述的系统,其中,所述至少一个查询平面包括对应于有效性传播通道的第一查询平面、对应于幅度细化通道的第二查询平面或对应于清理通道的第三查询平面中的至少一个。
14.如权利要求13所述的系统,其中,所述至少一个处理器还被配置为使所述系统:
基于第一有效性平面和第一未编码平面确定所述第一查询平面。
15.如权利要求13所述的系统,其中,所述至少一个处理器还被配置为使所述系统:
基于第二有效性平面和第二未编码平面确定所述第二查询平面。
16.如权利要求13所述的系统,其中,所述至少一个处理器还被配置为使所述系统:
基于第三未编码平面确定所述第三查询平面。
17.如权利要求13所述的系统,其中,所述第一查询平面、所述第二查询平面和所述第三查询平面互相关联。
18.根据权利要求13所述的系统,其中,为了基于所述至少一个查询平面解码所述多个位平面中的每一个,所述至少一个处理器还被配置为使所述系统:
沿所述有效性传播通道、所述幅度细化通道或所述清理通道解码所述多个位平面中的每一个。
19.根据权利要求18所述的系统,其中,为了沿所述有效性传播通道、所述幅度细化通道或所述清理通道解码所述多个位平面中的每一个,所述至少一个处理器还被配置为使所述系统:
沿所述清理通道解码所述最高有效位平面;以及
沿所述有效性传播通道、所述幅度细化通道和所述清理通道解码所述多个位平面中除所述最高有效位平面外的其他位平面。
20.如权利要求19所述的系统,其中,为了沿所述有效性传播通道、所述幅度细化通道和所述清理通道解码所述多个位平面中除所述最高有效位平面外的其他位平面,所述至少一个处理器还被配置为使所述系统:
对于所述多个位平面中除所述最高有效位平面外的其他位平面中的每一个,
预测关于沿最高有效性通道的当前解码位的决策;
通过根据第一搜索算法基于预测的决策搜索所述第一查询平面,解码该位平面对应于所述最高有效性通道的第一位;
通过根据第二搜索算法搜索所述第二查询平面,解码该位平面对应于所述幅度细化通道的第二位;以及
通过根据第三搜索算法搜索所述第三查询平面,解码该位平面对应于所述清理通道的第三位。
21.根据权利要求20所述的系统,其中,所述第一搜索算法、所述第二搜索算法或所述第三搜索算法包括顺序搜索算法、二分搜索算法、插值搜索算法、二分哈希搜索算法、二分搜索树算法或斐波那契搜索算法中的至少一个。
22.如权利要求20所述的系统,其中,所述第一搜索算法、所述第二搜索算法和所述第三搜索算法是相同或不同的。
23.一种非暂时性计算机可读介质,其包括指令集,当所述指令集由至少一个处理器执行时,使所述至少一个处理器实现方法,所述方法包括:
获得已编码码流;
基于所述已编码码流确定多个码块;
为所述多个码块中的每一个确定多个位平面,所述多个位平面的范围为从最高有效位平面到最低有效位平面;
为所述多个位平面中的每一个确定至少一个查询平面,其中,所述至少一个查询平面中的每一个包括指示当前解码通道期间是否要解码的位平面的系数位的二维位置数组,每个所述二维位置数组在查询平面中的位置可以与位平面中每个系数位的位置对应;以及
基于所述至少一个查询平面解码所述多个位平面中的每一个。
CN201880100487.7A 2018-12-25 2018-12-25 图像处理系统和方法 Active CN113228627B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/123366 WO2020132853A1 (en) 2018-12-25 2018-12-25 Systems and methods for image processing

Publications (2)

Publication Number Publication Date
CN113228627A CN113228627A (zh) 2021-08-06
CN113228627B true CN113228627B (zh) 2023-04-25

Family

ID=71128466

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880100487.7A Active CN113228627B (zh) 2018-12-25 2018-12-25 图像处理系统和方法

Country Status (4)

Country Link
US (1) US11245928B2 (zh)
EP (1) EP3884662A4 (zh)
CN (1) CN113228627B (zh)
WO (1) WO2020132853A1 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547280A (zh) * 2010-12-24 2012-07-04 微软公司 图像和视频解码实现

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985632B2 (en) * 2000-04-17 2006-01-10 Canon Kabushiki Kaisha Image processing system, image processing apparatus, and image processing method
US6501397B1 (en) * 2000-05-25 2002-12-31 Koninklijke Philips Electronics N.V. Bit-plane dependent signal compression
JP2002064709A (ja) 2000-06-06 2002-02-28 Canon Inc 画像処理装置及びその方法とそのコンピュータプログラム及び記憶媒体
AUPQ982400A0 (en) 2000-09-01 2000-09-28 Canon Kabushiki Kaisha Entropy encoding and decoding
TW567728B (en) 2001-02-20 2003-12-21 Sanyo Electric Co Method and apparatus for decoding graphic image
JP4119470B2 (ja) 2003-10-30 2008-07-16 Necエレクトロニクス株式会社 画像復号装置及び画像復号化方法
JP2005229441A (ja) 2004-02-13 2005-08-25 Sony Corp 画像符号化装置及び方法、並びに画像復号装置及び方法
CN1671177A (zh) * 2004-03-19 2005-09-21 北京大学 Jpeg2000分数位平面编码方法及电路
US7573406B2 (en) * 2004-05-21 2009-08-11 Broadcom Corporation System and method for decoding context adaptive variable length coding
CN101192303B (zh) 2006-11-24 2010-04-07 北京中电华大电子设计有限责任公司 适用于Jpeg2000标准的高速比特平面解码方法及电路
US8064708B2 (en) * 2007-02-28 2011-11-22 Arizona Board Of Regents On Behalf Of The University Of Arizona Methods and systems for remotely visualizing images
US8526745B2 (en) * 2009-12-03 2013-09-03 Sony Corporation Embedded graphics coding: reordered bitstream for parallel decoding
CN101848311B (zh) * 2010-02-21 2011-09-28 哈尔滨工业大学 基于Avalon总线JPEG2000的EBCOT编码器
CN102223534B (zh) 2011-06-03 2013-03-20 东南大学 用于图像压缩的全并行位平面编码方法
CN102547291B (zh) 2012-02-08 2014-07-23 中国电影科学技术研究所 基于fpga的jpeg2000图像解码装置及方法
JP5950157B2 (ja) * 2012-05-18 2016-07-13 ソニー株式会社 画像処理装置および方法、並びに、プログラム
CN103686193B (zh) * 2013-12-09 2016-09-28 中国电影科学技术研究所 一种jpeg2000图像解码和编码的方法
GB2536026A (en) * 2015-03-05 2016-09-07 Nokia Technologies Oy Method and apparatus for encoding and decoding images

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547280A (zh) * 2010-12-24 2012-07-04 微软公司 图像和视频解码实现

Also Published As

Publication number Publication date
EP3884662A4 (en) 2021-12-08
EP3884662A1 (en) 2021-09-29
WO2020132853A1 (en) 2020-07-02
CN113228627A (zh) 2021-08-06
US20210329302A1 (en) 2021-10-21
US11245928B2 (en) 2022-02-08

Similar Documents

Publication Publication Date Title
US11166048B2 (en) Method and apparatus for video coding
Dua et al. Comprehensive review of hyperspectral image compression algorithms
US6476805B1 (en) Techniques for spatial displacement estimation and multi-resolution operations on light fields
US11019365B2 (en) Methods and systems for image compression
CN108293138A (zh) 使用小波和AVC、修改的AVC、VPx、修改的VPx或修改的HEVC编码的有效和可缩放帧内视频/图像编码
Ciznicki et al. Graphics processing unit implementation of JPEG2000 for hyperspectral image compression
Dusselaar et al. Hyperspectral image compression approaches: opportunities, challenges, and future directions: discussion
US11212527B2 (en) Entropy-inspired directional filtering for image coding
Shi et al. Remote sensing image compression based on adaptive directional wavelet transform with content-dependent binary tree codec
US11967119B2 (en) Systems and methods for coding
Wang et al. Three-dimensional tarp coding for the compression of hyperspectral images
Xin et al. Soft compression for lossless image coding based on shape recognition
Cappellari et al. Resolution scalable image coding with reversible cellular automata
US20240161488A1 (en) Independent positioning of auxiliary information in neural network based picture processing
Shi et al. Remote Sensing Image Compression based on direction lifting-based block transform with content-driven Quadtree coding adaptively
CN113228627B (zh) 图像处理系统和方法
EP4340363A1 (en) Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device
EP4278603A1 (en) Configurable positions for auxiliary information input into a picture data processing neural network
Frantc et al. Separate texture and structure processing for image compression
Chen et al. Flexible Signals and Images Lossless Compression Chip Design for IoT and Industry 4.0
US20240037799A1 (en) Point cloud coding/decoding method and apparatus, device and storage medium
Barina et al. Single-loop approach to 2-D wavelet lifting with JPEG 2000 compatibility
Yagnasree et al. Image compression using neural networks
Cappellari et al. Lossy to lossless spatially scalable depth map coding with cellular automata
AU2022204911A1 (en) Method, apparatus and system for encoding and decoding a tensor

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