CN112385225A - 用于改进图像编码的方法和系统 - Google Patents

用于改进图像编码的方法和系统 Download PDF

Info

Publication number
CN112385225A
CN112385225A CN201980045130.8A CN201980045130A CN112385225A CN 112385225 A CN112385225 A CN 112385225A CN 201980045130 A CN201980045130 A CN 201980045130A CN 112385225 A CN112385225 A CN 112385225A
Authority
CN
China
Prior art keywords
image
processor
processing
tiles
encoding
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.)
Granted
Application number
CN201980045130.8A
Other languages
English (en)
Other versions
CN112385225B (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.)
Beijing Voyager Technology Co Ltd
Original Assignee
Beijing Voyager 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 Beijing Voyager Technology Co Ltd filed Critical Beijing Voyager Technology Co Ltd
Publication of CN112385225A publication Critical patent/CN112385225A/zh
Application granted granted Critical
Publication of CN112385225B publication Critical patent/CN112385225B/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/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/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/124Quantisation
    • 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/186Methods 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 colour or a chrominance component
    • 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
    • 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
    • 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

Landscapes

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

Abstract

提供了用于压缩图像的方法和系统。该方法包括由第一处理器预处理源图像以获取预处理图像,预处理图像包括至少两个图块。该方法还包括由第二处理器通过下述操作并行地处理至少两个图块中的每个图块,该操作包括:在每个图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵;以及在变换矩阵上进行量化操作以获取量化矩阵。该方法还包括由第一处理器编码量化矩阵,来获取源图像的编码数据,以形成压缩图像。

Description

