具体实施方式
请参照图1,其是依据本发明的一实施例绘示的图像处理装置。在图1中,图像处理装置100可以是手机、智能型手机、个人计算机(personal computer,PC)、笔记本电脑(notebook PC)、网本型计算机(netbook PC)、平板计算机(tablet PC)、电视机、游戏机(game console)、便携式装置、或便携式多媒体播放器(portable multimedia player)等,但本发明可不限于此。
如图1所示,图像处理装置100包括存储电路102及处理器104。存储电路102例如是任意型式的固定式或可移动式随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、闪存(Flash memory)、硬盘或其他类似装置或这些装置的组合,而可用以记录多个程序代码或模块。
处理器104耦接于储存电路102,并可为一般用途处理器、特殊用途处理器、传统的处理器、数字信号处理器、多个微处理器(microprocessor)、一个或多个结合数字信号处理器核心的微处理器、控制器、微控制器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、场可编程门阵列电路(Field Programmable Gate Array,FPGA)、任何其他种类的集成电路、状态机、基于进阶精简指令集机器(Advanced RISC Machine,ARM)的处理器以及类似品。
在本发明的实施例中,处理器104可加载存储电路102中所记录的程序代码或模块以执行本发明提出的图像处理方法,以下将作进一步说明。
请参照图2,其是依据本发明的一实施例绘示的图像处理方法流程图。本实施例的方法可由图1的图像处理装置100执行,以下即搭配图1所示的组件来说明图2各步骤的细节。此外,为使图2各步骤更易于理解,以下将另搭配图3、图4及图5进行说明,其中图3是依据本发明的一实施例绘示的图像帧示意图,图4是依据本发明的一实施例绘示的动态分配内存机制示意图,而图5是依据本发明不同实施例绘示的划分共享储存空间为多个区段的示意图。应了解的是,图3至图5所示的内容仅用以举例,并非用以限定本发明可能的实施方式。
首先,在步骤S210中,处理器104可在第一图像帧300中取得属于第一特定区块组的第一区块及第二区块,并将第一区块及第二区块分别压缩为第一码流以及第二码流。
在本实施例中,第一图像帧300例如是一视频片段中的其中一帧,但可不限于此。在一实施例中,处理器104在取得第一图像帧300之后,可依据预定义的区块尺寸将第一图像帧300区分为多个区块(例如是图3所示的区块G0B0、G1B0、G2B0、G0B1、G1B1及G2B1,但可不限于此)。之后,处理器104可将第一图像帧300中的区块中的任两个区块定义为一个特定区块组。
在一实施例中,被归类至同一个特定区块组的区块彼此可在空间上不相关。以图3为例,处理器104可先将第一图像帧300区分为彼此对称的第一子帧300a及第二子帧300b。之后,处理器104可从第一子帧300a及第二子帧300b中取出位置彼此对应的两个区块,并将此二区块归类至同一个特定区块组。举例而言,处理器104可将位于第一子帧300a的区块G0B0及位于第二子帧300b的G0B1归类至第一特定区块组G0,其中区块G0B0及G0B1。相似地,处理器104亦可将区块G1B0及G1B1归类至第一特定区块组G1,以及将区块G2B0及G2B1归类至第一特定区块组G2。
为便于说明,以下将以第一特定区块组G0为例,而本领域技术人员应可依据以下教示而推得处理器104对第一图像帧300中的其他特定区块组(例如第一特定区块组G1及G2)进行的操作。
基此,在步骤S210中,处理器104可在第一图像帧300中取得属于第一特定区块组G0的区块G0B0(即,以下所称的第一区块)及区块G0B1(即,以下所称的第二区块),并将区块G0B0及G0B1分别压缩为第一码流以及第二码流。
之后,在步骤S220中,处理器104可判断是否对第一区块及第二区块采用一动态分配内存机制。在一实施例中,处理器104可判断第一码流的长度与第一特定区块组G0的共享空间信息的总和是否小于第一区块的一编码预算达一预设长度。若是,处理器104可判定对第一区块及第二区块采用本发明的动态分配内存机制,并将第一特定区块组G0的一旗标比特设定为一第一状态(例如1);若否,处理器104可将第一特定区块组G0的旗标比特设定为第二状态(例如0),以表示不对第一区块及第二区块采用上述动态分配内存机制。在本发明的实施例中,上述共享空间信息可包括空间划分粒度信息及区段使用数量,而此二参数的具体定义方式将在之后另行详述。
在一实施例中,若第一图像帧300处于一完整更新(full update)编码阶段中,则第一区块的编码预算为第一特定区块组G0的编码预算的一半减1,而上述预设长度为一个字节。
在一实施例中,当第一图像帧300处于完整更新编码阶段时,即代表第一图像帧300之前可能没有其他相似的图像帧可用于据以进行图像压缩。相对地,当第一图像帧300处于一部分更新(partial update)编码阶段时,即代表第一图像帧300之前存在相似的另一图像帧(例如第一图像帧300的前一个图像帧),因此第一图像帧300的图像压缩操作可基于对此另一图像帧进行部分更新来进行,但本发明可不限于此。
在一实施例中,假设第一区块的尺寸为8x2,则在压缩比为2的情况下,区块G0B0的编码预算即为191比特(即,384/2-1)。在此假设下,若第一码流的长度与第一特定区块组G0的共享空间信息的总和小于191比特达一个字节,则处理器104将判定需对第一区块及第二区块采用本发明的动态分配内存机制,反之亦反。在其他实施例中,本领域技术人员亦可依需求而调整上述用于判断是否采用动态内存分配机制的参数,而并不限于以上所揭示的内容。
接着,在步骤S230中,反应于判定对第一区块及第二区块采用动态分配内存机制,处理器104可对第一区块分配第一私密存储空间410,对第二区块分配第二私密存储空间420,并分配由第一区块及第二区块共享的共享存储空间430,如图4所示。
在图4中,第一私密存储空间410及第二私密存储空间420可分别专用于存储第一码流及第二码流,而各第一私密存储空间410及第二私密存储空间420的尺寸可以是128比特。相应地,共享存储空间430的尺寸可以是128比特(即,384-128x2),但本发明可不限于此。
概略而言,当处理器104采用本发明的动态分配内存机制时,可先将第一码流存储至第一私密存储空间410中。若第一私密存储空间410不足以完整地存储第一码流,则处理器104可将第一码流超出第一私密存储空间410的部分从共享存储空间430的第一端(例如,顶端)开始写入共享存储空间430中。之后,若第二私密存储空间420不足以完整地存储第二码流,则处理器104可将第二码流超出第二私密存储空间420的部分从共享存储空间430的第二端(例如,底端)开始写入共享存储空间430中。换言之,处理器104可将共享存储空间430中未被第一码流使用的部分视为第二码流可用的编码预算。藉此,可让对应于第一特定区块组G0的相关存储空间得到更具弹性的利用。以下将作进一步说明。
如图4所示,共享储存空间430可被划分为多个第一区段S0~S15,其中用于存储第一码流的部分可称为第一部分430a,而用于存储第二码流的部分可称为第二部分430b。在一实施例中,第一部分430a中的第一区段S0~S4的数量(即,5个)可记录为上述共享空间信息的区段使用数量(例如,「0101」)。此外,共享储存空间430被划分的方式可基于上述的共享空间信息中的空间划分粒度信息而定。
在一实施例中,空间划分粒度信息可选自于多个候选粒度,而处理器104可基于本发明的一粒度划分机制来决定空间划分粒度信息。具体而言,处理器104可基于所述多个候选粒度中的第i个候选粒度将该共享存储空间区分为多个参考区段,并计算以第一私密存储空间410、第二私密存储空间420及所述多个参考区段协同存储第一码流及第二码流所使用的特定字节数量,其中i为小于所述多个候选粒度的数量的正整数。之后,处理器104可计算对应于各候选粒度的该特定字节数量,并以所述多个候选粒度中对应于一最低特定字节数量的一者作为上述空间划分粒度信息。
以图5为例,其绘示了依据4个候选粒度LV0~LV3将共享存储空间分别划分为多个第一区段的示意图。以候选粒度LV0为例,处理器104可据以将共享存储空间430划分为2个第一区段,而其各自的尺寸例如是64比特。再以候选粒度LV3为例,处理器104可据以将共享存储空间430划分为16个第一区段,而其各自的尺寸例如是8比特(即,图4所示态样)。处理器104基于候选粒度LV1及LV2划分共享存储空间的方式应可依据以上教示而推得,于此不另赘述。
举例而言,假设第一码流在共享储存空间430中需使用11比特。在此情况下,若采用候选粒度LV0(其可用1个比特表示,例如「0」),则需使用一个参考区段(其可用2个比特表示,例如「01」)来存储。因此,若以第一私密存储空间410、第二私密存储空间420及上述参考区段协同存储第一码流及第二码流的话,需要使用14个比特(即,11+1+2),其实际占用8个字节。亦即,对应于候选粒度LV0的特定字节数量为8。
若采用候选粒度LV1(其可用2个比特表示,例如「01」),则需使用一个参考区段(其可用2个比特表示,例如「01」)来存储。因此,若以第一私密存储空间410、第二私密存储空间420及上述参考区段协同存储第一码流及第二码流的话,需要使用15个比特(即,11+2+2),其实际占用4个字节。亦即,对应于候选粒度LV1的特定字节数量为4。
同理,若采用候选粒度LV2,则需要使用16个比特,其实际占用2个字节。亦即,对应于候选粒度LV2的特定字节数量为2。若采用候选粒度LV3,则需要使用17个比特,其实际占用3个字节。亦即,对应于候选粒度LV3的特定字节数量为3。由上可知,候选粒度LV2在候选粒度LV0~LV3中具有最低特定字节数量,故处理器104可以候选粒度LV2作为上述空间划分粒度信息。
并且,由以上教示可知,图4中所采用的空间划分粒度信息(即,候选粒度LV3)亦是由处理器104基于上述的粒度划分机制而定。亦即,处理器104基于候选粒度LV3将共享存储空间430划分为16个第一区段S0~S15。
在一实施例中,在执行步骤S220之前,处理器104可先行执行以上机制来决定关联于第一特定区块组G0的共享空间信息(其包括空间划分粒度信息及区段使用数量),以作为步骤S220的判断依据,但本发明可不限于此。
之后,在步骤S240中,当第一私密存储空间410不足以存储第一码流时,处理器104可使用第一私密存储空间410及第一区段S0~S15中的第一部分430a协同存储第一码流。亦即,对于第一码流超出第一私密存储空间410的部分,处理器104可利用位于共享存储空间430的第一端(例如,顶端)的第一部分430a(其例如包括区段S0~S4)进行储存。
在一实施例中,在将第一私密存储空间410完全用于存储第一码流的一部分之后,对于第一码流的剩余部分(即,超出第一私密存储空间410的部分),处理器104可从共享存储空间430的顶端开始将上述第一码流的剩余部分写入共享存储空间430。亦即,处理器104可将上述第一码流的剩余部分依序写入第一区段S0~S4,但本发明可不限于此。在一实施例中,处理器104还可以对应于第一特定区块组G0的区段使用数量记载第一部分430a中的第一区段S0~S4的数量,亦即,5(「0101」)。
并且,在步骤S250中,当第二私密存储空间420不足以存储第二码流时,处理器104可使用第二私密存储空间420及第一区段S0~S15中的第二部分430b协同存储第二码流。亦即,对于第二码流超出第二私密存储空间420的部分,处理器104可利用位于共享存储空间430的第二端(例如,底端)的第二部分430b(其例如包括区段S8~S15)进行储存。
在一实施例中,在将第二私密存储空间420完全用于存储第二码流的一部分之后,对于第二码流的剩余部分(即,超出第二私密存储空间420的部分),处理器104可从共享存储空间430的底端开始将上述第二码流的剩余部分写入共享存储空间430。亦即,处理器104可将上述第二码流的剩余部分依序写入第一区段S15~S8,但本发明可不限于此。
从另一观点而言,对于第一特定区块组G0的第二区块来说,其可用的编码预算取决于处理器104是否对第一特定区块组G0采用动态分配内存机制。若采用动态分配内存机制,则处理器104可基于共享空间信息来得知共享存储空间430中还有多少未使用的区段可作为第二区块的编码预算。亦即,处理器104可基于空间划分粒度信息得知共享存储空间430被划分的方式,并基于区段使用数量得知用于存储第一码流的剩余部分的第一区段的数量。
以图4为例,在处理器104完成第一码流的存储之后,处理器104即可将暂未使用的第一区段S5~S15皆视作第二区块的编码预算。由此可知,本发明提出的方法可根据属于同一特定区块组的第一区块及第二区块的内容复杂性分配相应的编码预算,故可以支持编码预算的再调整,进而在保证编码质量的同时提高了编码器的灵活性。
另一方面,若不采用动态分配内存机制,则第一区块及第二区块各自的预算即为原始的预算(例如,192比特)。
另外,承先前所述,虽然以上实施例皆基于第一特定区块组G0进行说明,但对于第一图像帧300的其他特定区块组(例如第一特定区块组G1及G2)而言,处理器104同样可进行以上实施例教示的机制来为这些特定区块组安排相关的编码预算。换言之,处理器104对各个特定区块组进行的操作是彼此独立的。亦即,处理器104为各第一特定区块组G0~G2所得到的共享区域信息可以是不同的,因而可达到更具灵活性的编码机制。
此外,由图4可看出,在处理器104完成第二码流的存储之后,第一部分430a及430b之间仍存在未使用部分430c(其例如包括第一区段S5~S7)。在一实施例中,对于次于第一图像帧300的第二图像帧而言,若第二图像帧处于部分更新编码阶段且包括对应于第一特定区块组G0的第二特定区块组,则未使用部分430c还可作为所述第二特定区块组的编码预算来使用。
为此,在完成第一区块及第二区块的存储之后,处理器104可将属于未使用部分430c的第一区段S5~S7写0,藉以表示第一区段S5~S7是未使用的。并且,为让处理器104在进行后续的操作时可辨识第二部分430b的末尾,处理器104可判断第二部分430a的最后字节(例如图4中第一区段S8的最后一个字节)是否皆为0。若是,则在第二部分430b的末尾写1(可称作末尾比特(trailing bit)),反之则不另进行更动。
具体而言,对于次于第一图像帧300的第二图像帧而言,处理器104可在第二图像帧中取得属于第二特定区块组的第三区块及第四区块。如上所述,第二特定区块组对应于第一特定区块组G0,亦即第二特定区块组在第二图像帧中的位置与第一特定区块组G0在第一图像帧中的位置相同。此外,第三区块在第二图像帧中的位置与第一区块在第一图像帧中的位置相同,且第四区块在第二图像帧中的位置与第二区块在第一图像帧中的位置相同。
之后,处理器104可将第三区块及第四区块分别压缩为第三码流以及第四码流,并判断第一区块及第二区块是否采用本发明的动态分配内存机制。在一实施例中,处理器104可取得第一特定区块组G0对应的旗标比特。若此旗标比特为第一状态(例如,1),即代表第一特定区块组G0的第一区块及第二区块已采用本发明的动态分配内存机制。另一方面,若此旗标比特为第二状态(例如,0),即代表第一特定区块组G0未采用本发明的动态分配内存机制,但本发明可不限于此。
反应于判定第一区块及第二区块采用动态分配内存机制,处理器104可对第三区块分配第三私密存储空间,对第四区块分配第四私密存储空间,并分配由第三区块及第四区块共享的另一共享存储空间,其中所述另一共享存储空间被区分为多个第二区段。本实施例的相关细节可参照先前实施例的说明,于此不另赘述。
接着,当第三私密存储空间不足以存储第三码流时,处理器104可取得未使用空间430c,并使用第三私密存储空间、前述第二区段中的第三部分及未使用空间430c协同存储第三码流,其中前述第二区段的第三部分位于所述另一共享存储空间的第一端。
与先前实施例不同之处在于,本实施例的处理器104可将对应于第一图像帧300的未使用空间430a用于存储第二图像帧(其处于部分更新编码阶段)的第三码流。简言之,在部分更新编码阶段中,第三区块的编码预算为可变化的。
为此,处理器104可先基于与第一图像帧300的相关信息来取得未使用空间430c。在一实施例中,处理器104可读取第一特定区块组G0对应的空间划分粒度信息及区段使用数量。之后,处理器104可基于空间划分粒度信息及区段使用数量推算第一码流在共享存储空间430占用的第一部分430a。
接着,处理器104可自第一部分430a的末尾开始读取共享存储空间430,直至读到一非零字节(即,第二部分430b的末尾),并以位于第一部分430a的末尾及非零字节之间的第一区段S5~S7作为未使用空间430c。
此外,当第四私密存储空间不足以存储第四码流时,处理器104可使用第四私密存储空间及前述第二区段中的第四部分协同存储第二码流,其中前述第二区段的第四部分位于所述另一共享存储空间的第二端。亦即,在部分更新编码阶段中,对于第四区块的编码机制与完整更新编码阶段中的编码机制相同,故其相关细节可参照先前实施例中的说明,于此不另赘述。
在其他实施例中,若处理器104基于上述旗标比特得知第一特定区块组G0的第一区块及第二区块未采用本发明的动态分配内存机制,则处理器104可基于步骤S220~S250教示的机制来为第二特定区块组的第三区块及第四区块安排相关的编码预算,其细节于此不另赘述。
综上所述,本发明提出的图像处理方法及其装置可在判断需对属于同一特定区块组的第一区块及第二区块采用本发明的动态分配内存机制之后,为第一区块及第二区块分配专属的私密存储空间以及共享存储空间。并且,在将第一区块及第二区块分别压缩为第一码流及第二码流之后,本发明的图像处理装置可适应性地划分共享存储空间,并进行相应的动态分配与动态更新,使得可以根据第一区块及第二区块的内容复杂性分配相应的编码预算。并且,本发明还可以支拟编码预算的再调整,进而在保证编码质量的同时提高了编码器的灵活性。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的权利要求书所界定者为准。