CN116418994A - 一种图像编码方法以及装置 - Google Patents

一种图像编码方法以及装置 Download PDF

Info

Publication number
CN116418994A
CN116418994A CN202111640001.9A CN202111640001A CN116418994A CN 116418994 A CN116418994 A CN 116418994A CN 202111640001 A CN202111640001 A CN 202111640001A CN 116418994 A CN116418994 A CN 116418994A
Authority
CN
China
Prior art keywords
memory
slice
preset
height
divided
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.)
Pending
Application number
CN202111640001.9A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111640001.9A priority Critical patent/CN116418994A/zh
Priority to PCT/CN2022/142277 priority patent/WO2023125518A1/zh
Publication of CN116418994A publication Critical patent/CN116418994A/zh
Pending legal-status Critical Current

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/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • 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/423Methods 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 characterised by memory arrangements

Landscapes

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

Abstract

本申请涉及一种图像编码方法以及装置,用于通过内存映射的方式对存储的图像进行编码,减少内存拷贝,提高编码效率。该方法包括:首先,为输入图像分配存储内存;将存储内存划分为多个内存切片;随后通过编码器从所述多个内存切片中至少一个内存切片的地址读取数据并进行编码,得到编码数据。

Description

一种图像编码方法以及装置
技术领域
本申请涉及人工智能领域,尤其涉及一种图像编码方法以及装置。
背景技术
在一些与图像相关的场景中,如拍照、图像互传等场景中,通常需要对图像进行编码以进行保存。而通常,在编码的过程中,将图像切分为多个切片(Grid),然后对每个切片进行编码,从而可以提高图像的压缩效率,提高编码性能,因此图像切片的过程尤其重要
然而,在对图像进行切分时,存在大量的内存拷贝,将带来额外的开销,并且将消耗额外的内存来承载切片数据,切片过程开销大。因此,如何降低切片过程的开销,成为亟待解决的问题。
发明内容
本申请提供一种图像编码方法以及装置,用于通过内存映射的方式对存储的图像进行编码,减少内存拷贝,提高编码效率。
有鉴于此,第一方面,本申请提供一种图像编码方法,包括:首先,为输入图像分配存储内存;将存储内存划分为多个内存切片;随后通过编码器从所述多个内存切片中至少一个内存切片的地址读取数据并进行编码,得到编码数据。
因此,本申请实施方式中,可以直接将需要编码的数据的地址映射至编码器,使编码器可以直接基于地址提取到需要编码的数据,因此无需进行内存拷贝,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,前述的将存储内存划分为多个内存切片存储内存,可以包括:按照预设切片大小,将存储内存划分为多个内存切片,预设切片大小包括预设高度和预设宽度。
因此,本申请实施方式中,在划分存储内存时,可以按照预先设定的切片大小来进行划分,以使后续编码器可以以预设切片大小为单位进行编码。
在一种可能的实施方式中,前述的为输入图像分配存储内存,可以包括:基于预设切片大小为输入图像分配存储内存。
在一种可能的实施方式中,存储内存可以包括第一内存和第二内存,第一内存中保存了输入图像中的各个像素点的信息,第二内存用于使存储内存的尺寸按照预设切片大小对齐,以使编码器以预设切片大小为单位从输入的地址中读取数据。
因此,本申请实施方式中,当输入图像的存储内存不被预设切片大小整除时,可以将得到的内存切片的地址映射至编码器进行编码,得到最终的编码数据,减少了内存拷贝的量,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,存储内存按照阵列排列,存储内存的宽度被预设宽度整除,存储内存的高度被预设高度整除。
因此,本申请实施方式中,在为输入图像分配内存时,可以按照预设宽度和预设高度来进行对齐,从而在划分内存切片时,使每个内存切片的尺寸都为预设切片大小,避免编码器读取地址时越界,且仅需分配少量内存即可,减少了内存拷贝的量,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,第二内存包括第三内存和第四内存,第一内存和第三内存组合后按照阵列排列,阵列的高度被预设高度整除,阵列的最后一行除以预设宽度后的余数与第四内存组合后不小于预设宽度。
因此,本申请实施方式中,在为输入图像分配内存时,分配的存储内存的高度可以与预设高度对齐,为了避免编码器读取时越界,可以为最后一行分配额外的内存,使阵列的最后一行除以预设宽度后的余数与第四内存组合后不小于预设宽度,避免编码器读取地址时越界,且仅需分配少量内存即可,减少了内存拷贝的量,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,多个内存切片分为第一内存切片和第二内存切片,第一内存切片的高度为预设高度,第二内存切片高度小于预设高度或者第二内存切片为多个内存切片组成的阵列中的最后一行最后一个切片,第一内存切片和第二内存切片为不同的内存切片;上述方法还可以包括:为多个内存切片中的第二内存切片分配第五内存,并将第二内存中的数据拷贝至第五内存中,第五内存的宽度被预设宽度整除,第五内存的高度被预设高度整除;前述的将多个内存切片中至少一个内存切片的地址输入至编码器,可以包括:将多个内存切片中的第一内存切片的地址以及第五内存的地址输入至编码器。
因此,本申请实施方式中,可以基于输入图像的尺寸为输入图像分配占用的存储内存,然后对存储内存进行划分,当输入图像的存储内存不被预设切片大小整除时,可以将得到的与预设切片大小匹配的内存的地址映射至编码器进行编码,以及从整除后余的部分中拷贝数据并作为编码器的输入,得到最终的编码数据,无需对存储内存中的所有内存进行拷贝,减少了内存拷贝的量,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,存储内存的高度被预设高度整除。
因此,本申请实施方式中,当输入图像的存储内存不被预设切片大小整除时,在为输入图像分配存储内存的过程中,分配内存的高度可以按照预设高度对齐,从而可以减少多个切片中尺寸与预设切片大小不符的数量。随后可以将得到的与预设切片大小匹配的内存的地址映射至编码器进行编码,以及从整除后余的部分中拷贝数据并作为编码器的输入,得到最终的编码数据,无需对存储内存中的所有内存进行拷贝,减少了内存拷贝的量,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
第二方面,本申请提供一种图像编码装置,包括:
分配模块,用于为输入图像分配存储内存;
划分模块,用于将存储内存划分为多个内存切片;
编码模块,用于将多个内存切片中至少一个内存切片的地址输入至编码器,编码器用于基于输入的地址读取数据并进行编码,得到编码数据。
在一种可能的实施方式中,划分模块,具体用于按照预设切片大小,将存储内存划分为多个内存切片,预设切片大小包括预设高度和预设宽度。
在一种可能的实施方式中,具体用于:基于预设切片大小为输入图像分配存储内存。
在一种可能的实施方式中,存储内存中包括第一内存和第二内存,第一内存中保存了输入图像中的各个像素点的信息,第二内存用于使存储内存的尺寸按照预设切片大小对齐,以使编码器以预设切片大小为单位从输入的地址中读取数据。
在一种可能的实施方式中,存储内存按照阵列排列,存储内存的宽度被预设宽度整除,存储内存的高度被预设高度整除。
在一种可能的实施方式中,第二内存包括第三内存和第四内存,第一内存和第三内存组合后按照阵列排列,阵列的高度被预设高度整除,阵列的最后一行除以预设宽度后的余数与第四内存组合后不小于预设宽度。
在一种可能的实施方式中,多个内存切片分为第一内存切片和第二内存切片,第一内存切片的高度为预设高度,第二内存切片高度小于预设高度或者第二内存切片为多个内存切片组成的阵列中的最后一行最后一个切片,第一内存切片和第二内存切片为不同的内存切片;
分配模块,还用于为多个内存切片中的第二内存切片分配第五内存,并将第二内存中的数据拷贝至第五内存中,第五内存的宽度被预设宽度整除,第五内存的高度被预设高度整除;
编码模块,具体用于将多个内存切片中的第一内存切片的地址以及第五内存的地址输入至编码器。
在一种可能的实施方式中,存储内存的高度被预设高度整除。
第三方面,本申请实施例提供一种电子设备,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的图像编码方法中与处理相关的功能。可选地,该电子设备可以是芯片。
第四方面,本申请实施例提供了一种电子设备,该电子设备也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。
第五方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
第六方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
附图说明
图1为本申请提供的一种电子设备的结构示意图;
图2为本申请提供的另一种电子设备的结构示意图;
图3为本申请提供的一种图像编码方法的流程示意图;
图4为本申请提供的一种存储内存的结构示意图;
图5为本申请提供的另一种电子设备的结构示意图;
图6为本申请提供的另一种图像编码方法的流程示意图;
图7为本申请提供的另一种存储内存的结构示意图;
图8为本申请提供的另一种存储内存的结构示意图;
图9为本申请提供的另一种存储内存的结构示意图;
图10为本申请提供的另一种存储内存的结构示意图;
图11为本申请提供的另一种存储内存的结构示意图;
图12为本申请提供的另一种存储内存的结构示意图;
图13为本申请提供的一种图像编码装置的结构示意图;
图14为本申请提供的另一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,本申请提供的方法可以部署于各种电子设备中,如部署于各种终端或者服务器中,该服务器可以是各种独立服务器、分布式服务器或者集中式服务器等,该终端可以包括但不限于:智能移动电话、电视、平板电脑、手环、头戴显示设备(Head Mount Display,HMD)、增强现实(augmented reality,AR)设备,混合现实(mixed reality,MR)设备、蜂窝电话(cellular phone)、智能电话(smart phone)、个人数字助理(personal digitalassistant,PDA)、平板型电脑、车载终端、膝上型电脑(laptop computer)(或者称为笔记本电脑或者手提电脑等)、个人电脑(personal computer,PC)等。
示例性地,参阅图1,下面以一个具体的结构为例,对本申请提供的电子设备的结构进行示例性说明。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M,运动传感器180N等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等***器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。应理解,此处的USB接口130也可以替换为其他的接口,如Type-c或者Lighting等可实现充电或者数据传输的接口,此处仅仅以USB接口130为例进行示例性说明。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),超宽带(ultra wide band,UWB),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括但不限于:第五代移动通信技术(5th-Generation,5G)***,全球移动通讯***(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multipleaccess,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(longterm evolution,LTE),蓝牙(bluetooth),全球导航卫星***(the global navigationsatellite system,GNSS),无线保真(wireless fidelity,WiFi),近距离无线通信(nearfield communication,NFC),FM(也可以称为调频广播),紫蜂协议(Zigbee),射频识别技术(radio frequency identification,RFID)和/或红外(infrared,IR)技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(globalnavigation satellite system,GLONASS),北斗卫星导航***(beidou navigationsatellite system,BDS),准天顶卫星***(quasi-zenith satellite system,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)等。
在一些实施方式中,电子设备100也可以包括有线通信模块(图1中未示出),或者,此处的移动通信模块150或者无线通信模块160可以替换为有线通信模块(图1中未示出),该有线通信模块可以使电子设备通过有线网络与其他设备进行通信。该有线网络可以包括但不限于以下一项或者多项:光传送网(optical transport network,OTN)、同步数字体系(synchronous digital hierarchy,SDH)、无源光网络(passive optical network,PON)、以太网(Ethernet)、或灵活以太网(flex Ethernet,FlexE)等。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为界面显示的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB摄像头,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
运动传感器180N,可以用于对摄像头拍摄的范围内的运动物体进行检测,采集运动物体的运动轮廓或者运动轨迹等。例如,该运动传感器180N可以是红外传感器、激光传感器、动态视觉传感器(dynamic vision sensor,DVS)等,该DVS具体可以包括DAVIS(Dynamicand Active-pixel Vision Sensor)、ATIS(Asynchronous Time-based Image Sensor)或者CeleX传感器等传感器。DVS借鉴了生物视觉的特性,每个像素模拟一个神经元,独立地对光照强度(以下简称“光强”)的相对变化做出响应。当光强的相对变化超过阈值时,像素会输出一个事件信号,包括像素的位置、时间戳以及光强的特征信息。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过***SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时***多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
需要说明的是,在一些实际应用场景中,电子设备可以包括比前述图1中更多或者更少的部件,具体可以根据实际应用场景调整,本申请对此不作限定。
前述对本申请提供的电子设备的硬件结构进行了示例性介绍,该电子设备可以搭载的***可以包括
Figure BDA0003442402680000101
鸿蒙或者其它操作***等,本申请实施例对此不作任何限制。
以搭载
Figure BDA0003442402680000102
操作***的电子设备100为例,如图2所示,电子设备100从逻辑上可划分为硬件层21、操作***261,以及应用层31。硬件层21包括应用程序处理器201、微控制器单元203、调制调解器207、Wi-Fi模块211、传感器214、定位模块150等硬件资源。应用层31包括一个或多个应用程序(application,APP),比如应用程序263,应用程序263可以为社交类应用程序、电子商务类应用程序、浏览器等任意类型的应用程序。操作***261作为硬件层21和应用层31之间的软件中间件,是管理和控制硬件与软件资源的计算机程序。
在一个实施例中,操作***261包括内核23,硬件抽象层(hardware abstractionlayer,HAL)25、库和运行时(libraries and runtime)27以及框架(framework)29。其中,内核23用于提供底层***组件和服务,例如:电源管理、内存管理、线程管理、硬件驱动程序等;硬件驱动程序包括Wi-Fi驱动、传感器驱动、定位模块驱动等。硬件抽象层25是对内核驱动程序的封装,向框架29提供接口,屏蔽低层的实现细节。硬件抽象层25运行在用户空间,而内核驱动程序运行在内核空间。
库和运行时27也叫做运行时库,它为可执行程序在运行时提供所需要的库文件和执行环境。库与运行时27包括安卓运行时(Android Runtime,ART)271以及库273等。ART271是能够把应用程序的字节码转换为机器码的虚拟机或虚拟机实例。库273是为可执行程序在运行时提供支持的程序库,包括浏览器引擎(比如webkit)、脚本执行引擎(比如JavaScript引擎)、图形处理引擎等。
框架27用于为应用层31中的应用程序提供各种基础的公共组件和服务,比如窗口管理、位置管理等等。框架27可以包括电话管理器291,资源管理器293,位置管理器295等。
以上描述的操作***261的各个组件的功能均可以由应用程序处理器201执行存储器205中存储的程序来实现。
所属领域的技术人员可以理解电子设备100可包括比图2所示的更少或更多的部件,图2所示的该电子设备仅包括与本申请实施例所公开的多个实现方式更加相关的部件。
前述的电子设备具有存储图像并对图像数据进行编码等能力,在对图像的存储或者编码的过程中,可以将图像切分为多个切片(Grid),然后对每个切片进行编码,从而可以提高图像的压缩效率,提高编码性能。
常用的切片方式可以分为FrameWork层切片和切片下沉两种模式。例如,原始图像为:4032*3024尺寸的高效图像文件格式(high efficiency image file format,HEIF)编码的图片(通常称为Grid):512*512;而在进行编码时,为了避免编码器读取到非法内存,实际传入编码器的是4032*3024的存储内存,并切分为512*512的Grid,即需要为图像分配内存,将图像数据拷贝至4032*3024的存储内存,然后又编码器从这部分内存中读取数据进行编码,需要大量内存拷贝,影响性能和功耗。常用方案是使用特定指令(如NEON指令)做数据并行处理,加速拷贝过程。或者使用逐行、多行拷贝的方式取代逐像素的拷贝方式,加速拷贝过程。使用切片拷贝和高效率视频编码(high efficiency video coding,HEVC)并行的模式,从而加速端到端的编码过程。然而,在切片以及编码的过程中,存在大量的内存拷贝,将带来额外的开销,并且将消耗额外的内存来承载切片数据,切片过程开销大。
因此,本申请提供一种图像编码方法,在进行编码时,将输入图像的存储内存的地址直接映射至编码器,从而使编码器可以直接基于映射的地址来读取数据并进行编码,无需进行内存拷贝,且无需分配额外的内存的承载切片数据,降低内存拷贝带来的性能和功耗开销,提高编码效率。
参阅图3,本申请提供的一种图像编码方法的流程示意图,如下所述。
301、为输入图像分配存储内存。
其中,该输入图像可以是接收到的图像,也可以是本地摄像头拍摄后成像得到的图像,该输入图像可以存储于内存中,用于进行后续编码。该输入图像的存储内存的信息可以包括存储内存的地址或长度等信息。
通常,在电子设备得到输入图像时,如生成或者接收到输入图像时,可以为输入图像分配一段连续的内存,输入图像中各个像素点的信息即可存储于内存中。可以理解为,输入图像可以按照阵列的形式存储于内存中,如在得到输入图像时,为输入图像分配一段连续的内存,输入图像的信息按照像素的排列方式存储于分配的内存中。例如,如图4所示,该输入图像在内存中可以按照阵列的形式来存储,并记录存储内存的大小、地址等信息。
通常,分配的内存可以用于保存输入图像各个像素点的信息,如色度值、亮度值等信息。一些场景中,为了避免编码器读取数据越界,可以为输入图像分配额外的内存。
具体地,为输入图像分配内存的方式可以包括多种,下面示例性地,以几种可行的实施方式进行示例性说明。
在一种可能的实施方式中,可以基于预设切片大小为输入图像来分配一段连续的存储内存,可以将存储内存分为两部分,为便于区分称为第一内存和第二内存,第一内存用于保存输入图像中各个像素点的信息,第二内存用于使存储内存按照预设切片大小进行对齐,从而使后续编码器可以以预设切片大小为单位从输入的地址中读取数据。
可选地,在为输入图像分配内存时,可以基于预设切片大小来为输入图像分配存储内存,其中,可以将存储内存理解为两部分,为便于区分称为第一内存和第二内存,第一内存用于保存保存输入图像的数据,如输入图像中每个像素点的亮度值、灰度值或者色度值等,第二内存则用于使为输入图像分配的内存的尺寸按照预设切片大小对齐,以便于后续切片时可以按照预设切片大小进行切片,从而使编码器可以完整地读取每个内存切片的内存地址,以每个内存切片为单位来进行编码。
可选地,在为输入图像分配内存时,可以按照预设切片大小进行分配,该预设切片大小包括预设高度和预设宽度,为输入图像分配的内存的高度按照预设高度进行对齐,为输入图像分配的存储内存的宽度按照预设宽度进行对齐,从而使后续在进行内存切片时,可以直接切分得到尺寸为预设切片大小的内存切片,从而使后续编码器在读取内存地址时避免越界。
可选地,在为输入图像分配内存时,分配的存储内存的高度按照预设高度进行对齐,分配的存储内存的宽度按照输入图像的实际所需内存分配,即第二内存可以分为多个部分,为便于区分称为第三内存和第四内存,第三内存与第一内存组合后按照阵列排列,即通过第三内存来使存储内存的高度和预设高度对齐,阵列的最后一行除以预设宽度后的余数与第四内存组合后不小于预设宽度。即为了减少分配的内存量,阵列的宽度可以不按照预设宽度进行对齐,在阵列的最后一行多分配一段内存,以避免后续的编码器读取越界。
此外,在为输入图像分配内存的过程中,可以仅对高度进行对齐,使得存储内存的高度被预设高度整除,当然,也可以直接按照输入图像所包括的数据来分配占用的内存,具体可以根据实际应用场景调整。此外,电子设备中可以预先部署前述的其中一种切片方式,也可以预先部署前述的多种切片方式。当电子设备中部署了多种切片方式时,在得到需要编码的输入图像之后,可以根据预先设定的方式从多种切片方式中选择其中一种切片方式进行切片,具体可以根据实际应用场景进行调整。
例如,当电子设备的可用内存低于第一阈值时,为了降低内存拷贝量,在为输入图像分配内存时,可以仅按照预设高度对存储内存的高度进行对齐并分配内存,从而形成阵列,并为阵列的最后一行额外分配多个字节,以使阵列的最后一行除以预设宽度后的余数与额外分配的多个字节组合后不小于该预设宽度,以避免编码器读取越界;当电子设备的可用内存大于第二阈值但不大于第三阈值时,则可以按照预设切片大小进行对齐,即存储内存的高度被预设高度整除,存储内存的宽度被预设宽度整除,从而使后续可以按照预设切片大小进行切片,从而使编码器以内存切片为单位进行编码,无需进行内存拷贝;当电子设备的可用内存大于第三阈值时,表示电子设备的可用内存充足,此时可以选择直接对该阵列进行切分,整除的部分得到多个切片,剩余的部分在编码时可以使用内存拷贝进行编码。因此,可以根据实际应用场景来选择匹配的切片方式,从而使图像的编码方式与电子设备的可用内存情况或者用户需求匹配,提高编码效率,提高用户体验。
302、将存储内存划分为多个内存切片。
其中,在确定待编码的输入图像的存储内存之后,可以对输入图像进行切分,得到多个内存切片。相当于对输入图像的存储内存进行切分,从而将存储内存分为多个栅格,即内存切片。
具体地,可以按照预先设定的大小,即预设切片大小来对存储内存进行切分,得到多个内存切片(Grid)。即相当于对输入图像进行切分,将输入图像分为多个部分,以便于后续编码器可以对输入图像进行编码。
该预设切片大小可以包括由用户预先设定的大小、由电子设备的上层与下层协商的大小、根据编码器的编码长度设定的大小或者随机大小等,具体可以根据实际应用场景来确定。
303、将多个内存切片的地址输入至编码器进行编码,得到编码数据。
在进行了内存切片之后,将每个内存切片的地址输入至编码器进行编码,从而得到编码数据。在进行编码时,即可基于输入的地址从每个内存切片中提取到需要进行编码的数据,从而对每个内存切片中的数据进行编码,得到编码数据。
该编码器可以是电子设备中预先部署的编码器,可以按照预先设定的编码规则进行编码。如可以在电子设备中部署并运行一段代码,用于从输入至编码器的地址中读取数据,并按照预先设定的编码方式对图像进行编码,该编码方式可以HEVC编码、或者高级视频编码(advanced video coding,AVC)等编码方式等,具体可以根据实际应用场景进行调整,本申请对具体的编码方式不作限定。
可以理解为,Grid为编码器的编码单位,编码器以一个Grid的内存保存的数据为单位进行编码,可以将每个Grid对应的内存地址映射至编码器,从而使编码器可以获取Grid的内存信息,包括宽、高、Stride等。
因此,本申请实施方式中,可以直接将需要编码的数据的地址输入至编码器,使编码器可以直接基于地址提取到需要编码的数据,因此可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,若存储内存不被预设切片大小整除,则对存储内存进行切分,得到多个内存切片以及第一切片,第一切片为存储内存中按照预设切片大小切分后余的部分。随后可以将多个内存切片的地址映射至编码器进行编码,以及从第一切片对应的地址中拷贝第一数据,并将第一数据作为编码器的输入,得到编码数据。
因此,本申请实施方式中,当输入图像的存储内存不被预设切片大小整除时,可以将得到的与预设切片大小匹配的内存的地址映射至编码器进行编码,以及从整除后余的部分中拷贝数据并作为编码器的输入,得到最终的编码数据,无需对存储内存中的所有内存进行拷贝,减少了内存拷贝的量,可以减少进行内存拷贝的内存开销,且可以提高编码效率。
在一种可能的实施方式中,若前述为输入图像分配内存时,未将存储内存完全按照预设切片大小对齐,如仅对齐了高度而未对齐宽度,或者高度与宽度均未对齐等,则在进行内存切片时,可以按照预设切片大小对存储内存进行切分。然后可以将得到的内存切片分为两类,便于区分称为第一内存切片和第二内存切片,第一内存切片的高度为预设高度,第二内存切片的高度小于该预设高度,或者该第二内存切片为最后一行的最后一个切片,第一内存切片和第二内存切片为不同的内存切片,即同一个内存的类型是第一内存切片或第二内存切片中的一种。
可以为第二内存切片分配第五内存,并将第二内存中的数据拷贝至第五内存中,第五内存的宽度被预设宽度整除,第五内存的高度被预设高度整除,将第二内存切片中保存的数据拷贝至第五内存中。在进行编码时,即可将第一内存切片和第五内存的地址均输入至编码器,以使编码器从输入的地址中读取到数据并进行编码,得到最终的编码数据,避免出现编码器读取越界的情况。
例如,若存储内存的高度被预设高度整除,而存储内存的宽度不被预设宽度整除,则可以将最后一行最后一列的内存切片作为第二内存切片,其余内存切片分为第一内存切片。为第二内存切片分配第五内存,该第五内存的尺寸可以为预设切片大小,将第二内存切片中保存的数据拷贝至第五内存中。然后将第一内存切片和第五内存的地址输入至编码器,以使编码器从输入的地址中读取到数据并进行编码,得到最终的编码数据。
又例如,若存储内存的高度不被预设高度整除,且存储内存的宽度也不被预设宽度整除,此时可以将高度不被预设高度整除的部分,即存储内存中最后一行对应的内存切片作为第二内存切片。并为第二内存切片分配第五内存,将第二内存切片中保存的数据拷贝至第五内存中。然后将第一内存切片和第五内存的地址输入至编码器,以使编码器从输入的地址中读取到数据并进行编码,得到最终的编码数据,避免出现编码器读取越界的情况。
前述对本申请提供的方法流程进行了介绍,为便于理解,下面结合具体的应用场景进行示例性介绍。
首先,以一个具体的应用场景为例,其适配的电子设备的部分***架构可以如图5所示。其中,该***架构可以基于MediaCodec/OMX框架以及基于HEVC编码器,实现HEIC编码,可以包括多层,如应用层、FrameWork层以及HAL/vendor层等,应用层中可以安装APP,可以由APP来触发编码器进行编码。
其中,该电子设备中可以安装一些可以得到输入图像的APP,如相机或者通信软件等可以生成或者接收图像的APP,具体例如相机可以用于拍摄图像,并触发保存图像的步骤;通信软件可以接收其他电子设备发送的图像,并触发保存图像的步骤等。
HEIF编码:在Android FrameWork中,已经实现HEIFWriter和HEIFEncoder,HEIFWriter用于为应用层(APK)提供接口供应用层输入原始图片数据,HEIFWriter可以调用HEIFEncoder的接口,HEIFWriter用于完成文件的封装,生成.HEIC文件;HEIFEncoder可以调用MediaCodec的接口,用于创建HEIC编码器,启动HEIF编码。
MediaCodec是一种用于对音视频进行编解码的类,通过访问底层的codec来实现编解码的功能。是电子设备的媒体(media)基础框架的一部分。
OMX,或者称为OpenMAX(Open Media Acceleration),是一种开放的跨平台媒体框架,可以用于传递Input Buffer(即输入的内存信息)的Usage(即标识)。
HEIC编码器,作为OMX IL(OpenMAX Integration Layer,OMX框架层和组件层的接口)层,完成和OMX框架的对接,本实施例中其核心功能是完成HEIF切片。
Gralloc(Graphic Buffer Allocator),是一种Android中负责申请和释放GraphicBuffer的HAL层模块,用于进行Graphic Buffer的内存分配,其中优化的功能点:识别HEIC编码的特定Usage属性后,内存大小基于Grid大小进行对齐。
HEVC编码器:其输入为HEIC编码器切片后得到的每个Grid的内存信息,如Grid对应图片的宽度、Grid对应图片的高度、stride等信息,用于从输入Grid内存信息中读取数据,并分别对每个Grid中的数据进行HEVC编码。
具体地,对图像进行编码的过程可以如图6所示。
601、HEIC编码器设置标识(usage)
首先由HEIC编码器设置usage,该usage是一种标识,用于标识输入的图像的编码类型是否为HEIC编码。
如HEIC编码器对Input Buffer设置特定的属性,如通过graphic buffer usage标识是否按照本申请提供的方式进行切片并进行编码。可以理解为,在HEIC编码器模块可以和OMX协商Buffer属性的过程,本申请增加一种特定的graphic buffer usage,用于标识HEIC编码切片场景的切片预对齐属性,即采用那种切片方式进行对齐并切片。如从以下步骤603的切片方式中选择哪一种方式来进行切片。
602、OMX传递usage给Gralloc
随后在OMX模块发起graphic buffer内存申请之前,OMX可以读取graphic bufferusage,识别到是哪种类型的usage后,即可获知当前为HEIC编码场景。此时可以设置一个新的usage,这个usage也需要全局唯一,用来标识HEIC编码场景,作为Input Buffer的属性,并且能被Gralloc识别,或者直接向Gralloc传递graphic buffer usage,使Gralloc识别当前为HEIC编码场景。
603、Gralloc基于usage分配内存
其中,可以预先部署一种或者多种切片方式,Gralloc得到usage之后,即可识别出当前为HEIC编码场景,并分配相应的内存。
当仅部署了一种切片方式时,Gralloc得到usage之后,即可识别出当前为HEIC编码场景,然后进行内存分配。
当部署了多种切片方式时,Gralloc得到usage之后,可以基于该usage识别出采用哪种方式进行切片,随后分配相应的内存。
通常,当存在多种切片方式时,每种切片方式所需分配的内存可能相同也可能不相同,可以根据实际应用场景来选择匹配的切片方式,如当电子设备的可用内存充足时,在可以随机选择其中一种切片方式,当电子设备的可用内存不足时,则可以选择消耗内存最少的切片方式,或者在对编码效率需求较高时,则可以选择消耗内存较少的切片方式来,具体可以根据实际应用场景进行调整,本申请仅仅是示例性说明,对此并不作限定。
604、HEIC编码器进行切片
在Gralloc基于usage分配内存之后,即可将分配的内存的信息传入HEIC编码器,由HEIC编码器来进行切片,并将切片后得到的每个切片的信息传输给HEVC编码器,以使HEVC编码器从切片中读取数据并进行编码。
在进行切片的过程中,以Android***为例,可以由FrameWork层切片(或者应用层切片)或者由编码器切片(通常称为切片下沉)。
若由FrameWork层切片,则由上层创建HEVC编码器:上层可以通过Mediacodec/OMX和下层协商切片大小,或者预先设定切片大小,然后由上层基于切片大小来进行切片,每个切片的地址通过Mediacodec/OMX传递给编码器,由编码器基于传入的地址来提取需要编码的数据并进行编码。编码后的数据可以通过Output Buffer承载,传递给上层。上层通过生成并反馈流结束(end of stream,EOS),表示编码完成,上层收到图像的所有切片的编码数据之后,即可封装为HEIC文件。
若由编码器切片,由上层创建HEIC编码器,上层可以通过Mediacodec/OMX和下层协商切片大小,或者预先设定切片大小,然后上层传输图像至下层,由编码器对图像进行切片,并完成编码,在对最后一个切片进行编码完成之后,上报EOS,上层收到图像的所有切片的编码数据之后,即可封装为HEIC文件。
其中,上层与下层为相对概念,如FrameWork层或者以上的层可以理解为上层,FrameWork层以下的层可以称为下层,具体可以根据实际应用场景来进行划分,本申请仅仅是示例性说明,并不作为限定。
例如,可以将输入图像切分为多个相同大小的部分,即对输入图像对应的存储内存切分为多个相同大小的Grid,然后配置相关参数作为HEVC编码器的输入。示例性地,在进行切片时,如图7所示,将分配的内存的宽度称为stride,分配的内存的高度称为Height;每个Grid的宽度称为Grid width,每个Grid的高度称为Grid height,该Grid width*Gridheight即可理解为前述的预设切片大小。
结合前述步骤603和步骤604,本申请提供的方法中,可以按照多种方式来为输入图像分配内存并进行切片,下面示例性地分别进行介绍。
方式一、按照Grid width分配stride
其中,在分配内存时,内存的stride可以按照Grid width来进行对齐,可以理解为内存的stride可以被Grid width整除,内存的Height可以按照Grid height进行对齐。
通常,输入图像中的数据所占用的内存的尺寸可能不被预设切片大小整除,而每个Grid的大小通常需要保持一致。
示例性地,如图8所示,输入图像中的数据所占用的内存的尺寸不被Grid的尺寸整除,则在为Input Buffer分配内存时,分配内存的stride按照Grid width对齐,即可以为最后一列Grid以及最后一行Grid分配内存,并将每个Grid的内存信息(包括为输入图像所包括的数据分配的存储内存地址和额外分配的内存的地址)传入编码器,从而使编码器在读取内存时,可以从每个Grid对应的内存信息中读取数据,避免读取到非法内存而导致程序崩溃或者编码器无法正常工作。且无需进行内存拷贝,编码器可以直接从输入地址中读取到输入图像,减少了内存拷贝的过程,减少内存开销,提高编码效率。
以4032*3024分辨率的输入图像为例,若通过一些常用的切分方式进行切分,如切分为512*512的Grid,切片时需要大量内存拷贝,影响性能和功耗,并且需要分配额外的内存承载Grid数据。如需要拷贝48个Grid,每个Grid内存为512*512*4=1M Bytes(每个Grid需要拷贝512次,每次512*4Bytes)。而通过本申请提供的内存分配以及切片方式,不需要额外的内存拷贝,消除了额外的性能和功耗开销,并且不需要分配额外的内存承载Grid数据。
方式二、多分配N字节
通常,编码器可以以Grid为单位进行编码,输入图像的存储内存通常是一段连续的内存,因此编码器可以按照每个Grid的起始地址来读取每个Grid的数据,在基于内存映射进行编码的情况下,当读取到最后一行的最后一个Grid的时,超出该Grid的尺寸的部分可以从下一行Grid的地址中读取,从而读取到完整的一个Grid的内容,后续在进行图像恢复时,可以裁除最后一列Grid中多余的部分。而当读取到最后一行最后一个Grid的地址时,若读取超过Grid范围则可能读取到非法内存,从而使编码器无法正常工作或者影响编码器的编码过程等。
因此,可以针对最后一个Grid多分配N个字节,即最后一个Grid的最后一行的宽度为Grid width,从而使编码器可以读取到一个完整的gird的数据,从而可以避免读取到非法内存,从而使编码器产生编码错误或者影响编码器的编码过程等。
例如,如图9所示,在在使用Input Buffer分配内存时,分配内存的Height按照Grid height对齐,Stride不做Grid width对齐处理,;在此基础上,多分配N字节的内存。以RGBA格式的图像为例,N≥((Grid width)–(图片width%Grid width))*4,得到的N值为确保编码器读取内存时不越界的最小取值,从而可以避免读取到非法内存,从而使编码器产生编码错误或者影响编码器的编码过程等。
可以理解为,Input Buffer分配内存时,Height按照Grid大小对齐,Stride按照存储内存的宽度进行取值(或者按照常规,按照16字节或者32字节或者64字节对齐,具体数目由***自行决定),因图9中右下角的Grid映射至编码器时存在内存不足的问题,因此,可以多分配N字节的内存,以避免读取到非法内存,从而使编码器产生编码错误或者影响编码器的编码过程等。
以4032*3024分辨率的输入图像为例,可以切分为512*512的Grid,切片时需要大量内存拷贝,影响性能和功耗,并且需要分配额外的内存承载Grid数据。如需要拷贝48个Grid,每个Grid内存为512*512*4=1M Bytes(每个Grid需要拷贝512次,每次512*4Bytes)。而通过本申请提供的切片方式,不需要额外的内存拷贝,消除了额外的性能和功耗开销,并且不需要分配额外的内存承载Grid数据。HEIF切片时,最后一行的Grid不需要额外的内存拷贝,因此所有的Grid都不需要内存拷贝。优化了性能和功耗,并且不需要分配额外的内存承载Grid数据。
方式三、部分采用内存地址映射,剩余部分采用内存拷贝
可以将输入图像的存储内存中可以被Grid的尺寸整除的部分的地址映射至编码器中,而余下的部分则可以通过内存拷贝的方式来输入至编码器中。
其中,输入图像的数据需占用的内存可能分为多种情况,如高度被Grid高度整除,或者高度不被Grid高度整除。
例如,如图10所示,如若输入图像的数据需占用的内存高度被Grid高度整除,则可以按照输入图像的实际所需内存来分配存储内存,并对存储内存进行划分,得到的内存切片分为第一内存切片和第二内存切片,如图10中所示,第二内存切片为最后一行最后一个内存切片,其宽度不被Grid宽度整除,其余为第一内存切片。为了避免编码器在读取最后一行最后一个内存切片(即第二内存切片)时越界,可以对最后一行的最后一个切片进行内存拷贝,即为最后一个内存切片分配额外的内存(即第五内存),然后将该最后一个切片中的数据拷贝至额外分配的内存中。然后将第一内存切片的地址和第五内存的地址均作为编码器的输入。
即可以按照预先设定的Grid大小对输入图像的存储内存进行切分,将其中被整除的部分的内存通过内存地址映射的方式传入编码器,而其余不被整除的部分则可以为其分配额外的内存,通过内存拷贝的方式将不被整除部分内存中的数据传入编码器中。
可以理解为,在将每个Grid地址映射至编码器时,如图10中所示出的右下角Grid存在内存不足的问题,因此,对于右下角Grid,进行切片时,可以进行内存拷贝,即额外分配内存来承载这一个Grid中的数据,以避免读取到非法内存,从而使编码器产生编码错误或者影响编码器的编码过程等。又例如,如图11所示,若输入图像的数据需占用的内存不被Grid高度整除,则在为输入图像分配内存时,可以将分配的存储内存的高度与Grid高度对齐,即分配的存储内存的高度被Grid高度整除。然后分配得到的存储内存的切分方式可以参阅前述图10,此处不再赘述。
还例如,如图12所示,若输入图像的数据需占用的内存高度不被Grid高度整除,则可以不为输入图像分配额外的内存,按照输入图像的实际尺寸分配存储内存。然后按照Grid大小直接对存储内存进行划分,得到的内存切片可以分为第一内存切片和第二内存切片,第一内存切片即高度为Grid高度的切片,第二内存切片即高度小于Grid高度的切片。然后为第二内存切片分配额外的内存(即第五内存),然后将该第二内存切片中的数据拷贝至额外分配的内存中。然后将第一内存切片的地址和第五内存的地址均作为编码器的输入。
因此,本申请实施方式中,存储内存中被整除的部分可以通过地址映射的方式传入编码器,仅需为不被整除的部分分配内存进行内存拷贝即可,减少了内存拷贝量,减少了内存开销,提高了编码效率。
605、HEVC编码器编码
在进行HEVC编码器收到每一个Grid的配置信息后,如每个Grid的起始地址、长度等地信息,即可进行HEVC编码。该配置信息可以包括每个Grid的起始地址、宽度或者长度等信息,从而使编码器可以读取每个Grid中的数据并进行编码。
例如,如针对每个Grid,接收到的配置信息如下:
Start=Grid内存起始地址;
Stride=Input Buffer的stride;
Width=Grid width;
Height=Grid height
其中,Stride表示内存的宽度,Width表示每个Grid的宽度,Height表示每个Grid的高度。
例如,以一帧分辨率为4032*3024的图像为例,分别通过内存拷贝和本申请提供的内存地址映射的方式来进行编码,通过计算编码耗时来进行对比。HEIC编码耗时=HEIC完成编码的时刻(所有Grid完成HEVC编码,上报EOS)-HEIC开始编码的时刻(HEIC编码器收到原始图像的时刻)。通过内存拷贝的方式耗时为80ms以上,而通过本申请提供的编码方式,则最低仅需45ms,大大提高了编码效率。当然,以上为基于某一芯片测试,不同的硬件耗时数据可能会不相同。
因此,本申请实施方式中,可以将图像的存储内存进行切分,并将切分得到的Grid地址映射至编码器中,因此可以减少额外分配的内存,减少内存开销,提高编码效率。进一步地,在进行编码时,为了避免编码器读取到非法内存地址,可以通过多种方式分配一定的内存,可以避免编码器读取到非法内存,从而使编码器产生编码错误或者影响编码器的编码过程等。
前述对本申请提供的方法流程进行了介绍,下面对本申请提供的装置进行介绍。
参阅图13,本申请提供的一种图像编码装置的结构示意图,该图像编码装置用于执行前述图3-图12对应的方法步骤。该图像编码装置包括:
分配模块1301,用于为输入图像分配存储内存;
划分模块1302,用于将存储内存划分为多个内存切片;
编码模块1303,用于将多个内存切片中至少一个内存切片的地址输入至编码器,编码器用于基于输入的地址读取数据并进行编码,得到编码数据。
在一种可能的实施方式中,划分模块1302,具体用于按照预设切片大小,将存储内存划分为多个内存切片,预设切片大小包括预设高度和预设宽度。
在一种可能的实施方式中,划分模块1302,具体用于:基于预设切片大小为输入图像分配存储内存。
在一种可能的实施方式中,存储内存中包括第一内存和第二内存,第一内存中保存了输入图像中的各个像素点的信息,第二内存用于使存储内存的尺寸按照预设切片大小对齐,以使编码器以预设切片大小为单位从输入的地址中读取数据。
在一种可能的实施方式中,存储内存按照阵列排列,存储内存的宽度被预设宽度整除,存储内存的高度被预设高度整除。
在一种可能的实施方式中,第二内存包括第三内存和第四内存,第一内存和第三内存组合后按照阵列排列,阵列的高度被预设高度整除,阵列的最后一行除以预设宽度后的余数与第四内存组合后不小于预设宽度。
在一种可能的实施方式中,多个内存切片分为第一内存切片和第二内存切片,第一内存切片的高度为预设高度,第二内存切片高度小于预设高度或者第二内存切片为多个内存切片组成的阵列中的最后一行最后一个切片,第一内存切片和第二内存切片为不同的内存切片;
分配模块1301,还用于为多个内存切片中的第二内存切片分配第五内存,并将第二内存中的数据拷贝至第五内存中,第五内存的宽度被预设宽度整除,第五内存的高度被预设高度整除;
编码模块1303,具体用于将多个内存切片中的第一内存切片的地址以及第五内存的地址输入至编码器。
在一种可能的实施方式中,存储内存的高度被预设高度整除。
请参阅图14,本申请提供的另一种电子设备的结构示意图,如下所述。
该电子设备可以包括前述的穿戴设备、终端或者车辆等,该电子设备可以包括处理器1401、存储器1402和收发器1403。该处理器1401和存储器1402通过线路互联。其中,存储器1402中存储有程序指令和数据。
存储器1402中存储了前述图3-图12中的步骤对应的程序指令以及数据。
处理器1401用于执行前述图3-图12中任一实施例所示的第一设备或者电子设备执行的方法步骤。
收发器1403,用于执行前述图3-图12中任一实施例所示的第一设备或者电子设备执行的接收或者发送数据的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上运行时,使得计算机执行如前述图3-图12所示实施例描述的方法中的步骤。
可选地,前述的图14中所示的电子设备为芯片。
本申请实施例还提供了一种电子设备,该电子设备也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图3-图12中任一实施例所示的电子设备执行的方法步骤。
本申请实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1401,或者处理器1401的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中电子设备执行的动作。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上行驶时,使得计算机执行如前述图3-图12所示实施例描述的方法中电子设备所执行的步骤。
本申请实施例提供的电子设备可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图3-图12所示实施例描述的设备搜寻方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体地,前述的处理单元或者处理器可以是中央处理器(central processingunit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述图3-图12的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
最后应说明的是:以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (20)

1.一种图像编码方法,其特征在于,包括:
为输入图像分配存储内存;
将所述存储内存划分为多个内存切片;
通过编码器从所述多个内存切片中至少一个内存切片的地址读取数据并进行编码,得到编码数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述存储内存划分为多个内存切片存储内存,包括:
按照预设切片大小,将所述存储内存划分为所述多个内存切片,所述预设切片大小包括预设高度和预设宽度。
3.根据权利要求2所述的方法,其特征在于,所述为输入图像分配存储内存,包括:
基于所述预设切片大小为所述输入图像分配所述存储内存。
4.根据权利要求3所述的方法,其特征在于,所述存储内存中包括第一内存和第二内存,所述第一内存中保存了所述输入图像中的各个像素点的信息,所述第二内存用于使所述存储内存的尺寸按照所述预设切片大小对齐,以使所述编码器以所述预设切片大小为单位从输入的地址中读取数据。
5.根据权利要求4所述的方法,其特征在于,所述存储内存按照阵列排列,所述存储内存的宽度被所述预设宽度整除,所述存储内存的高度被所述预设高度整除。
6.根据权利要求4所述的方法,其特征在于,所述第二内存包括第三内存和第四内存,所述第一内存和所述第三内存组合后按照阵列排列,所述阵列的高度被所述预设高度整除,所述阵列的最后一行除以所述预设宽度后的余数与第四内存组合后不小于所述预设宽度。
7.根据权利要求2或3所述的方法,其特征在于,所述存储内存按照阵列排列,所述多个内存切片分为第一内存切片和第二内存切片,所述第一内存切片的高度为所述预设高度,所述第二内存切片高度小于所述预设高度或者所述第二内存切片为所述多个内存切片组成的阵列中的最后一行最后一个切片,所述第一内存切片和所述第二内存切片为不同的内存切片;
所述方法还包括:
为所述多个内存切片中的第二内存切片分配第五内存,并将所述第二内存中的数据拷贝至所述第五内存中,所述第五内存的宽度被所述预设宽度整除,所述第五内存的高度被所述预设高度整除;
所述通过编码器从所述多个内存切片中至少一个内存切片的地址读取数据并进行编码,得到所述编码数据,包括:
通过编码器从所述多个内存切片中的第一内存切片的地址以及所述第五内存的地址读取数据并进行编码,得到所述编码数据。
8.根据权利要求7所述的方法,其特征在于,所述存储内存的高度被所述预设高度整除。
9.一种图像编码装置,其特征在于,包括:
分配模块,用于为输入图像分配存储内存;
划分模块,用于将所述存储内存划分为多个内存切片;
编码模块,用于通过编码器从所述多个内存切片中至少一个内存切片的地址读取数据并进行编码,得到编码数据。
10.根据权利要求9所述的装置,其特征在于,
所述划分模块,具体用于按照预设切片大小,将所述存储内存划分为所述多个内存切片,所述预设切片大小包括预设高度和预设宽度。
11.根据权利要求10所述的装置,其特征在于,所述划分模块,具体用于:基于所述预设切片大小为所述输入图像分配所述存储内存。
12.根据权利要求11所述的装置,其特征在于,
所述存储内存中包括第一内存和第二内存,所述第一内存中保存了所述输入图像中的各个像素点的信息,所述第二内存用于使所述存储内存的尺寸按照所述预设切片大小对齐,以使所述编码器以所述预设切片大小为单位从输入的地址中读取数据。
13.根据权利要求12所述的装置,其特征在于,所述存储内存按照阵列排列,所述存储内存的宽度被所述预设宽度整除,所述存储内存的高度被所述预设高度整除。
14.根据权利要求12所述的装置,其特征在于,所述第二内存包括第三内存和第四内存,所述第一内存和所述第三内存组合后按照阵列排列,所述阵列的高度被所述预设高度整除,所述阵列的最后一行除以所述预设宽度后的余数与第四内存组合后不小于所述预设宽度。
15.根据权利要求10或11所述的装置,其特征在于,所述多个内存切片分为第一内存切片和第二内存切片,所述第一内存切片的高度为所述预设高度,所述第二内存切片高度小于所述预设高度或者所述第二内存切片为所述多个内存切片组成的阵列中的最后一行最后一个切片,所述第一内存切片和所述第二内存切片为不同的内存切片;
所述分配模块,还用于为所述多个内存切片中的第二内存切片分配第五内存,并将所述第二内存中的数据拷贝至所述第五内存中,所述第五内存的宽度被所述预设宽度整除,所述第五内存的高度被所述预设高度整除;
所述编码模块,具体用于通过编码器从所述多个内存切片中的第一内存切片的地址以及所述第五内存的地址读取数据并进行编码,得到所述编码数据。
16.根据权利要求15所述的装置,其特征在于,所述存储内存的高度被所述预设高度整除。
17.一种电子设备,其特征在于,包括一个或多个处理器,所述一个或多个处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述一个或多个处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
18.一种计算机可读存储介质,其特征在于,包括程序,当其被处理单元所执行时,执行如权利要求1至8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
20.一种芯片,其特征在于,所述芯片包括处理单元和通信接口,所述处理单元通过所述通信接口获取程序指令,程序指令被所述处理单元执行,所述处理单元用于执行如权利要求1至8中任一项所述方法的步骤。
CN202111640001.9A 2021-12-29 2021-12-29 一种图像编码方法以及装置 Pending CN116418994A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111640001.9A CN116418994A (zh) 2021-12-29 2021-12-29 一种图像编码方法以及装置
PCT/CN2022/142277 WO2023125518A1 (zh) 2021-12-29 2022-12-27 一种图像编码方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111640001.9A CN116418994A (zh) 2021-12-29 2021-12-29 一种图像编码方法以及装置

Publications (1)

Publication Number Publication Date
CN116418994A true CN116418994A (zh) 2023-07-11

Family

ID=86997926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111640001.9A Pending CN116418994A (zh) 2021-12-29 2021-12-29 一种图像编码方法以及装置

Country Status (2)

Country Link
CN (1) CN116418994A (zh)
WO (1) WO2023125518A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117094879A (zh) * 2023-10-18 2023-11-21 南京砺算科技有限公司 数据拷贝方法及装置、计算机可读存储介质、电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5309700B2 (ja) * 2008-06-03 2013-10-09 富士通株式会社 動画像復号装置および符号化装置
CN104216835B (zh) * 2014-08-25 2017-04-05 杨立群 一种实现内存融合的方法及装置
WO2018232635A1 (zh) * 2017-06-21 2018-12-27 深圳市大疆创新科技有限公司 视频传输方法、视频处理器、网络处理器和视频传输设备
CN111538677B (zh) * 2020-04-26 2023-09-05 西安万像电子科技有限公司 数据处理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117094879A (zh) * 2023-10-18 2023-11-21 南京砺算科技有限公司 数据拷贝方法及装置、计算机可读存储介质、电子设备
CN117094879B (zh) * 2023-10-18 2024-03-26 南京砺算科技有限公司 数据拷贝方法及装置、计算机可读存储介质、电子设备

Also Published As

Publication number Publication date
WO2023125518A1 (zh) 2023-07-06

Similar Documents

Publication Publication Date Title
WO2020093988A1 (zh) 一种图像处理方法及电子设备
CN117063461A (zh) 一种图像处理方法和电子设备
CN113448382B (zh) 多屏幕显示电子设备和电子设备的多屏幕显示方法
CN114461375B (zh) 内存资源管理方法及电子设备
CN116361255A (zh) 数据同步方法、电子设备和计算机可读存储介质
CN113973398B (zh) 无线网络连接方法、电子设备及芯片***
WO2020233593A1 (zh) 一种前景元素的显示方法和电子设备
WO2023125518A1 (zh) 一种图像编码方法以及装置
CN116389884B (zh) 缩略图显示方法及终端设备
CN116048831B (zh) 一种目标信号处理方法和电子设备
WO2022121988A1 (zh) 显示同步的方法、电子设备以及可读存储介质
WO2023016059A1 (zh) 数据传输控制方法及相关装置
WO2023000745A1 (zh) 显示控制方法及相关装置
CN114945019B (zh) 数据传输方法、装置及存储介质
CN114691248B (zh) 显示虚拟现实界面的方法、装置、设备和可读存储介质
CN116828100A (zh) 蓝牙音频播放方法、电子设备及存储介质
CN114461589A (zh) 读取压缩文件的方法、文件***及电子设备
CN116048769B (zh) 内存回收方法、装置和终端设备
CN115482143B (zh) 应用的图像数据调用方法、***、电子设备及存储介质
CN116703741B (zh) 一种图像对比度的生成方法、装置和电子设备
CN116095512B (zh) 终端设备的拍照方法及相关装置
CN116703689B (zh) 一种着色器程序的生成方法、装置和电子设备
CN115529379B (zh) 防止蓝牙音频Track音轨抖动的方法、电子设备及存储介质
CN113297875B (zh) 一种视频文字跟踪方法及电子设备
CN116263760A (zh) 文件存储方法、文件访问方法、电子设备及存储介质

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