用于改进图像编码的方法和系统
技术领域
本申请一般涉及图像编码领域,更具体地涉及用于图像压缩的方法和系统。
背景技术
图像压缩是一种应用于数字图像的数据压缩技术,以降低其存储或传输的成本。由于使用中央处理单元CPU或图像处理单元GPU进行压缩处理的传统方法可能会花费大量计算资源和较长的编码时间,因此需要能提高图像压缩的效率的方法和系统。在对实时编码性能有很高要求的应用领域中,例如车辆的自动行驶模式应用或者无人自驾驶车辆,则尤其需要提高图像的压缩效率。
发明内容
根据本申请的一个方面,提供了一种用一系统进行图像压缩方法。所述系统可以包括第一处理器、第二处理器和存储介质。所述存储介质可以存储用于压缩图像的指令集。所述第一处理器和第二处理器可以与所述存储介质通信,以实施存储在其中的所述指令集。所述方法可以包括,由第一处理器预处理源图像以获取预处理图像,所述预处理图像包括至少两个图块。所述方法还可以包括,由第二处理器并行地处理所述至少两个图块,对于所述至少两个图块中的每一个图块,在该图块上进行空间频率变换操作以获取在频域内代表该图块的变换矩阵,并在所述变换矩阵上进行量化操作以获取量化矩阵。所述方法还包括,由所述第一处理器,编码所述量化矩阵以获取所述源图像的编码数据。
在一些实施例中,所述预处理可以包括将所述源图像的颜色空间转换为所述预处理图像的颜色空间。
在一些实施例中,所述预处理图像的颜色空间可以是YUV颜色空间。
在一些实施例中,所述空间频率变换操作可以基于离散余弦变换DCT算法。
在一些实施例中,所述编码可以基于霍夫曼编码算法和行程长度RLE编码算法。
在一些实施例中,所述空间频率变换操作可以基于小波变换算法。
在一些实施例中,所述编码可以基于优化截取内嵌码块EBCOT编码算法。
在一些实施例中,所述第二处理器可以具有比所述第一处理器更多的处理核心。
在一些实施例中,所述第一处理器可以是中央处理单元CPU,所述第二处理器可以是图形处理单元GPU。
在一些实施例中,使用统一计算设备架构CUDA技术实现并行处理上述至少两个图块。
根据本申请的另一个方面,提供了一种用于压缩图像的设备,所述设备包括第一处理器、第二处理器和存储介质。所述存储介质可以存储用于图像压缩的指令。所属第一处理器和所述第二处理器可以与所述存储介质通信,以执行存储在存储介质中的所述指令。所述第一处理器可以被配置为预处理源图像以获取预处理图像。所述预处理图像包括至少两个图块。所述第二处理器可以被配置为并行地处理所述至少两个图块。对于所述至少两个图块的每一个图块,所述第二处理器在该图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵,并在所述变换矩阵上进行量化操作,以获取量化矩阵。所述第一处理器还被配置为编码所述量化矩阵以获取所述源图像的编码数据来形成压缩图像。
根据本申请的另一个方面,提供了一种在车辆上实施的系统。该系统包括至少两个成像传感器以及一个或以上图像处理模块。所述至少两个成像传感器可以用于拍摄源图像。所述一个或以上图像处理模块可以与所述至少两个成像传感器相关联,且可以用于处理所述至少两个成像传感器捕获的源图像,以形成压缩图像。所述一个或以上图像处理模块中的每一个包括第一处理器和第二处理器。所述第一处理器可以被配置为预处理所述至少两个成像传感器中与该图像处理模块相关联的成像传感器拍摄得到的源图像以获取预处理图像。所述预处理图像包括至少两个图块。所述第二处理器可以被配置为并行地处理所述至少两个图块,其中,对于所述至少两个图块中的每个图块,所述第二处理器在该图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵,并在所述变换矩阵上进行量化操作,以获取量化矩阵。所述第一处理器还被配置为编码所述量化矩阵,以获取该源图像的编码图像。
在一些实施例中,所述至少两个成像传感器可以包括至少一个前成像传感器。所述至少一个前成像传感器中的每一个可以分别与所述一个或以上图像处理模块中的一个图像处理模块相关联,该图像处理模块处理与其相关联的前成像传感器拍摄的前向图像。
在一些实施例中,所述至少两个成像传感器可以包括至少两个辅助成像传感器。所述至少两个辅助成像传感器可以用于拍摄所述车辆的侧向图像、后向图像或内部图像。所述至少两个辅助成像传感器可以与所述一个或以上图像处理模块中的至少一个图像处理模块向关联,所述至少一个图像处理模块处理所述至少两个辅助成像传感器拍摄的图像。
在一些实施例中,所述至少两个辅助传感器拍摄的图像可以被缓存在同一队列中,该队列通过所述至少一个图像处理模块的内存实现。所述至少一个图像处理模块可以按顺序处理该队列中缓存的图像。
在一些实施例中,所述系统还可以包括主机设备,所述主机设备至少部分基于所述至少两个成像传感器拍摄的所述源图像自动驾驶或辅助驾驶所述车辆。
在一些实施例中,所述主机设备可以包括功能模块和分析模块。所述功能模块可以被配置为至少部分基于所述至少两个成像传感器拍摄的所述源图像自动驾驶或辅助驾驶所述车辆。所述分析模块被配置为分析所述功能模块的性能,包括:使所述一个或以上图像处理模块或所述主机设备解码所述编码图像,以获得解码图像;使所述功能模块基于所述解码图像运行以获取运行结果;以及,分析所述运行结果。
在一些实施例中,所述分析模块还用于基于所述分析来优化所述功能模块的性能。
在一些实施例中,所述系统还可以包括与每个所述图像处理模块连接的存储设备。所述存储设备用于存储所连接的图像处理模块所生成的编码图像。
在一些实施例中,所述使所述一个或以上图像处理模块或所述主机设备解码所述编码图像以获得解码图像,可以包括,对于所述一个或以上图像处理模块中的每一个图像处理模块,使该图像处理模块从所连接的存储设备中读取对应的编码图像,并使该图像处理模块对该编码图像进行解码以生成对应的解码图像。
在一些实施例中,所述解码可以由相应的图像处理模块的第一处理器和第二处理器共同执行。
根据本申请的又一方面,提供了一种兼容压缩图像的非暂时性计算机可读存储介质,其包括一组兼容图像压缩的指令集。当由包括第一处理器和第二处理器的电子设备执行该组指令集时,该组指令集指示所述电子设备执行图像压缩过程。所述图像压缩过程可以包括由所述第一处理器预处理源图像以获取预处理图像,所述预处理图像包括至少两个图块。所述图像压缩过程可以包括由所述第二处理器并行地处理所述至少两个图块。对于所述至少两个图块的每一个图块,所述第二处理器在该图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵,并在所述变换矩阵上进行量化操作,以获取量化矩阵。所述图像压缩过程还可以包括由所述第一处理器编码得到的量化矩阵来获取所述源图像的编码数据,以形成压缩图像。
根据本申请的又一方面,提供了一种用于压缩图像的系统,包括预处理模块、量化模块、以及编码模块。所述预处理模块可以由第一处理器实施,可以被配置为预处理源图像以获取预处理图像。所述预处理图像包括至少两个图块。所述量化模块可以由第二处理器实施,可以被配置为通过下述操作并行地处理所述至少两个图块,所述操作包括:在每个图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵,并在所述变换矩阵上进行量化操作,以获取量化矩阵。所述编码模块可以由第一处理器实施,还可以被配置为用于编码所述量化矩阵,来获取所述源图像的编码数据,以形成压缩图像。
本申请的一部分附加特性可以在下面的描述中进行说明。通过对以下描述和相应附图的研究或者对实施例的生产或操作的了解,本申请的一部分附加特性对于本领域技术人员是明显的。本申请的特征可以通过对以下描述的具体实施例的各种方面的方法、手段和组合的实践或使用得以实现和达到。
附图说明
本实施例将通过示例性实施例进行进一步描述。这些示例实施例将通过附图进行详细描述。这些实施例是非限制性的示例实施例,在这些是实施例中,各图中相同的编号表示相似的结构,其中:
图1是根据本申请的一些实施例所示的图像编码系统的示意图;
图2示出了示例性计算设备的示意图;
图3是根据本申请的一些实施例所示的的图像编码设备的示意图;
图4是根据本申请的一些实施例所示的图像压缩过程的流程图;
图5是根据本申请的一些实施例所示的支持CUDA的GPU的示意图;
图6是根据本申请的一些实施例所示的由如图5所示的GPU执行的线程的布置的示意图;
图7是根据本申请的一些实施例所示的JPEG压缩过程的流程图;
图8是在执行如图7所示的JPEG压缩过程时的处理时间降低的示意图;
图9是在执行如图7所示的JPEG压缩过程时的CPU占用降低的示意图;
图10是根据本申请的一些实施例所示的示例图像处理系统的示意图;
图11是根据本申请的一些实施例所示的用于解码或解压缩JPEG图像的过程的流程图;
图12是根据本申请的一些实施例所示的的图像编码设备的示意图。
具体实施方式
本申请的实施例提供了用于图像编码的方法和系统,其可以包括分配给不同类型的处理器的操作。这种分配可以基于处理器的架构和操作的特征,并且可以提高图像编码的效率。具体地,编码图像的过程可以涉及第一处理器和第二处理器。第一处理器(例如,CPU)和第二处理器(例如,GPU)的硬件架构可以不同。例如,与CPU相比,GPU可以具有更适合于执行密集并行计算操作的架构,例如具有明显比CPU更多的处理核心。另外,与第二处理器相比,第一处理器可以具有更适合于执行包括复杂控制逻辑的操作的架构。例如,与GPU相比,CPU可以具有更强大的计算核心以减少操作的处理时间(例如,具有更快的时钟信号)、更大的高速缓存以提高内存访问的效率、以及更复杂的控制单元。在本申请的实施例中,图像编码过程的密集并行计算操作可以由第二处理器实现。其他操作,尤其是需要复杂控制逻辑的操作,可以由第一处理器实现。通过采用上述方法,可以显着提高编码图像的总效率,特别是对于对实时编码性能有很高要求的应用领域,例如车辆的自动行驶模式应用以及无人自驾驶车辆。
以下描述是为了使本领域的普通技术人员能够实施和利用本申请,并且该描述是在特定的应用场景及其要求的环境下提供的。对于本领域的普通技术人员来讲,显然可以对所公开的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请并不限于所描述的实施例,而应该被给予与权利要求一致的最广泛的范围。
本申请中使用了流程图用来说明根据本申请的一些实施例的系统所执行的操作。应当理解的是,流程图中的操作可以不按顺序执行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将一个或以上其他操作添加到这些流程图中。也可以从流程图中删除一个或以上操作。
在以下的详细描述中,为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。然而,本领域技术人员应该明白,可以在没有这些细节的情况下实施本申请。在其他情况下,为了避免不必要地模糊本申请的一些方面,本申请已经以相对地描述了公知的方法、程序、系统、组件和/或电路。对于本领域的普通技术人员来讲,显然可以对所公开的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请不限于所示的实施例,而是符合与申请专利范围一致的最广泛范围。
本申请中所使用的术语仅用于描述特定的示例性实施例,并不限制本申请的范围。如这里所使用的,单数形式“一”、“一个”和“该”也可以包括复数形式,除非上下文另有明确说明。还应当理解,术语“包括”、“包含”在本规范中使用时,指定所声明的特征、整数、步骤、操作、元素和/或组件的存在,但并不排除存在或添加一个或以上其他特征、整数、步骤、操作、元素、组件和/或其组。
应当理解的是,上下文中描述的术语“系统”、“单元”、“模块”和/或“引擎”,用于区分不同级别的部件、元件、组件、部件或装配。然而,如果它们实现相同的目的,则可以用另一个表达来替换这些术语。
通常,这里使用的词语“模块”、“子模块”、“单元”或“块”是指体现在硬件或固件中的逻辑,或者是软件指令的集合。本文描述的模块,单元或块可以实现为软件和/或硬件,并且可以存储在任何类型的非暂时性计算机可读介质或另一种存储设备中。在一些实施例中,可以编译软件模块/单元/块并将其链接到可执行程序中。应当理解,软件模块可以从其他模块/单元/块或从它们自身调用,和/或可以在检测到的事件或中断时被调用。
配置用于在计算设备上执行的软件模块/单元/块(例如,如图2所示的计算设备200,如图3所示的图像编码设备300)可以在计算机可读介质上提供,例如光盘、数字视频光盘、闪存驱动器、磁盘或任何其他有形介质,或作为数字下载(并且最初可以以压缩或可安装的格式存储,在执行之前需要安装,解压或解密)。这里的软件代码可以被部分的或全部的储存在执行操作的计算设备的存储设备中,并应用在计算设备的操作之中。软件指令可以被植入在固件中,例如可擦除可编程只读存储器。可以进一步理解,硬件模块/单元/块可以包括在连接的逻辑组件中,例如门控和触发器,和/或可以包括可编程单元,例如可编程门阵列或处理器。本文描述的模块/单元/块或计算设备功能可以实现为软件模块/单元/块,但是可以用硬件或固件表示。通常,这里描述的模块/单元/块指的是逻辑模块/单元/块,其可以与其他模块/单元/块组合或者分成子模块/子单元/子块,不管它们的物理组织或存储。该描述可适用于系统、引擎或其一部分。
应当理解的是,当单元、引擎、模块或块被称为“接通”、“连接到”或“耦合到”另一个单元、引擎、模块或块时,除非上下文另有明确说明,它可以直接位于、连接或耦合到该另一个单元、引擎、模块、或块,也可以位于、连接或耦合到存在的中间单元、中间引擎、中间模块或中间块。在本申请中,术语“和/或”可包括所列条目中的任何一个或多个,或其组合。
如本文所使用的,术语“图像压缩”通常可以指用于获取具有减少的数据大小的图像编码数据的图像编码操作或过程。编码数据也可以被称为编码图像或编码数据段。
如本文所使用的,密集并行计算操作可以指对并行数据执行的计算密集型操作。术语“并行数据”可以指包括可以被独立地并行地处理的大量(例如,超过100个)片段的数据(例如,图像数据)。任一片段的处理不会影响另一片段的处理结果。如本文所使用的,术语“计算密集型操作”可以指没有逻辑控制或具有简单和局域逻辑控制的算术计算密集的操作。密集并行计算操作通常涉及例如图像处理和/或图像分析相关处理。
根据以下对附图的描述,本申请的这些和其他的特征、特点以及相关结构元件的功能和操作方法,以及部件组合和制造经济性,可以变得更加显而易见,这些附图都构成本申请说明书的一部分。然而,应当理解的是,附图仅仅是为了说明和描述的目的,并不旨在限制本申请的范围。
图1是根据本申请的一些实施例所示的图像编码系统100的示意图。图像编码系统100可包括成像传感器110、图像编码设备120、存储设备130和网络140。
成像传感器110可以捕获图像。如本文所使用的,图像可以是照片、视频帧、图片、波普图等,或其组合。图像可以是模拟形式(例如,携带图像数据的电信号)或数字形式(例如,包括图像数据的数字文件)或以其呈现。成像传感器110可以感测光、波、辐射等,以生成对应的图像。例如,成像传感器110可以是相机、雷达、声纳、夜视设备、热成像设备、医学成像设备等,或其组合。
由成像传感器110直接生成的图像可以被称为源图像。
图像编码设备120可以接收由成像传感器110生成的源图像,并在源图像上执行图像编码处理以获取对应的编码数据。例如,图像编码设备120可以在源图像上执行图像压缩以减少存储或传输的成本。
图像编码设备120可以包括第一处理器121和第二处理器122。第一处理器121和第二处理器122可以具有不同的硬件架构。在一些实施例中,与第一处理器121相比,第二处理器122可具有更多处理核心,并且更适合于实现涉及密集并行计算的操作。例如,第二处理器122可以包括一百多个处理核心。在密集并行计算期间,第二处理器的数百个处理核心可以使用相同的函数或内核并行地处理不同的数据,并且通过第二处理器的任一处理核心执行的处理独立于通过第二处理器的任何其他处理核心执行的处理。
在本申请中,可以通过使用第一处理器121和第二处理器122共同进行图像编码来提高图像压缩效率。例如,第二处理器122可以执行图像编码过程中的一个或以上涉及密集并行计算的操作,而第一处理器121可以执行图像编码过程中的其他操作。通过基于第一处理器121和第二处理器122的架构和性能在两者之间分配图像编码过程中的操作,可以提高图像编码的总效率。
在一些实施例中,第一处理器121可以是中央处理单元(central processingunit,CPU),第二处理器122可以是图形处理单元(graphic processing unit,GPU)。然而,第一处理器和第二处理器也可以是任何其他适当类型的处理器,例如专用集成电路(application-specific integrated circuit,ASIC)、专用指令集处理器(application-specific instruction-set processor,ASIP)、物理处理单元(physics processingunit,PPU)、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑器件(programmable logicdevice,PLD)、微处理器等,或其任意组合。
图像编码设备可以是任何适当的设备,例如服务器、终端设备、车载计算机。在一些实施例中,图像编码设备可以是或可以包括移动计算设备、平板计算机、膝上型计算机、智能家居设备、台式计算机等,或其任意组合。示例移动计算设备可以包括可穿戴设备、移动电话、虚拟现实设备、增强现实设备、个人数字助理(PDA)、导航设备等,或其任何组合。
存储设备130可以存储由图像编码设备120生成的编码数据。存储设备130可以是或可以包括服务器、大容量存储器、可移动存储器、易失性读写存储器、只读存储器(read-only memory,ROM)、随机存取存储器(random-access memory,RAM)等,或其任何组合。示例性的大容量存储器可以包括磁盘、光盘、固态磁盘等。示例性可移动存储器可以包括闪存驱动器、软盘、光盘、存储卡、压缩盘、磁带等。示例性易失性读写存储器可包括随机存取存储器(RAM)。示例性随机存取存储器可包括动态随机存取存储器(dynamic RAM,DRAM)、双倍数据速率同步动态随机存取存储器(double date rate synchronous dynamic RAM,DDRSDRAM)、静态随机存取存储器(static RAM,SRAM)、晶闸管随机存取存储器(thyrisor RAM,T-RAM)和零电容随机存取存储器(zero-capacitor RAM,Z-RAM)等。示例性只读存储器可以包括掩模只读存储器(mask ROM,MROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦除可编程只读存储器(electrically-erasable programmable ROM,EEPROM)、光盘只读存储器(compact diskROM,CD-ROM)和数字多功能磁盘只读存储器等。
网络140可以包括可以促进图像编码系统100的组件之间的数据和信号传输的任何合适的网络。例如,网络140可以促进从成像传感器110到图像编码设备120的图像传输。又例如,网络130可以促进编码数据从图像编码设备120到存储设备130的传输。
网络140可以是和/或包括一个或以上类型的网络。例如,网络140可以是和/或包括公共网络(例如,因特网)、专用网络(例如,局部区域网络(local area network,LAN)、广域网(wide area network,WAN))、有线网络(例如,以太网)、无线网络(例如,802.11网络、Wi-Fi网络)、蜂窝网络(例如,长期演进(Long Term Evolution,LTE)网络)、帧中继网络(frame relay network)、虚拟专用网络(“VPN”)、卫星网络、蓝牙网络、紫蜂网络、近场通信(near field communication,NFC)网络等,或其任何组合。网络140还可以包括有线和/或无线网络接入点,例如基站、互联网交换点、路由器、集线器、网关、交换机、服务器计算机,和/或其任何组合。
在一些实施例中,存储设备130和图像编码设备120可以直接连接(例如,如虚线箭头所示)。存储设备130和图像编码设备120之间的数据传输可以在没有网络140的情况下直接执行。
图像编码系统100可以应用于用于图像编码的各种应用场景中(例如,压缩)。在一些实施例中,图像编码系统100可以具有如图10所示的车载系统的形式。
应注意,关于图像编码系统100的以上描述仅用于说明目的,而非旨在进行限制。应当理解,在学习了本申请的主要概念和机制之后,本领域的普通技术人员可以以非创造性的方式改变图像编码系统100。改变可以包括组合和/或拆分某些设备/组件、添加或移除可选设备/组件、改变设备/组件的连接状态,在相对领域中应用图像编码系统100等,或其任何组合。所有这些修改都在本申请的范围内。
图2是示出了示例计算设备200的示意图。计算设备200可以被配置为实现图像编码设备120,并执行本申请中公开的一个或以上操作。计算设备200可以被配置用于实现本申请中描述的各种模块,单元及其功能。
计算设备200可包括总线270、第一处理器210(或至少两个第一处理器210)、第二处理器220(或至少两个第二处理器220)、只读存储器(ROM)230、随机存取存储器(RAM)240,存储设备250(例如,诸如硬盘、光盘、固态盘、内存卡等的大量存储设备),以及通信接口260。可以注意到,图2中所示的计算设备200的架构仅用于演示目的,而不是限制性的。计算设备200可以是能够执行计算的任何设备。
总线270可以耦合计算设备200的各种组件并且便于在它们之间传输数据和/或信息。总线270可具有本领域的任何总线结构。例如,总线270可以是或可以包括内存总线和/或外围总线。通信接口260可以允许在总线270和一个或以上外围设备(例如,触摸屏、键盘、鼠标、麦克风、显示器、扬声器)之间传输数据和/或信息。通信接口260还可以允许在网络130和总线270之间传输数据和/或信息。例如,通信接口260可以是或可以包括端口、网络接口卡(NIC)、蓝牙TM模块、NFC模块等。
在一些实施例中,通过通信接口260,计算设备200可以从成像传感器110接收源图像和/或输出编码的图像数据。
ROM 230、RAM 240和/或存储设备250可以被配置用于存储可以通过第一处理器210和/或第二处理器220执行的指令。RAM 240和/或存储设备250还可以存储处理器210在执行指令期间生成的数据和/或信息。
第一处理器210和第二处理器220可以是本领域中用于执行存储在ROM 230、RAM240、存储设备220和/或其内置存储器(如果有的话)中的指令的任何处理器,以执行一个或以上为其分配的操作或实现本申请中披露的一个或以上模块/单元。仅作为示例,第一处理器210和第二处理器220可以包括一个或以上硬件处理器,例如中央处理单元(CPU)、特定应用集成电路(ASIC)、特定应用指令集处理器(ASIP)、图像处理单元(GPU)、物理运算处理单元(PPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等,或其任意组合。
第二处理器220可包括比第一处理器210更多的处理单元。例如,第二处理器220可以是一个GPU或一组并行运行的GPU,而第一处理器210可以是一个CPU或一组并行运行的CPU。又例如,第二处理器220可以是包括许多处理核心(例如,大于100)的一组并行运行的CPU,而第一处理器210可以是与第二处理器220相比包括更少的处理核心(例如,不超过32个)的一个CPU或一组并行运行的CPU。
在一些实施例中,计算设备200可以是单个设备或包括具有与图2中所示相同或相似的架构的至少两个计算设备。在一些实施例中,计算设备200可以执行个人计算机(PC)或任何其他类型的工作站或终端设备。如果适当地编程,计算设备200还可以充当服务器。
在后文中,为了便于描述,将CPU用作第一处理器210的示例,而GPU用作第二处理器220的示例。应当理解,具有其他适当架构的处理器(例如前文概述的那些)也可以用作第一处理器和/或第二处理器。
图3是根据本申请的一些实施例所示的图像编码设备300的示意图。图像编码设备300可以是图1中的图像编码设备120的示例。图像编码设备300可以包括CPU 310、GPU 320、CPU内存330、GPU内存340和全局内存350。图像编码设备300可以使用CPU 310和GPU 320来执行图像编码处理,其中图像编码处理的不同操作可以被分配给不同的处理器。
根据本申请的一些实施例,CPU 310和GPU 320可以分别代表第一处理器121或210和第二处理器122或220。通常,诸如CPU 310的CPU的硬件架构可以使其能够执行多种操作(或任务),其中包括与复杂控制逻辑相关的操作。然而,诸如GPU 320的GPU可以具有专门用于第i密集并行计算的硬件架构。通常,GPU可以具有运行相同内核(kernel)的上百个处理核心以并行地处理不同数据(例如,图像相关数据)。与GPU相比,CPU可以仅具有数个处理核心,但是可以具有更强大的逻辑控制能力。
在一些实施例中,CPU 310和GPU 320也可以集成在一起作为单个芯片(例如,加速处理单元)。然而,这样的芯片同样可以包括功能类似CPU的第一组处理核心以及功能类似GPU的第二组处理核心。上述第一组处理核心和第二组处理核心也可以分别被视为CPU(或第一处理器)和GPU(或第二处理器)。
GPU 320可以利用并行计算技术来辅助其进行数据处理。例如,该并行计算技术可以基于开放计算语言(Open Computing Language,OpenCL)、开放图形库(Open GraphicsLibrary,OpenGL)、统一计算设备架构(Compute Unified Device Architecture,CUDA)等技术。可以根据GPU 320的架构来选择GPU 320采用的并行计算技术,反之亦然。
在一些实施例中,CPU 310可以包括并行运行的一组CPU。或者,GPU 320可以包括并行运行的一组GPU。
CPU内存330可以存储CPU 310的指令和数据。CPU内存330可以包括CPU指令331和CPU缓存332。CPU指令331可以包括图像编码相关指令,当由CPU 310执行时,该指令可以使CPU 310执行如本申请中所描述的分配给CPU 310的操作。CPU缓存332可以用于缓存由CPU310处理和生成的数据。
GPU内存340可以存储GPU 320的指令和数据。GPU内存340可以包括GPU指令341和GPU缓存342。GPU指令341可以包括图像编码相关指令,当由GPU 340执行时,其该指令可以使GPU 340执行如本申请中所描述的分配给GPU 340的操作。GPU缓存342可以用于缓存由GPU 320处理和生成的数据。
可以在CPU缓存332和GPU缓存342之间传输数据。由CPU 310生成并将由GPU 320处理的数据可以从CPU缓存332传输(例如,复制)到GPU缓存342。由GPU 320生成并将由CPU310处理的数据可以从GPU缓存342传输(例如,复制)到CPU缓存332。在一些实施例中,CPU内存330和GPU内存340可以集成在一起并由CPU 310和GPU 320共享。则CPU缓存332和GPU缓存342可以包括重叠部分用于缓存由其中一个处理器生成并将由另一个处理器处理的数据,并且该缓存过程可以被视为上述数据传输。
全局内存350可以存储图像编码设备300的输入和输出数据。全局内存350可以包括第一缓存351和第二缓存352。第一缓存351可以缓存(例如,由成像传感器110生成的源图像)将由图像编码设备300进行编码的图像。第二缓存352可以缓存由图像编码设备300生成的编码数据。然后该编码数据可以从第二缓存352传输到存储设备(例如,存储设备130)以进行存储。
全局内存350可以由如图2所示的RAM 240或存储设备250实现。
在一些实施例中,全局内存350还可以存储将由CPU 310和/或GPU 320执行的指令(例如,以应用程序或软件的形式)。当图像编码设备300将执行图像编码时,对应的指令可以分别作为CPU指令331和GPU指令341从全局内存350传输到CPU内存330和/或GPU内存340。
在一些实施例中,图像编码设备300可以用于编码成像传感器110实时捕获的视频流。视频流的帧(即,源图像)可以缓存在由第一缓存351实现的第一队列中。图像编码设备300可以顺序地对帧进行编码以获取对应的编码帧(即,编码数据),然后可以在由第二缓存352实现的第二队列中顺序地缓存该编码帧。然后,图像编码设备300可以以编码视频的形式输出缓存的编码帧。
在一些实施例中,CPU 310和CPU内存330可以集成在一起(例如,以集成芯片或电路板的形式),并且GPU 320和GPU内存340可以集成在一起(例如,以集成芯片或电路板的形式)。在一些实施例中,全局内存350和CPU内存330可以集成在一起。
图像编码设备300可以执行如图4所示的图像编码处理。
应注意,以上关于图像编码设备300的描述仅用于说明目的,而不是限制性的。应当理解,在理解了本申请的主要概念和机制之后,本领域的普通技术人员可以以非创造性方式改变图像编码设备300。改变可以包括组合和/或分割组件,添加或移除可选组件等.诸如此类的修正和改变均在本申请的保护范围之内。
图4是根据本申请的一些实施例所示的用于图像压缩的过程400的流程图。过程400可以由图像处理设备300实现,以编码由成像传感器110生成的源图像或经由网络140获得的或可从可移动存储介质访问的任何图像。过程400可以由CPU(例如,CPU 310)和GPU(例如,GPU 320)联合执行。在一些实施例中,图4中所示的过程400可以在图1中所示的图像编码系统100中实现(例如,通过图像编码设备120)。例如,图4中示出的过程400的操作可以以指令的形式存储在一个或以上存储设备(例如,CPU内存330、GPU内存340、全局内存350)中(例如,CPU指令331,、GPU指令341),并且分别由CPU 310和GPU 320调用和/或执行。
在一些实施例中,可以将图像压缩相关技术引入到过程400中,从而可以调整过程400以压缩图像,例如由成像传感器110生成的源图像。例如,可以在过程400中引入联合图像专家组(Joint Photographic Experts Group,JPEG)相关技术和/或JPEG 2000相关技术以获取压缩图像。作为示例,过程400可以被描述为用于获取压缩图像的过程,尤其是JPEG图像或JPEG 2000图像。然而,应注意,其他图像编码相关技术,例如用于格式化、传输(例如,根据无线传输协议)、存储、压缩、加密等或其组合的技术,也可以引入过程400以获取对应的编码数据。
过程400可以包括由CPU 310实现的操作(例如,操作410、420、440和450)以及由GPU 320实现的操作(例如,包括子操作431和432的操作430)。在一些实施例中,过程400可以进一步包括一个或以上可选操作。可以根据可选操作的类型(例如,是否涉及密集并行计算)、CPU 310和GPU 320的负载平衡、和/或CPU缓存332和GPU缓存342之间的数据传输效率来将该可选操作分配给CPU 310或GPU 320。
在410中,CPU 310可以获取源图像。源图像可以是数字图片或数字视频帧。源图像可以通过成像传感器110生成,先存储或缓存在全局内存350的第一缓存351中,然后再缓存在CPU缓存332中。
在420中,CPU 310可以预处理源图像以获取预处理图像。预处理图像可包括至少两个图块。可以在CPU缓存332中生成并缓存上述预处理图像或上述至少两个图块。
在一些实施例中,该预处理可以包括多个与图像处理相关的操作作为操作420的子操作。这些子操作可以被安排为一条流水线,其中,一个子操作的输出可以是其下游子操作的输入。上述预处理图像可以是由流水线的最后一个子操作所生成的最终图像。
在一些实施例中,由CPU 310执行的预处理可以包括颜色空间转换操作。根据成像传感器110的软硬件配置,源图像可以具有根据第一颜色空间设定的格式。例如,第一颜色空间可以是RGB颜色空间。通过对输入(其也可以具有根据第一颜色空间设定的格式)执行颜色空间转换操作,输出图像可以具有根据第二颜色空间设定的格式,而最终预处理图像也可以具有根据第二颜色空间设定的格式。第二颜色空间可以是适合于执行图像编码的颜色空间或基于实际需要而选择的颜色空间。在一些实施例中,可以执行该图像编码以用于图像压缩。相应地,第二颜色空间可以是YUV(或YCbCr)颜色空间或任何其他适当的颜色空间,以最小化由数据丢失引起的视觉效果的降低。当第一颜色空间本身适合于图像编码时,可以去除或跳过颜色空间转换操作。
颜色空间转换操作不是一个数据并行的操作。在颜色空间转换操作中,待生成图像的某个像素的数据要基于被处理图像的其他像素的数据来进行计算。此外,考虑到CPU310和GPU 320的负载平衡,以及CPU内存330和GPU内存340之间的数据传输的成本,由CPU310执行颜色空间转换操作可以具有更好的效果。
在一些实施例中,由CPU 310执行的预处理可以包括分块操作。可以对源图像或基于源图像获得的图像执行分块操作。通过执行分块操作,可以将被执行分块操作的图像划分为至少两个图块,每个图块可以是图像中的一个矩形或方形区域。在一些实施例中,上述至少两个图块中的大部分可以具有相同的尺寸以便于通过GPU 320执行后续处理。根据预处理图像的大小/形状,预处理图像边缘处的图块与其他图块相比可具有不同的大小/形状。
图块的大小可以任意选择,或者根据GPU 320的架构或其使用的并行计算技术来选择。在一些实施例中,可以使用CUDA技术来并行处理上述至少两个图块,并且图块的大小可以设置为8像素×8像素以获取更好的加工性能。
分块操作可以作为预处理的最后操作来执行,但这不是严格要求。例如,如果预处理中的某个子操作可以并行地在分块操作获得的图块上进行而不明显降低其效果,则可以在这样的子操作之前安排分块操作。
在一些实施例中,预处理图像的颜色空间可以包括多个颜色通道,则在其中的每个颜色通道下都可以进行图块的获取。例如,预处理图像可以具有根据YUV(或YCbCr)颜色空间设定的格式,其可以包括三个颜色通道:Y、U和V。相应地,预处理图像可以包括与三个颜色通道对应的三个子图像。在分块操作期间,可以根据相同的划分模式分割三个子图像,则可以在三种颜色通道中的每一个下获取N个图块(N≥2)。在分块操作结束后,可以获取总共3N个图块。这3N个图块可以送至操作430或预处理中的下游子操作进行处理。
预处理图像的图块的数据可以被缓存(或存储)在CPU缓存332中,然后可以将其传送到GPU缓存342以进行进一步处理。在一些实施例中,根据预处理图像的图块,CPU 310可以生成并布置将由GPU 320执行的线程,使得GPU 320可以实现图像处理操作430。然后,CPU310可以将安排好的线程传输到GPU 320或GPU内存340。当GPU 320的处理核心执行线程时,可以使该处理核心从GPU缓存342读取对应的数据、处理该数据以获得处理数据,并且将处理数据传输回GPU缓存342。根据线程的布置,GPU 320的处理核心可以并行地处理上述至少两个图块。在一些实施例中,GPU 320可以采用基于CUDA的并行计算技术,而对应的线程布置在图6中示出。
在430中,GPU 320可以并行处理在操作420中获得的预处理图像的图块,以获取至少两个处理矩阵。操作430可以包括用于处理上述图块的至少两个子过程。操作430的任一子过程可独立于操作430的任何其他子过程。
上述至少两个子过程可以共享同一组子操作,例如子操作431和子操作432(可选)。GPU 320可以串行地执行同一子过程的子操作。为了便于说明,可以以对上述图块中的第i图块进行处理生成上述至少两个处理矩阵中的第i处理矩阵为例来描述子操作431和432,第i其中i是介于1和图块总数之间的整数。
在431中,GPU 320可以对第i图块执行空间频率变换操作以获取第i变换矩阵。该变换矩阵可以代表频域中的对应图块。空间频率变换可以基于傅立叶变换(Fouriertransformation,FT)、快速傅立叶变换(fast Fourier transformation,FFT)、离散余弦变换(discrete cosine transformation,DCT)、小波变换(wavelet transformation,WT)、离散小波变换(DWT)等,或其变体,或其任意组合。
在432中,GPU 320可以对第i变换矩阵执行量化操作以获取第i量化矩阵。量化操作可涉及系数矩阵。该系数矩阵和第i变换矩阵可以具有相同的尺寸。在量化操作期间,第i变换矩阵的每个元素可以除以该系数矩阵的对应元素(例如,具有相同坐标的元素)并舍入到最接近的整数。得到的矩阵则是第i量化矩阵。执行量化操作可以将一定范围内的数值压缩为单个量子值,从而减少源图像中较不重要的信息(例如,源图像的高频分量)以便于进一步压缩。
子操作432是可选的。在一些实施例中,可以从处理第i图块的子过程中移除子操作432,则经由过程400可以无损压缩源图像。
在一些实施例中,可以根据实际需要选择或预先确定系数矩阵,以调整源图像的压缩比。
在一些实施例中,可以使用不同的系数矩阵来处理不同颜色通道的图块,使得不同颜色通道下的数据可以具有不同的压缩比,从而在增加源图像的总压缩比的同时不会显着影响通过解压缩被压缩图像所获得的图像的视觉效果或处理效率。例如,当预处理图像具有YUV(或YCbCr)颜色空间时,可以使用第一系数矩阵处理Y颜色通道的图块,并使用第二系数矩阵处理U和V颜色通道的图块,使得U和V颜色通道下的数据可以具有比Y颜色通道下的数据更高的压缩比,并且不会显着降低人眼的视觉效果。
在一些实施例中,可以采用基于CUDA的并行计算技术来处理上述至少两个图块,使得过程400可以由支持CUDA的GPU芯片实现。相关描述可以在本申请的其他部分找到(例如,图5、6和7的描述)。应注意,诸如OpenGL和OpenCL的其他并行计算算法也可以被采用,使得过程400可通过不支持CUDA的GPU芯片实现。
在一些实施例中,在子操作432中获得的第i量化矩阵可以作为将由CPU 310进一步处理的第i处理矩阵。
在一些实施例中,可以去除子操作432,则第i变换矩阵可以作为将由CPU 310进一步处理的第i处理矩阵。
在一些实施例中,可以从用于处理第i图块的子过程中移除子操作432。然而,该子过程中还包括一个或以上在子操作431之后执行的其他子操作。通过对第i变换矩阵执行上述一个或以上其他子操作而获得的矩阵则可以作为将由CPU 310进一步处理的第i处理矩阵。
由GPU 320生成的上述至少两个处理矩阵可以缓存(或存储)在GPU缓存342中,然后传输到CPU缓存332以进行进一步处理。量化的矩阵的传输可以由GPU 320引发或者由CPU310引发。
在440中,CPU 310可以对上述至少两个处理矩阵进行编码以获取编码数据。由于编码过程中可能包括复杂控制逻辑,或者编码过程不以数据并行的方式执行,因此可以将操作440分配给CPU 310。
可以根据实际需要设置用于编码上述至少两个处理矩阵的编码算法。例如,在不同的实施例中,编码算法可以包括用于格式化、传输、存储、压缩、加密等的一个或以上算法,或其组合。在一些实施例中,编码算法可以基于熵编码算法,其可以包括霍夫曼编码算法(Huffman encoding algorithm)、游程编码(Run-Length Encoding,RLE)算法、优化截取内嵌码块编码(Embedded Block Coding with Optimal Truncation,EBCOT)算法等,或其组合。编码数据可以形成源图像的压缩图像。
在一些实施例中,可以根据分块操作的划分模式顺序地组合上述至少两个处理矩阵以形成组合矩阵。然后可以对该组合矩阵执行编码以获取编码数据。
在一些实施例中,上述至少两个处理矩阵可以分别由CPU 310(并行或串行)编码。对上述至少两个处理矩阵中的每一个进行编码可以生成对应的编码数据段。根据分块操作的划分模式来组合所获得的编码数据段可以形成编码数据。
在一些实施例中,在编码期间,上述至少两个处理矩阵可以由CPU 310(并行或串行)处理以生成对应的中间数据段。然后,可以根据分块操作的划分模式组合这些中间数据段以形成组合数据。CPU 310可以进一步处理该组合数据以获取编码数据。
编码数据可以被缓存(或存储)在CPU缓存332中。然后在450中,CPU 310可以引发编码数据从CPU缓存332到存储设备中的传输以进行存储。例如,可以将编码数据传输到存储设备130以进行存储。又例如,编码数据可以经由网络140传输到远程存储设备(例如,服务器)。
在一些实施例中,图像编码设备300可以重复过程400以编码视频帧。在操作410中获得的源图像可以是视频流的帧,并且经由过程400获得的编码数据可以是对应的编码帧。视频流的帧可以缓存在由全局内存350的第一缓存351实现的第一队列中,并且由CPU 310顺序读取以进行编码。然后,编码帧可以被传输到全局内存350并且被缓存在由第二缓存352实现的第二队列中。然后,图像编码设备300可以将缓存的编码帧以编码视频的形式输出,并将其传输到存储设备(例如,存储设备130)以进行存储。
在一些实施例中,可以使过程400流水化,并且CPU 310和GPU 320可以同时运行以编码多个图像(例如,视频流的帧)。例如,在CPU 310正在执行操作440以编码一第一图像的处理矩阵时,与此同时,GPU 320可以执行操作430以处理一第二图像的图块。
可以对过程400进行各种修改。下面列出了示例性修改,这些修改仅用于说明而不旨在限制。
在一些实施例中,量化操作中的舍入操作可以跳过或去除。然后,子操作432可以作为图像加密或图像掩蔽的操作,而上述系数矩阵可以用作密码的至少一部分以解密图像。
在一些实施例中,子操作432还可以涉及用于图像加密或图像掩蔽的偏置矩阵。偏置矩阵和第i变换矩阵也可以具有相同的尺寸。在子操作432中,经由量化操作(包括或不包括舍入操作)获得的矩阵的每个元素可以与偏置矩阵的对应元素相加。然后可以对所得矩阵执行操作440。这种偏置矩阵也可以用作密码的至少一部分来解密图像。
在一些实施例中,过程400可以进一步包括用于增强源图像的视觉效果的一个或以上操作。例如,上述一个或以上操作可以包括降噪、模糊抑制、色彩平衡等,或其组合。根据操作的类型和/或数据通信成本,适合于由CPU 310执行的操作可以包括在操作420中作为预处理的子操作,而适合通过GPU 320执行的操作可以包括在操作430中的上述至少两个子处理。如果一个分配给GPU 320的操作是在空间域中执行,则可以在子操作431之前安排这样的操作。如果一个分配给GPU 320的操作是在频域中执行,则可以在子操作431之后但在子操作432之前安排这样的操作。
在一些实施例中,图像编码设备300可以执行过程400以进行JPEG/MPEG压缩。
应注意,过程400的以上描述仅用于说明目的,而非旨在限制。可以理解的是,在理解了本申请的主要概念之后,本领域的普通技术人员可以以非创造性的方式改变过程400。例如,上述操作可以以与图4中所示的顺序不同的顺序实现。一个或以上可选操作可以添加到过程400或从过程400中移除。可以拆分或组合一个或以上操作。所有这些修改都在本申请的范围内。
图5是根据本申请的一些实施例所示的支持CUDA的GPU 500的示意图。GPU 500可以是GPU 320的示例,并且可以包括至少两个多处理器510。上述至少两个多处理器510中的每一个可以包括至少两个线程处理器511和一个共享存储器519。线程处理器511可以是前述处理核心,其也可被称为CUDA核心。属于同一个多处理器510的线程处理器511可以通过对应的共享内存519共享数据。GPU 500的多处理器510可以具有相同数量(例如,8个)的线程处理器511。在一些实施例中,多处理器510还可以包括用于增强其性能的其他组件。
GPU 500可以包括GPU内存520或与GPU内存520通信。GPU存储器520可以是GPU内存340或GPU缓存342的实施例,并且可以用于缓存待由线程处理器511处理的数据和由线程处理器511生成的数据。
图6是根据本申请的一些实施例所示的由如图5所示的GPU执行的线程的布置的示意图。GPU 500的内核可以通过执行至少两个线程611来实行。每一个线程611可以由GPU500的一个线程处理器611执行以处理对应的部分数据(例如,对应的图块)。同一内核的线程611可以运行相同的代码以处理不同的数据部分。
同一内核的线程611可以被布置为一个核网格(kernel grid)600,其包括至少两个线程块(thread block)610。每一个线程块610可以由待由属于同一个多处理器510的线程处理器511执行的线程611形成。线程块610的线程611和对应的多处理器510的线程处理器510可以具有一一对应关系。同一线程块610的线程611可以通过对应的共享存储器519共享数据来配合协作并同步执行以配合存储器的访问。线程块610的每个线程611可以由其线程号(例如,序列号、二元或三元数组)来标识。核网格600的每个线程块610可以由块号(例如,序列号、二元数组)来标识。基于块号和线程号,各个线程可以独立访问待处理数据的不同部分(例如,对应于不同图块或不同变换矩阵的数据),从而实现并行执行。
为了在待处理的数据上运行内核(例如,子操作431或432中涉及的内核),GPU 500可以执行对应的核网格600。核网格600的多个线程块611可以由多个多处理器510并行地执行,而同一线程块610的线程611可以通过对应的多处理器510的多个线程处理器511并行地执行。在核网格600中的线程块611的数量可以与GPU 500中的多处理器510的数量相同或不同。GPU 500可以批量执行线程块611,直到执行完核网格600的所有线程块611为止。然后,GPU 500可以执行下一个核网格600以运行下一个内核。
图7是根据本申请的一些实施例所示的用于JPEG压缩的过程700的流程图。过程700可以是过程400的实施例,并且可以由图像处理设备300实现以对源图像执行JPEG压缩。过程700可以由CPU(例如,CPU 310)和GPU(例如,GPU 320、GPU 500)联合执行。在一些实施例中,图7中所示的过程700可以在图1中所示的图像编码系统100中实现(例如,通过图像编码设备120)。例如,图7中示出的过程700的操作可以以指令的形式存储在一个或以上存储设备(例如,CPU内存330、GPU内存340、GPU内存520、全局内存350)中(例如,CPU指令331、GPU指令341),并且分别由CPU 310和GPU 500调用和/或执行。
过程700可以包括由CPU 310实现的操作(例如,操作710、720、730、750和760)以及由GPU 320实现的操作(例如,包括子操作741和742的操作740)。GPU500可以执行采用CUDA技术的操作740(例如,如图5和6中所示)。在一些实施例中,过程700可以进一步包括分配给CPU 310或GPU 500的一个或以上可选操作。过程700的细节可以在图4、5和6的描述中找到,这里不再重复。
在710中,CPU 310可以获取源图像。源图像可以是数字图片或数字视频的帧。操作710可以与操作410相同或类似。在720中,CPU 310可以对源图像执行颜色空间转换以获取预处理图像。预处理图像的颜色空间可以是YUV(或YCbCr)颜色空间。在730中,CPU 310可以对预处理图像执行分块操作以获取至少两个图块。可以根据架构或GPU 500来设置图块的大小。在一些实施例中,图块的大小可以设定为8像素×8像素。在分块操作期间,可以根据相同的划分模式分割预处理图像的对应于三色通道Y、U和V的三个子图像,并且每种颜色通道下可以获取相同数量的图块。操作720和730可以与操作420相似或相同。预处理图像的图块的数据可以被缓存(或存储)在CPU缓存332中,然后可以将其传送到内存GPU 520以进行进一步处理。
在740中,GPU 500可以使用CUDA技术并行地处理上述至少两个图块以获取至少两个量化的矩阵。操作740可以包括用于处理上述至少两个图块的至少两个子过程。上述至少两个子过程可以共享同一组子操作,例如子操作741和子操作742。为了便于说明,可以以处理上述至少两个图块中的第i图块以生成上述至少两个量化的矩阵的第i量化矩阵为例来描述子操作741和742,其中i是一个介于1和图块总数之间的整数。在741中,GPU 500可以对第i图块执行DCT操作以获取第i变换矩阵。在742中,GPU 500可以对第i变换矩阵执行量化操作以获取第i量化矩阵。子操作742是可选的。在一些实施例中,可以去除子操作742,并且可以通过过程700无损压缩源图像。
通过执行一系列如图6所示的核网格可以实现并行地执行上述至少两个子过程。每个核网格可以对应于在所有图块上执行的上述子操作或该子操作的其中一个步骤。核网格的线程可以由GPU 500的线程处理器511执行以处理相应的图块。核网格的线程块可以由GPU 500的多处理器511执行以处理对应数量的图块(例如,8个图块)。GPU 500可以批量地执行核网格的线程。例如,要处理的图块的数量可以是3072,并且GPU 500的线程处理器511的数量可以是128。则每个核网格的线程的数量可以是3072或3072的倍数。由于GPU 500可以在每个处理周期中并行执行最多128个线程,对于每个核网格,至少要进行24个处理周期来处理所有的图块。GPU 500生成的上述至少两个量化矩阵可以被缓存(或存储)在GPU存储器520中,然后被传输到CPU缓存332中以进行进一步处理。
在750中,CPU 310可以在上述至少两个量化矩阵上执行熵编码。例如,CPU 310可以对上述至少两个量化矩阵中的每一个执行RLE算法以将相似的频率分组在一起、插入长度编码零、然后执行霍夫曼编码以获取编码数据作为JPEG图像或者MPEG视频帧。可以将编码数据缓存(或存储)在CPU缓存332中。然后在450中,CPU 310可以引发将编码数据从CPU缓存332到一存储设备的传输以进行存储。
在一些实施例中,通过调整过程700可以实现JPEG 2000压缩。例如,在子操作741中,DCT操作可以由小波变换操作代替。对应地,在操作750中,CPU 310可以基于EBCOT算法来执行编码以替代RLE算法和霍夫曼编码。
应注意,过程700的以上描述仅用于演示目的,而非旨在进行限制。可以理解的是,在学习了本申请的主要概念之后,本领域的普通技术人员可以以非创造性的方式改变过程700。例如,上述操作可以以与图7中所示的顺序不同的顺序实现。一个或以上可选操作可以添加到过程700或从过程700中移除。可以拆分或组合一个或以上操作。所有这些修改都在本申请的范围内。
图8和9是根据本申请的一些实施例所示对图7的图像编码过程的编码效率的改进的图。图8是在执行如图7所示的JPEG压缩过程时的处理时间降低的示意图。图9是在执行如图7所示的JPEG压缩过程时的CPU占用降低的示意图。图8和图9中的方法1表示仅通过CPU执行的传统的JPEG压缩,而图8和图9中的方法2表示由如图7所示的过程700实现的JPEG压缩,其通过以上CPU和支持CUDA的GPU共同执行。所用CPU为
Figure BDA0002882414380000221
E5-2667 CPU,其具有8个处理核心以及3.20GHz的频率。所用GPU为
Figure BDA0002882414380000222
PascalTM GPU,其具有256个CUDA核心。待处理图像(即图像1~6)的尺寸为1920像素×1200像素,设定的分块大小为8像素×8像素。分别在图像1~6上执行方法1和方法2,从图8和9可以看出,与方法1相比,方法2显着地减少了压缩图像的时间成本和CPU占用,其缩短了大约60%的处理时间并释放了大约40%的CPU占用。节省的计算资源可以分配给CPU要执行的其他任务。
图10是根据本申请的一些实施例所示的的示例图像处理系统1000的示意图。图像处理系统1000可以是图像编码系统100的示例,并且可以在车辆1001上实现,以便于车辆1001的行驶、测试和/或维护。图像处理系统1000可包括至少两个成像传感器1010、至少两个图像处理模块1020、至少两个存储设备1030、主机设备1040、交换机1050,一个或以上其他传感器1060(可选),以及图10中未示出的任何其他组件。
交换机1050可以实现车载局域网络1051,用于在图像处理系统1000的组件之间传送数据。局域网络1051可以是网络140的实施例。局域网络1051可以是有线的或无线的。优选地,由于局域网络1051传输的数据包括大尺寸图像数据,例如由上述至少两个成像传感器1010捕获的视频帧,局域网络1051可以是有线网络,例如以太网。对应地,交换机1050可以是以太网交换机。然而,还有一种可能的情况是,局域网络1051是诸如WI-FITM网络的无线网络,而交换机1050是无线路由器。
成像传感器1010可以是成像传感器110的实施例,并且可以被配置用于感测围绕车辆1001的区域并且捕获对应的源图像,例如视频流的帧。成像传感器1010可以是相机、红外成像器、夜视成像器等,或其组合。由上述至少两个成像传感器1010捕获的源图像可以被传输到上述至少两个图像处理模块1020以进行图像处理(例如,编码、压缩)。在一些实施例中,源图像也可以被传输到主机设备1040以用于其他用途,例如自动驾驶、行人检测、车辆检测、障碍物检测等。
在一些实施例中,上述至少两个成像传感器1010可包括用于拍摄车辆前方的至少一个前成像传感器(例如,成像传感器1011)。由前成像传感器生成的源图像也可以被称为前向图像。或者,上述至少两个成像传感器1010可以包括用于拍摄车辆的侧向/后向/内部的一个或以上辅助成像传感器(例如,成像传感器1012和1013)。对应地,由辅助成像传感器生成的源图像也可以被称为后向/侧向内部图像。前成像传感器和辅助成像传感器可以具有相同或不同的配置。由上述至少两个成像传感器1010生成的源图像可以经由局域网络1051传输到上述至少两个图像处理模块1020。
图像处理模块1020可以被用于处理通过上述至少两个成像传感器1010中的一个或以上成像传感器所拍摄的源图像。在一些实施例中,上述至少两个图像处理模块1020中的至少一部分图像处理模块可以是图像编码设备120或图像编码设备300的实施例,并且可以通过本申请中描述的图像编码过程(例如过程400或700)来编码源图像。在一些实施例中,上述至少两个图像处理模块1020中的至少一部分图像处理模块可以在源图像的处理期间执行本申请中描述或未描述的一个或以上其他图像处理操作。
在一些实施例中,上述至少两个成像传感器1010和上述至少两个图像处理模块1020可以具有一对一的对应关系。图像处理模块1020可以仅处理通过对应的成像传感器1010生成的源图像。
在一些实施例中,上述至少两个图像处理模块1020中的至少一个可以处理由多个成像传感器1010生成的源图像。例如,由上述多个成像传感器1010生成的源图像可以缓存在同一个由图像处理模块1020的内存(例如,全局存储器350)实现的队列中,并且图像处理模块1020可以按顺序处理在队列中缓存的源图像。
在一些实施例中,上述至少两个成像传感器1010可包括一个或以上前成像传感器和一个或以上辅助成像传感器。该一个或以上前成像传感器中的每一个可以与至少一个指定的图像处理模块相关联,其可以处理其相应的前成像传感器拍摄的前向图像。上述一个或以上辅助成像传感器可以与其他图像处理模块中的至少一个相关联,其可以处理辅助成像传感器拍摄的侧向/后向/内部图像。例如,如图10所示,图像处理模块#1可以仅处理通过成像传感器1011生成的前向图像,而图像处理模块#2可以处理分别由成像传感器1012和成像传感器1013产生侧向图像和后向图像。侧向图像和后向图像可以缓存在同一个由图像处理模块#2的内存实现的队列中,并且图像处理模块#2可以按顺序处理缓存在队列中的侧向图像和后向图像。这样的配置可以确保当计算资源有限时,为更重要的前向图像的处理分配更多的计算资源,以提高行驶的安全性和/或行驶记录的质量。
在计算资源和/或存储资源有限时,在前向图像和侧向/后向/内部图像的处理中,还可以可选地采用一个或以上其他资源分配的方法。这些方法可以单独采用或联合采用。如下提供一些示例性方法,这些方法仅用于示例而非旨在限制。
在一些实施例中,前成像传感器和辅助成像传感器可以具有不同的配置,使得前向图像可以具有比侧向/后向/内部图像更高的质量(例如,分辨率)。因此,在使用相同的处理方法(例如,过程400或700)时,与前向图像的处理相比,侧向/后向/内部图像的处理可具有较少的计算资源消耗。
在一些实施例中,可以使用不同的算法或不同的参数组来处理或编码侧向/后向/内部图像和前向图像。例如,与前向图像相比,可以使用具有较低计算资源消耗但处理结果较差的算法来处理侧向/后向/内部图像。又例如,为了降低存储资源的总占用,可以通过例如在子操作432或742中使用不同的系数矩阵,以比前向图像更高的压缩比来压缩侧向/后向/内部图像。
在一些实施例中,由辅助成像传感器拍摄的侧向/后向/内部图像可以由图像处理模块选择性地处理或编码以减少计算负担。例如,这里可以采用与帧丢弃相关的技术来选择要处理或忽略处理的侧向/后向/内部图像。又例如,可以根据障碍物检测(或行人/车辆检测)结果来选择要处理的侧向/后向图像。当一个或以上其他传感器1060检测到在车辆1001的侧面/后面的区域中有障碍物(例如,车辆、行人、建筑物、设施、动物)时,对应的图像处理模块1020可以启动对由对应的辅助成像传感器拍摄的侧向/后向图像的处理。否则,可以跳过处理、以不同的算法或不同的参数集进行处理、以更高的丢帧率处理等。
需要注意的是,前向/后向/侧向/内部图像的重要性(或优先级)是基于车辆1011的行驶状态确定的。在不同情况下,可以改变处理源图像的策略。例如,当车辆1001停车或临时停车时,前向/后向/侧向/内部图像的处理可以具有相同的优先级,并且可以平等地分享计算资源。又例如,当车辆1001正在后退时,后向图像可能更重要,则可以以类似于上述方法之一的方法将更多的计算资源分配给后向图像的处理(例如,将后向图像视为前述“前向图像”,并将前向图像视为前述“后向图像”)。
在一些实施例中,上述至少两个图像处理模块1020均可以是独立设备。在一些实施例中,上述至少两个图像处理模块1020中的至少一些可以是隶属于同一设备的组件。在一些实施例中,上述至少两个图像处理模块1020可以是主机设备1040的组件,但是由不同的逻辑电路实现。
上述至少两个存储设备1030可以被配置用于存储通过上述至少两个图像处理模块1020生成的处理图像(例如,编码数据、压缩图像)。存储设备1030可以是存储设备130的实施例。
在一些实施例中,上述至少两个存储设备1030和上述至少两个图像处理模块1020可以具有一对一的对应关系。每个存储设备1030可以仅存储对应的图像处理模块1020生成的处理图像。每个存储设备1030可以通过独立于局域网络1051的有线连接连接到对应的图像处理模块1020上。例如,图10中所示的存储设备#1可以仅存储由图像处理模块#1生成的处理图像。在一些实施例中,存储设备1030可以是直接插入相应图像处理模块的端口的硬盘,例如通用串行总线(Universal Serial Bus,USB)硬盘。
在一些实施例中,上述至少两个存储设备1030的一个或以上可以存储由多个图像处理模块1020生成的处理图像。同样可行的是,将上述至少两个存储设备1030合并为单个存储设备,或者上述至少两个存储设备1030可以经由局域网络1051接收经处理的图像。
主机设备1040可以是车辆1001的车载计算设备,并且可以基于由上述至少两个成像传感器1010拍摄的图像和/或由一个或以上其他传感器1060(如果有的话)获得的数据来运行。例如,基于通过上述至少两个成像传感器1010生成的数据和/或由上述一个或以上传感器1060生成的数据,主机设备1040可以自主地驱动车辆1001、自动停放车辆1001、进行行车记录、执行障碍物检测、计划车辆1001的导航轨迹、通过指示转弯的路口和相应的转弯方向来引导驾驶、监控车辆1001的状态/参数、监控车辆1001的内部是否存在安全问题、提供车上服务、分析司机的行驶行为、警告司机/乘客即将到来的危险(例如,交通事故)、记录事故、事故责任分析、发生事故时与有关部分联系等,或者其组合。
在一些实施例中,根据主机设备1040的配置,车辆1001可以包括自动驾驶模式。当启动自动驾驶模式时,主机设备1040可以自动驾驶车辆100,在此期间,主机设备1040可以至少基于上述至少两个成像传感器110拍摄的源图像来执行上述功能的一个或以上。在一些实施例中,车辆1001可以进一步包括手动驾驶模式。当启动手动驾驶模式时,人类司机可以在有或没有主机设备1040的辅助下手动驾驶车辆1001。
在不同的实施例中,上述一个或以上其他传感器1060可包括全球定位系统(GPS)传感器、一个或以上距离传感器(例如,激光雷达、雷达、声纳)、压力传感器、温度传感器、陀螺仪、加速度计等,或其组合。由上述一个或多个传感器1060生成的数据可以经由局域网络1051或任何其他连接(例如,如图10中的虚线箭头所示)传输到主机设备1040。
在一些实施例中,主机设备1040可以包括功能模块1041和分析模块1042(可选)。功能模块1041可以被配置为执行主机设备1040的上述功能的一个或以上,诸如自主驾驶、障碍物检测等,以自动驾驶车辆1001或辅助驾驶车辆1001。功能模块1041可以至少部分基于上述至少两个成像传感器1010生成的图像运行。分析模块1042可以用于测试功能模块1041的性能,以避免由功能模块1041的故障引起的事故、优化功能模块1041的性能等。在一些实施例中,可以从主机设备1040移除分析模块1042。
在一些实施例中,通过上述至少两个成像传感器1010生成的源图像可以通过局域网络1051从上述至少两个成像传感器1010直接传输到主机设备1040,并且功能模块1041可以直接基于源图像运行。在一些实施例中,源图像的副本也可以被传输到上述至少两个图像处理模块1020并由其处理。得到的处理图像(例如,编码图像)可以存储在上述至少两个存储设备1030中用于,例如,记录车辆1001的行驶。或者,所存储的处理图像可以由主机设备1040稍后读取以用作它用,例如显示行驶记录、分析功能模块1041的性能、将处理图像传输到外部存储设备等,或其组合。
在一些实施例中,上述至少两个成像传感器1010生成的源图像可以首先由上述至少两个图像处理模块1020处理以生成上述至少两个处理图像。处理图像可以被缓存或存储在上述至少两个存储设备1030中。然后,功能模块1041可以从上述至少两个存储设备1030访问处理图像并基于其运行。例如,当对应的存储设备1030直接连接到局域网络1051时,功能模块1041可以经由局域网络1051直接访问处理图像。又例如,当存储设备直接与图像处理模块1020连接时,功能模块1041可以经由局域网络1051和对应的图像处理模块1020访问处理图像,该图像处理模块1020可以作为到存储设备1030的链接。
在一些实施例中,缓存或存储在上述至少两个存储设备1030中的处理图像可以通过上述至少两个图像处理模块1020进行进一步处理以生成对应的再处理图像,然后再处理图像会被传输到主机设备1040。然后,功能模块1041可以基于再处理图像运行。例如,响应于功能模块1041或用户发送的指令,图像处理模块1020(例如,图像处理模块#1)可以读取存储在对应的存储设备1030(例如,存储设备#1)中的处理图像、进一步对该处理图像进行处理以生成再处理图像、并经由局域网络1051将再处理图像传输到主机设备1040。
在一些特定的实施例中,由图像处理模块1020生成并存储在存储设备1030中的处理图像可以是编码图像,例如压缩图像。对应地,上述进一步处理可以是图像解码或图像解压缩,而上述再处理图像可以是解码图像,例如解压缩图像。响应于主机设备1040或用户发送的指令,图像处理模块1020可以读取编码图像(或压缩图像),对该编码图像进行解码(或解压缩)以获取解码图像(或解压缩图像),并将解码图像传输到主机设备1040。然后,功能模块1041可以基于解码图像来运行,和/或经由显示设备(例如,屏幕、触摸屏)将解码图像显示给用户。
该解码过程可以与为了生成上述解码图像而执行的编码过程(例如,处理400或700)兼容。例如,当处理图像是经由过程700生成的JPEG图像或MPEG视频帧时,图像处理模块1020可以采用能够解码JPEG图像或MPEG视频的任何解码方法来进行解码。
在不同的实施例中,根据所采用的解码方法,解码过程可以仅由图像处理模块1020的CPU(例如,CPU 310)单独执行、仅由图像处理模块1020的GPU(例如,GPU 320或者GPU500)单独执行、或者由CPU和GPU联合执行。一种示例解码过程结合图11进行描述。
图11是根据本申请的一些实施例所示的用于解码或解压缩JPEG图像的过程1100的流程图。过程1100可以是过程700的逆过程,并且可以由CPU(例如,CPU 310)和GPU(例如,GPU 320或GPU 500)联合执行。在一些实施例中,图11中所示的过程1100可以在图1所示的图像编码系统100中实现(例如,通过图像编码设备120)。例如,图11中示出的过程1100的操作可以以指令的形式存储在一个或以上存储设备(例如,CPU内存330、GPU内存340、GPU内存520、全局内存350)中(例如,CPU指令331、GPU指令341),并且分别由CPU 310和GPU 320/500调用和/或执行。
过程1100可以响应于功能模块1041或用户的一个或以上指令来启动。在一些实施例中,过程1100可以包括通过CPU 310实现的操作(例如,操作1110、1120、1130、1150和1160)以及通过GPU 500实现的操作(例如,操作1140,其包括子操作1141和1142)。GPU 500可以采用CUDA技术来执行操作1140(例如,如图5和6中所示)。在一些实施例中,过程1100还可以包括分配给CPU 310或GPU 500的一个或以上可选操作。由于过程1100可以被视为过程700的逆过程,因此此处不提供过程1100的细节。
在1110中,CPU 310可以从存储编码图像的存储设备(例如,存储设备130,上述至少两个存储设备1030中的一个)获取编码图像,诸如JPEG图像。在1120中,CPU 310可以对编码图像执行熵解码以生成中间矩阵。在1130中,CPU 310可以对中间矩阵执行分块操作以获取至少两个矩阵块。过程1100中的所述至少两个矩阵块可以对应于过程700中的所述至少两个量化矩阵。过程1100中的矩阵块的大小可以与过程700中的图块的大小相同(例如,8像素×8像素)。上述至少两个矩阵块的数据可以被缓存(或存储)在CPU缓存332中,然后可以将其传输到GPU内存520以进行进一步处理。
在1140中,GPU 500可以使用CUDA技术并行地处理上述至少两个矩阵块以获取解码图像的至少两个图像块。过程1100中所述至少两个图像块可以对应于过程700中所述至少两个图块。过程1100中的解码图像可以对应于过程700中的预处理图像。操作1140可以包括用于处理上述至少两个矩阵块的至少两个子过程。上述至少两个子过程可以共享同一组子操作,例如子操作1141和子操作1142。为了便于说明,可以以处理上述至少两个矩阵块中的第i矩阵块以生成解码图像的第i图像块为例来描述子操作741和742,其中i介于是1和矩阵块总数之间的整数。
在1141中,GPU 500可以对上述至少两个矩阵块的第i矩阵块执行反量化操作以获取第i反量化矩阵。过程1100中的第i反量化矩阵可以对应于过程700中的第i变换矩阵。在1142中,GPU 500可以对第i反量化矩阵执行反向离散余弦变换(反向DCT)操作以获取第i图像块。过程1100中的第i图像块可以对应于过程700中的第i图块。
可以通过执行一系列如图6所示的核网格来实现并行执行上述至少两个子过程。根据操作730中分块操作的划分方式组织或合并(通过GPU 500或GPU 310)上述至少两个图像块,可以形成解码图像。GPU 500生成的上述至少两个图像块或解码图像的数据可以被缓存(或存储)在GPU存储器520中,然后传输到CPU缓存332以进行进一步处理。
在1150中,CPU 310可以对解码图像执行颜色空间转换以转换解码图像的颜色空间。例如,解码图像的颜色空间可以是YUV(或YCbCr)颜色空间,其可以在1150中被转换为RGB颜色空间或任何其他适当的颜色空间。在一些实施例中,主机设备1040可以直接基于YUV图像运行,则可以去除操作1150。
在1160中,GPU 310可以将解码图像(已进行或未进行颜色空间转换)传输到主机设备1040。在一些实施例中,通过重复过程1100生成的至少两个解码图像可以首先被传输到全局内存350进行缓存,然后作为视频流被传输到主机设备1040。
通过将过程1100中的操作在CPU 310和GPU 500两者之间进行分配,可以提高处理效率并且减少CPU 310的占用。过程1100还可以作为一般解压缩过程通过通用计算设备来执行以解压缩JPEG图像。然后在1160中,CPU 310可以将解码图像传输到存储设备以进行存储。或者,操作1160可以是可选的,并且GPU 500可以将解码的图像输出到显示设备以进行显示。可选地,GPU 500可以在显示之前对解码图像执行颜色空间转换或任何其他必要操作(例如,渲染)。
在一些实施例中,还可以改变过程1100以解码经由过程700的实施例获得的其他类型的编码图像,例如JPEG 2000图像。
需要注意的是,以上关于过程1100的描述仅用于说明,而不旨在限制性。可以理解的是,在理解了本申请的主要概念之后,本领域的普通技术人员可以以非创造性的方式改变过程1100。例如,上述操作可以以与图11中所示的顺序不同的顺序实现。可以向过程1100添加或移除一个或以上可选操作。可以拆分或组合一个或以上操作。所有这些修改都在本申请的范围内。
再回到图10。在传统方法中,图像处理操作可能仅由主机设备1040执行,并且可能花费其大量计算资源。因此,主机设备1040的其他重要任务(例如自动驾驶)可能受到很大干扰,因为这些任务之间不得不竞争有限的计算资源。通过利用图10中所示的架构,主机设备1040的一部分计算量,尤其是由图像处理操作(例如,图像编码,图像解码)引起的那一部分,可以被分配给上述至少两个图像处理模块1020。这种分布式计算布局可以提高整个车载系统的运行效率,降低由计算资源的竞争和主机设备1040的故障引起的事故风险,并且便于车辆1001的整个车载系统的维护等。
在一些实施例中,编码处理和解码处理都可以通过上述至少两个图像处理模块1020执行,以充分利用上述至少两个图像处理模块1020的计算资源。
在一些实施例中,由于与对应的编码处理相比,解码处理通常仅花费较少的计算资源,所以上述至少两个编码图像的解码也可以通过主机设备1040(或其模块)代替上述至少两个图像处理模块1020来执行。例如,主机设备1040(或其模块)可以经由由局域网络1051和对应的图像处理模块1020形成的通信路线从对应的存储设备1030访问编码图像。在获取编码图像之后,主机设备1040可以执行图11中所示的过程1100以提高的解码效率生成解码图像。然后,功能模块1041可以读取解码图像并基于其运行。对应地,主机设备1040也可以具有如图2或图3所示的架构。
分析模块1041可以基于存储在上述至少两个存储设备1030中的处理图像运行功能模块1041的性能测试。处理图像可以是由上述至少两个图像处理模块1020通过对上述至少两个成像传感器1010拍摄的源图像进行编码(例如,过程400或700)而获得的编码图像。分析模块1041可以使得上述至少两个图像处理模块1020或主机设备1040执行编码图像的解码(例如,经由过程1100)以获取解码图像、使得功能模块1041基于上述解码图像运行以得到运行结果、通过显示设备显示上述解码图像、基于运行结果分析功能模块1041的性能、和/或基于分析结果改善或优化功能模块1041的性能。分析模块1041可以实现功能模块1041的性能的离线分析。
在一些特定实施例中,上述至少两个成像传感器1010中的每一个可以与一个用于图像编码(例如,经由过程400或700)的图像处理模块1020相关联,并与一个用于储存对应编码图像的存储设备1030相关联。例如,第j成像传感器1010可以与第j图像处理模块1020和第j存储设备1030相关联,其中j是介于1和上述至少两个成像传感器1010的总数之间的整数。第j存储设备1030可以直接与第j图像处理模块1020连接。响应于功能模块1041或分析模块1042发送的指令,第j图像处理模块1020可以从第j存储设备1030读取编码图像(第j编码图像),解码第j编码图像(例如,经由过程1100)以获取第j解码图像。分析模块1042可以使功能模块1041经由局域网络1051从第j图像处理模型1020中获取第j解码图像。这样的一对一布局可以有助于图像处理系统1000的构造,并且减少由图像处理系统1000的任何组件的故障造成的影响。
如下提供详细示例,这些示例用于说明且不旨在限制。
例如,功能模块1041可以至少部分基于上述至少两个成像传感器1010获得的源图像进行障碍物检测。分析模块1042可以使功能模块1041将解码图像视为通过上述至少两个成像传感器1010实时获得的源图像。在功能模块1041执行障碍物检测之后,分析模块1042可以分析障碍物检测的结果、识别正确检测到的障碍物、错误检测到的障碍物、和/或未检测到的障碍物、并且自适应地调整功能模块1041执行障碍物检测的参数。分析模块1042可以自动或半自动地运行。在一些实施例中,由一个或以上其他传感器1060收集的传感器数据也可用于障碍物检测。例如,传感器1060可以包括激光雷达、GPS传感器、加速度计、陀螺仪等,或其组合。由一个或以上其他传感器1060收集的传感器数据也可以被记录或存储在存储设备(图10中未示出)中,然后由功能模块1041和/或分析模块1042读取以进行性能测试。在一些特定实施例中,功能模块1041可以使用诸如卷积神经网络(convolution neuralnetwork,CNN)模型的机器学习模型来执行障碍物检测(或任何其他功能)。分析模块1042可以至少基于解码的图像和记录的传感器数据(如果有的话)训练模型或调整模型的参数。
又例如,功能模块1041可以至少部分基于上述至少两个成像传感器1010获得的源图像和一个或以上其他传感器1060收集的传感器数据(如果有的话)来规划用于导航车辆1001的轨迹。功能模块1041可以使用预设的模型来规划轨迹。分析模块1042可以使得上述至少两个图像处理模块1041对编码图像进行解码、读取解码图像、并经由显示器将解码图像显示给技术人员。技术人员可以根据解码图像通过分析模块1042调整模型的参数。
需要注意的是,上述至少两个图像处理模块1020并不一定具有如本文所披露的配置结构(例如,图2和图3)。此外,上述至少两个图像处理模块1020也并不一定执行如本文所披露的过程(例如,过程400和700)来进行图像编码。图像处理系统1000的分布式计算架构可以与任何本文中披露的或没有披露的图像编码方法兼容。相应地,上述至少两个图像处理模块1020也可以具有任何合适的配置结构来实现所采取的图像编码方法。
图12是根据本申请的一些实施例所示的的图像编码设备1200的示意图。图像编码设备1200可以是如图1所示的图像编码设备120的示例,并可以执行本文中所述的任何图像编码过程,例如过程400或700。图像编码设备1200可以是逻辑设备(例如,软件或应用程序包)并且可以由诸如计算设备200的计算设备实现。图像编码设备1200还可以被视为图像编码设备300的逻辑部分,并且可以由图像编码设备300的硬件组件实现。
图像编码设备1200可以包括预处理模块1210、量化模块1220和编码模块1230。相应地,图像编码设备300的各个模块也可以是逻辑模块,并且可以由计算设备200或者图像编码装置300的硬件组件实现。
预处理模块1210可以由第一处理器210或310实现。预处理模块1210可以用于预处理源图像以获取预处理图像,该预处理图像包括至少两个图块。
量化模块1220可以由第二处理器220,320或500实现。量化模块1220用于并行地处理上述至少两个图块。对于上述至少两个图块的每一个图块,量化模块1220可以在该图块上进行空间频率变换操作以获取在频域内代表该图块的变换矩阵,并在该变换矩阵上进行量化操作以获取量化矩阵。
编码模块1230可以由第一处理器210或310实现。编码模块1230可以用于编码所述量化矩阵以获取源图像的编码数据。在一些实施例中,该编码数据可以是源图像的压缩图像。
图像编码设备1200或其模块的细节可以在本文的其他部分找到(例如,图4和图7的相关描述),在此不再赘述。
已经如此描述了基本概念,在阅读本详细的本申请之后,对于本领域普通技术人员可能相当明显,前述详细的本申请可能仅旨在通过示例的方式呈现并且可能不是限制性的。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。例如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特性。因此,应当强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定系指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括韧体、常驻软件、微代码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“单元”、“模块”或“系统”。此外,本申请的各方面可以采取体现在一个或以上计算机可读介质中的计算机程序产品的形式,其中计算机可读程序代码包含在其中。
计算机可读信号介质可能包含一个内含有计算机程序代码的传播数据信号,例如在基带上或作为载波的一部分。此类传播信号可以有多种形式,包括电磁形式、光形式等或任何合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通信、传播或传输供使用的程序。位于计算机可读信号介质上的程序代码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF等,或任何上述介质的组合。
本申请各部分操作所需的计算机程序代码可以用任意一种或以上程序设计语言编写,包括面向对象程序设计语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化程序设计语言如C程序设计语言、Visual Basic、Fortran2103、Perl、COBOL 2102、PHP、ABAP,动态程序设计语言如Python、Ruby,和Groovy,或其他程序设计语言等。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述本申请通过各种示例讨论了当前可能被认为是本申请的各种有用的实施例,但是可以理解,这样的细节可以仅用于该目的,并且附加的权利要求不限于所公开的实施例,而是相反,旨在覆盖在所公开的实施例的精神和范围内的修改和等同布置。例如,尽管上述各种组件的实现可以体现在硬件设备中,但是它也可以实现为仅软件解决方案,例如,在现有服务器或移动设备上的安装。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请的实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,本申请的该方法可以不被解释为反映所要求保护的主题需要比每个权利要求中明确记载的更多特征的意图。相反,发明的主体应具备比上述单一实施例更少的特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
本文中提及的所有专利、专利申请、专利申请公布和其他材料(如论文、书籍、说明书、出版物、记录、事物和/或类似的东西)均在此通过引用的方式全部并入本文以达到所有目的,与上述文件相关的任何起诉文档记录、与本文件不一致或冲突的任何上述文件或对迟早与本文件相关的权利要求书的广泛范畴有限定作用的任何上述文件除外。举例来说,如果在描述、定义和/或与任何所结合的材料相关联的术语的使用和与本文件相关联的术语之间存在任何不一致或冲突,则描述、定义和/或在本文件中使用的术语以本文件为准。
最后,应当理解的是,本申请中所述实施例仅用以说明本申请实施例的原则。其他的变形也可能属于本申请的范围。因此,作为示例而非限制,本申请实施例的替代配置可视为与本申请的教导一致。因此,本申请的实施例不限于精确地如所示和所述的那些。

Claims (41)

1.一种利用一系统进行图像压缩的方法,所述系统包括:
存储介质,所述存储介质存储用于图像压缩的指令集;
第一处理器,
第二处理器,其中,所述第一处理器和所述第二处理器与所述存储介质通信,以实施存储在其中的所述指令集,
所述方法包括:
(i)由所述第一处理器预处理源图像以获取预处理图像,所述预处理图像包括至少两个图块;
(ii)由所述第二处理器通过下述操作并行地处理所述至少两个图块中的每个图块,所述操作包括:
在每个图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵;以
在所述变换矩阵上进行量化操作以获取量化矩阵;以及
(iii)由所述第一处理器编码所述量化矩阵,来获取所述源图像的编码数据,以形成压缩图像。
2.根据权利要求1所述的方法,其特征在于:
所述预处理包括将所述源图像的颜色空间转换为所述预处理图像的颜色空间。
3.根据权利要求2所述的方法,其特征在于,所述预处理图像的颜色空间是YUV颜色空间。
4.根据前述权利要求中任意一个所述的方法,其特征在于,所述空间频率变换操作基于离散余弦变换DCT算法。
5.根据权利要求4所述的方法,其特征在于,所述编码基于霍夫曼编码算法和行程长度RLE编码算法。
6.根据权利要求1至3所述的方法,其特征在于,所述空间频率变换操作基于小波变换算法。
7.根据权利要求6所述的方法,其特征在于,所述编码基于优化截取内嵌码块EBCOT编码算法。
8.根据前述权利要求中任意一个所述的方法,其特征在于,所述第二处理器包括比所述第一处理器更多的处理核心。
9.根据前述权利要求中任意一个所述的方法,其特征在于:
所述第一处理器是中央处理单元CPU,所述第二处理器是图形处理单元GPU。
10.根据前述权利要求中任意一个所述的方法,其特征在于:
使用统一计算设备架构CUDA技术实现所述并行地处理所述至少两个图块。
11.一种用于图像编码的设备,包括:
存储介质,所述存储介质存储用于图像压缩的指令集;
第一处理器,以及
第二处理器,
其中,所述第一处理和第二处理与所述存储介质通信,以实施存储在其中的所述指令集,
其中,所述第一处理器被配置为预处理源图像以获取预处理图像,所述预处理图像包括至少两个图块;
其中,所述第二处理器被配置为通过下述操作并行地处理所述至少两个图块中的每个图块,所述操作包括:
在每个图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵;以及
在所述变换矩阵上进行量化操作以获取量化矩阵;以及
所述第一处理器还被配置为编码所述量化矩阵,来获取所述源图像的编码数据,以形成压缩图像。
12.根据权利要求11所述的设备,所述预处理包括:
将所述源图像的颜色空间转换为所述预处理图像的颜色空间。
13.根据权利要求12所述的设备,其特征在于,所述预处理图像的颜色空间是YUV颜色空间。
14.根据权利要求11至13所述的设备,其特征在于,所述空间频率变换操作基于离散余弦变换DCT算法。
15.根据权利要求14所述的设备,其特征在于,所述编码基于霍夫曼编码算法和行程长度RLE编码算法。
16.根据权利要求11至13所述的设备,其特征在于,所述空间频率变换操作基于小波变换算法。
17.根据权利要求16所述的设备,其特征在于,所述编码基于优化截取内嵌码块EBCOT编码算法。
18.根据权利要求11至17所述的设备,其特征在于,所述第二处理器包括比所述第一处理器更多的处理核心。
19.根据权利要求11至18所述的设备,其特征在于:
所述第一处理器是中央处理单元CPU,所述第二处理器是图形处理单元GPU。
20.根据权利要求11至19所述的设备,其特征在于:
使用统一计算设备架构CUDA技术实现所述并行地处理所述至少两个图块。
21.一种执行在车辆上的系统,包括:
至少两个成像传感器,所述成像传感器用于拍摄源图像;以及
与所述至少两个成像传感器相关联的一个或以上图像处理模块,所述图像处理模块用于处理所述至少两个成像传感器拍摄的源图像;
其中,所述一个或以上图像处理模块中的每一个图像处理模块包括:
第一处理器,被配置为预处理由所述至少两个成像传感器中相关联的成像传感器拍摄的源图像以获取预处理图像,所述预处理图像包括至少两个图块;以及
第二处理器,被配置为通过下述操作并行地处理所述至少两个图块中的每个图块,所述操作包括:
在每个图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵;以及
在所述变换矩阵上进行量化操作,以获取量化矩阵;
以及
所述第一处理器还被配置为编码所述量化矩阵,来获取该源图像的编码图像,以形成压缩图像。
22.根据权利要求21所述的系统,其特征在于:
所述至少两个成像传感器包括至少一个前成像传感器,所述至少一个前成像传感器用于拍摄所述车辆的前向图像;以及
每一个前成像传感器中与至少一个指定的图像处理模块相关联,所述至少一个指定的图像处理模块处理与其相关联的前成像传感器拍摄的图像。
23.根据权利要求21或权利要求22所述的系统,其特征在于:
所述至少两个成像传感器包括至少两个辅助成像传感器,所述至少两个辅助成像传感器用于拍摄所述车辆的侧向图像、后向图像或内部图像;以及
所述至少两个辅助成像传感器与至少一个图像处理模块相关联,所述至少一个图像处理模块处理所述至少两个辅助成像传感器拍摄的图像。
24.根据权利要求23所述的系统,其特征在于:
所述至少两个辅助成像传感器拍摄的图像被缓存在同一队列中,所述队列通过所述至少一个图像处理模块的内存实现;以及
所述至少一个图像处理模块按顺序处理缓存在所述队列中的侧向图像和后向图像。
25.根据权利要求21至24所述的系统,其特征在于:
所述系统还包括主机设备,所述主机设备至少部分基于所述至少两个成像传感器拍摄的所述源图像自动驾驶或辅助驾驶所述车辆。
26.根据权利要求25所述的系统,其特征在于,所述主机设备包括:
功能模块,被配置为至少部分基于所述至少两个成像传感器拍摄的所述源图像自动驾驶或辅助驾驶所述车辆;以及
分析模块,被配置为通过下述操作分析所述功能模块的性能,所述操作包括:
使所述一个或以上图像处理模块或所述主机设备解压缩所述编码图像,以获得解压缩图像;
使所述功能模块基于所述解码图像运行以获取运行结果;以及
分析所述运行结果。
27.根据权利要求26所述的系统,其特征在于,所述分析模块还被配置为基于所述分析优化所述功能模块的性能。
28.根据权利要求26所述的系统,所述系统还包括与每个图像处理模块连接的存储设备,所述存储设备用于存储所述每个图像处理模块生成的所述压缩图像。
29.根据权利要求28所述的系统,其特征在于,所述使所述一个或以上图像处理模块或所述主机设备解压缩所述编码图像以获得解压缩图像包括:
对于所述一个或以上图像处理模块中的每一个图像处理模块:
使所述图像处理模块从所连接的存储设备中检索对应的压缩图像;以及
使所述图像处理模块通过解压缩所述压缩图像生成所述压缩图像中对应的压缩图像。
30.根据权利要求29所述的系统,所述解压缩所述压缩图像由所述图像处理模块的所述第一处理器和第二处理器共同执行。
31.根据权利要求21至30所述的系统,其特征在于,所述预处理包括:
将所述源图像的颜色空间转换为所述预处理图像的颜色空间。
32.根据权利要求31所述的系统,其特征在于,所述预处理图像的颜色空间是YUV颜色空间。
33.根据权利要求21至32所述的系统,其特征在于,所述空间频率变换操作基于离散余弦变换DCT算法。
34.根据权利要求33所述的系统,其特征在于,所述编码基于霍夫曼编码算法和行程长度RLE编码算法。
35.根据权利要求21至32所述的系统,其特征在于,所述空间频率变换操作基于小波变换算法。
36.根据权利要求35所述的系统,其特征在于,所述编码基于优化截取内嵌码块EBCOT编码算法。
37.根据权利要求21至36所述的系统,其特征在于,所述第二处理器包括比所述第一处理器更多的处理核心。
38.根据权利要求21至37所述的系统,其特征在于:
所述第一处理器是中央处理单元CPU,所述第二处理器是图形处理单元GPU。
39.根据权利要求21至38所述的系统,其特征在于:
使用统一计算设备架构CUDA技术实现所述并行地处理所述至少两个图块。
40.一种非暂时性计算机可读介质,包括一组兼容图像压缩的指令集,其特征在于,所述指令集被包括第一处理和第二处理器的电子设备实施时,使所述电子设备执行图像压缩过程,包括:
(i)由第一处理器预处理源图像以获取预处理图像,所述预处理图像包括至少两个图块;
(ii)由第二处理器通过下述操作并行地处理所述至少两个图块中的每个图块,所述操作包括:
在每个图块上进行空间频率变换操作以获取在频域内代表该图块的变换矩阵;以及
在所述变换矩阵上进行量化操作以获取量化矩阵;
以及
(iii)由所述第一处理器,编码所述量化矩阵来获取所述源图像的编码数据,以形成压缩图像。
41.一种用于图像压缩的系统,其特征在于,包括;
预处理模块,由第一处理器实施,用于预处理源图像以获取预处理图像,所述预处理图像包括至少两个图块;
量化模块,由第二处理器实施,用于通过下述操作并行地处理所述至少两个图块中的每一个图块,所述操作包括:
在每个图块上进行空间频率变换操作,以获取在频域内代表该图块的变换矩阵;以及
在所述变换矩阵上进行量化操作以获取量化矩阵;以及
编码模块,由所述第一处理器实施,用于编码所述量化矩阵,来获取所述源图像的编码数据,以形成压缩图像。
CN201980045130.8A 2019-09-02 2019-09-02 用于改进图像编码的方法和系统 Active CN112385225B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/103949 WO2021042232A1 (en) 2019-09-02 2019-09-02 Methods and systems for improved image encoding

Publications (2)

Publication Number Publication Date
CN112385225A true CN112385225A (zh) 2021-02-19
CN112385225B CN112385225B (zh) 2023-07-25

Family

ID=74586601

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980045130.8A Active CN112385225B (zh) 2019-09-02 2019-09-02 用于改进图像编码的方法和系统

Country Status (2)

Country Link
CN (1) CN112385225B (zh)
WO (1) WO2021042232A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023093474A1 (zh) * 2021-11-24 2023-06-01 北京字跳网络技术有限公司 一种多媒体处理方法、装置、设备及介质
CN117389571A (zh) * 2023-12-11 2024-01-12 芯动微电子科技(武汉)有限公司 一种基于opencl的jpeg2000中t1并行解码方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103167295A (zh) * 2011-12-16 2013-06-19 三星电子株式会社 处理图像信号的方法和设备
US20170214930A1 (en) * 2016-01-26 2017-07-27 Sandia Corporation Gpu-assisted lossless data compression
CN107231558A (zh) * 2017-05-23 2017-10-03 江苏火米互动科技有限公司 一种基于cuda的h.264并行编码器的实现方法
CN107333136A (zh) * 2017-06-26 2017-11-07 西安万像电子科技有限公司 图像编码方法和装置
CN109391816A (zh) * 2018-10-26 2019-02-26 大连理工大学 基于cpu+gpu异构平台实现hevc中熵编码环节的并行处理方法
CN109495743A (zh) * 2018-11-15 2019-03-19 上海电力学院 一种基于异构多处理平台的并行化视频编码方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105847800B (zh) * 2016-05-18 2018-10-09 山东大学(威海) 基于全相位离散正弦双正交变换的图像压缩方法及系统
CN107835429B (zh) * 2017-10-31 2020-10-13 北京信息科技大学 一种高光谱图像的压缩方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103167295A (zh) * 2011-12-16 2013-06-19 三星电子株式会社 处理图像信号的方法和设备
US20170214930A1 (en) * 2016-01-26 2017-07-27 Sandia Corporation Gpu-assisted lossless data compression
CN107231558A (zh) * 2017-05-23 2017-10-03 江苏火米互动科技有限公司 一种基于cuda的h.264并行编码器的实现方法
CN107333136A (zh) * 2017-06-26 2017-11-07 西安万像电子科技有限公司 图像编码方法和装置
CN109391816A (zh) * 2018-10-26 2019-02-26 大连理工大学 基于cpu+gpu异构平台实现hevc中熵编码环节的并行处理方法
CN109495743A (zh) * 2018-11-15 2019-03-19 上海电力学院 一种基于异构多处理平台的并行化视频编码方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023093474A1 (zh) * 2021-11-24 2023-06-01 北京字跳网络技术有限公司 一种多媒体处理方法、装置、设备及介质
CN117389571A (zh) * 2023-12-11 2024-01-12 芯动微电子科技(武汉)有限公司 一种基于opencl的jpeg2000中t1并行解码方法和装置
CN117389571B (zh) * 2023-12-11 2024-04-12 芯动微电子科技(武汉)有限公司 一种基于opencl的jpeg2000中t1并行解码方法和装置

Also Published As

Publication number Publication date
CN112385225B (zh) 2023-07-25
WO2021042232A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
EP3555844B1 (en) Method and device for processing multi-channel feature map images
US10582250B2 (en) Integrated video codec and inference engine
JP2021535689A (ja) ディープ・ニューラル・ネットワークのための圧縮方法、チップ、電子デバイス、および媒体
US10445402B1 (en) Fast and energy-efficient region of interest pooling for object detection with convolutional neural network
US11570477B2 (en) Data preprocessing and data augmentation in frequency domain
US11526702B2 (en) Unsupervised multi-scale disparity/optical flow fusion
CN112385225B (zh) 用于改进图像编码的方法和系统
US10411727B1 (en) High throughput hardware unit providing efficient lossless data compression in convolution neural networks
CN110856035A (zh) 处理图像数据以执行对象检测
US11620816B1 (en) Hardware efficient RoI align
US11816871B2 (en) Real-time low latency computer vision/machine learning compute accelerator with smart convolutional neural network scheduler
CN115701583A (zh) 将处理任务卸载到解耦加速器以提高片上系统中的性能
CN115701589A (zh) 用于片上系统的可编程视觉加速器的内置自测试
CN114761968B (zh) 用于频域静态通道滤波的方法、系统和存储介质
US11694422B2 (en) Method to improve accuracy of quantized multi-stage object detection network
US11568251B1 (en) Dynamic quantization for models run on edge devices
US11302035B2 (en) Processing images using hybrid infinite impulse response (TTR) and finite impulse response (FIR) convolution block
CN116310179A (zh) 点云补全方法、装置、设备和介质
US11521300B2 (en) Edge preserving noise reduction algorithm using inverse exponential function optimization
CN114066713A (zh) 基于小波变换提升图像处理效率的系统及方法
US20200186816A1 (en) Video data processing
US11615304B1 (en) Quantization aware training by constraining input
US11659194B2 (en) Method of adjusting bitrate of image and image capturing apparatus
WO2023117534A1 (en) Image compression by means of artificial neural networks
CN111684484A (zh) Dwt运算装置、方法、图像处理装置和可移动平台

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