CN110324598A - 一种图像处理方法、装置及计算机设备 - Google Patents

一种图像处理方法、装置及计算机设备 Download PDF

Info

Publication number
CN110324598A
CN110324598A CN201810277482.3A CN201810277482A CN110324598A CN 110324598 A CN110324598 A CN 110324598A CN 201810277482 A CN201810277482 A CN 201810277482A CN 110324598 A CN110324598 A CN 110324598A
Authority
CN
China
Prior art keywords
conversion
image
image processing
pixel
conversion thread
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
CN201810277482.3A
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810277482.3A priority Critical patent/CN110324598A/zh
Publication of CN110324598A publication Critical patent/CN110324598A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

本发明提供了一种图像处理方法、装置及计算机设备,所述方法包括:创建N个转换线程,N为大于1的整数;获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;所述待处理图像为ARGB图像;基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素;如此,利用多转换线程同时不同的图像区域进行转换,提高了转换效率,且在转换过程中,是利用SSE指令进行转换的,由于SSE指令一个指令可以处理多条数据,这样也进一步提高了转换效率。

Description

一种图像处理方法、装置及计算机设备
技术领域
本发明属于图像处理技术领域,尤其涉及一种图像处理方法、装置及计算机设备。
背景技术
在进行H264编码时,需要将RGB格式的像素转换为YUV格式的像素,这样才能进行H264编码。通常的做法是利用YUV与RGB间的相关转换算法,在中央处理单元(CPU,CentralProcess Unit)上执行RGB格式转换成YUV格式,如果这种方法没有经过相关优化,那么在图像分辨率很大的情况下,将会非常消耗CPU资源,转换效率比较低下。如何解决现有转换方法在较大分辨率图像下,转换效率比较低下的问题,成为了行业内关注的焦点。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种图像处理方法、装置及计算机设备,用于解决现有技术中将RGB格式的像素转换为YUV格式的像素时,资源消耗大、转换效率低的技术问题。
本发明提供一种图像处理方法,所述方法包括:
创建N个转换线程,N为大于1的整数;
获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;所述待处理图像为ARGB图像;
基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
上述方案中,所述创建N个转换线程,包括:
创建N个所述转换线程的结构对象;
在每个所述结构对象中创建开始转换事件信号、转换完成事件信号、所述图像处理区域的起始标记及结束标记;
调用创建线程函数创建N个所述转换线程。
上述方案中,所述根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域,包括:
针对第i个转换线程,根据所述待处理图像的宽度确定所述第i个转换线程的图像处理区域的宽度;
根据公式height/N*(i-1)确定所述第i个转换线程的图像处理区域的初始高度;
根据公式height/N*i确定所述第i个转换线程的图像处理区域的结束高度;根据所述第i个转换线程的图像处理区域的宽度、第i个转换线程的图像处理区域的初始高度以及所述第i个转换线程的图像处理区域的结束高度确定所述第i个转换线程的图像处理区域;其中,所述height为所述待处理图像的高度,所述i为任意一个转换线程,1≤i≤N。
上述方案中,所述基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素,包括:
从每个图像处理区域中分别获取对应的Y平面掩码和UV平面掩码;
从每个图像处理区域中分别获取第j行的M个像素值和第j+1行的M个像素值,其中,M为大于1的整数;
根据获得的各所述Y平面掩码值、各所述第j行的M个像素值和各所述第j+1行的M个像素值,确定Y平面的Y像素值;
根据获得的各所述UV平面掩码值、各所述第j行M个像素值和各所述第j+1行M个像素值,确定UV平面的UV像素值。
上述方案中,所述利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换时,还包括:
调用系统的等待函数WaitForMultipleObjects对各个结构对象中的转换完成事件信号执行等待操作,当转换完成后,将对应的转换完成事件信号设置为有信号状态。
本发明还提供一种图像处理装置,所述装置包括:
创建单元,用于创建N个转换线程,N为大于1的整数;
确定单元,用于获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;所述待处理图像为ARGB图像;
转换单元,用于基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
上述方案中,所述创建单元具体用于:
创建N个所述转换线程的结构对象;
在每个所述结构对象中创建开始转换事件信号、转换完成事件信号、所述图像处理区域的起始标记及结束标记;
调用创建线程函数创建N个所述转换线程。
上述方案中,所述确定单元具体用于:
针对第i个转换线程,根据所述待处理图像的宽度确定所述第i个转换线程的图像处理区域的宽度;
根据公式height/N*(i-1)确定所述第i个转换线程的图像处理区域的初始高度;
根据公式height/N*i确定所述第i个转换线程的图像处理区域的结束高度;根据所述第i个转换线程的图像处理区域的宽度、第i个转换线程的图像处理区域的初始高度以及所述第i个转换线程的图像处理区域的结束高度确定所述第i个转换线程的图像处理区域;其中,所述height为所述待处理图像的高度,所述i为任意一个转换线程,1≤i≤N。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的方法。
本发明提供了一种图像处理方法、装置及计算机设备,所述方法包括:创建N个转换线程,N为大于1的整数;获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;基于指令集(SSE,Streaming SIMD Extensions)的转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素;如此,利用多转换线程同时不同的图像区域进行转换,提高了转换效率,且在转换过程中,是利用SSE指令进行转换的,由于SSE指令一个指令可以处理多条数据,这样也进一步提高了转换效率。
附图说明
图1为本发明实施例一提供的图像处理方法流程示意图;
图2为本发明实施例二提供的图像处理装置结构示意图;
图3为本发明实施例三提供的图像处理的计算及设备结构示意图。
具体实施方式
为了解决现有技术中将RGB格式的像素转换为YUV格式的像素时,资源消耗大、转换效率低的技术问题,本发明实施例提供了一种图像处理方法、装置及计算机设备,所述方法包括:创建N个转换线程,N为大于1的整数;获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
实施例一
这里,首先介绍下H264编码的过程,以能更好地理解本方案。在进行H264编码时,需要将RGB格式的像素转换为YUV格式的像素,这样才能进行H264编码。首先对RGB和YUV分别作出解释:
RGB色彩模式(Red、Green、Blue,红、绿、蓝三色色彩模式)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到不同的颜色,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
其中,ARGB像素格式是RGB颜色格式中的一种,使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作透明度Alpha。在内存中ARGB各分量的排列顺序为:B0、G0、R0、A0、B1、G1、R1、A1、B2、G2、R2、A2。
YUV(颜色编码方法)格式分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV格式主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV格式传输数据占用的频宽极少。YUV码流的存储格式与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。YUV格式有两大类:planar平面格式和packed打包格式。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交错存储的。
其中,NV12像素格式属于YUV420格式,是一种two-plane模式,即Y和UV分为两个平面,但是UV(CbCr)为交错存储的。其中我们假设一幅NV12图像的宽是width、高是height,那么它的Y平面的宽是width,Y平面一行像素的字节数是width,Y平面的高度是height;而它的UV平面的宽是width/2,UV平面一行像素的字节数是width,UV平面的高度是height/2。
那么本文就是将RGB格式的像素转换为NV12格式的像素。
基于以上分析,本实施例提供一种图像处理方法,如图1所示,所述方法包括:
S110,创建N个转换线程,N为大于1的整数;
这里,为了提高图像转换效率,可以在多个线程中进行图像的转换。每个转换线程中处理图像的一部分,等这些线程各自都处理完各自的部分后,那么这幅图像的转换操作也就自然完成了。
那么就需要创建N个转换线程,N为大于1的整数。
具体地,首先创建N个所述转换线程的结构对象MultiThreadConvertData;每个转换线程都具有一个结构对象MultiThreadConvertData。
然后在每个所述结构对象中,调用创建事件函数CreateEvent创建开始转换事件信号,并将该信号的结果赋值给结构对象中的开始转换hSignalStartConvert字段;
调用事件函数CreateEvent创建转换完成事件信号,并将该信号的结果赋值给结构对象中的转换完成hSignalCompleteConvert字段。
然后,确定每个所述图像处理区域的起始标记及结束标记;比如对于第i(i大于等于1小于等于N)个转换线程,其所对应的图像处理区域的高度为height/N,其中高度从height/N*(i-1)开始,并将该值赋值起始标记startY,到height/N*i,并将该值赋值给结束标记endY。
上述参数都设置好之后,调用系统的创建线程函数CreateThread创建N个所述转换线程。
S111,获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;
本步骤中,需要对每个转换线程的图像处理区域进行确定,针对第i个转换线程,根据所述待处理图像的宽度确定所述第i个转换线程的图像处理区域的宽度;所述待处理图像的宽度与第i个转换线程的图像处理区域的宽度是一致的。所述待处理图像为ARGB图像。
根据公式height/N*(i-1)确定所述第i个转换线程的图像处理区域的初始高度;根据公式height/N*i确定所述第i个转换线程的图像处理区域的结束高度;根据所述第i个转换线程的图像处理区域的宽度、第i个转换线程的图像处理区域的初始高度以及所述第i个转换线程的图像处理区域的结束高度确定所述第i个转换线程的图像处理区域;其中,所述height为所述待处理图像的高度,所述i为任意一个转换线程,所述1≤i≤N。
比如,待处理图像的高度为30行,共需要3个转换线程对其进行转换,那么第一个转换线程的图像处理区域就为0~10行,第二个转换线程的图像处理区域就为10~20行,第三个转换线程的图像处理区域就为20~30行,各个图像处理区域的宽度是相同的。
S112,基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素;
确定出每个转换线程对应的图像处理区域后,便可以对待处理图像进行像素转换了。并预设一个缓存区来存储转换后的图像。
具体地,首先将待处理图像的地址复制给每个转换线程的结构对象MultiThreadConvertData中地址inputPicture字段,表示每个转换线程中所需要转换的原始图像就是inputPicture。
然后将缓存区的地址赋值给结构中的输出图像outputPicture字段,表示每个转换线程对图像转换后,将转换后的图像存储在缓存区中。
设置后图像的输入地址及输出地址后,通知所有的转换线程开始对各自的图像处理区域进行转换。
具体地,调用系统的设置事件函数SetEven将每个结构对象中的开始转换事件信号设置为有信号状态,比如有信号状态可以以标记1标识。那么各个转换线程就会基于SSE转换指令同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
由于SSE指令是一种单指令多数据的指令,也就是说SSE的一条机器指令能够处理多条数据,而传统的CPU指令只能够处理单条数据。对于ARGB格式的像素来说,其一个像素包含Alpha透明度分量,红色分量,绿色分量,蓝色分量,每个分量一个字节,也就是说一个像素占用4个字节的内存空间,普通的CPU指令处理ARGB像素时,一次只能够处理4个字节的数据,也就是一个像素;而利用SSE指令时,一次可以处理16个字节的数据,也就是4个像素。也就是说SSE指令的一次转换操作相当于普通CPU指令的4次转换,所以利用SSE指令转换的效率至少是普通CPU指令的4倍。
由于ARGB像素格式使用32位来表示一个像素,而采用SSE指令处理ARGB像素时,一次可以处理16个字节的数据,也就是4个像素。故本实施例中,在利用SSE指令转换时,使用的是128位的__m128i数据类型,以最大化提高其转换效率。其中,需要说明的是,本实施例中,仅以SSE指令一次处理4个像素的情形为例进行说明,其一次处理2或3个像素的情形与之类似,为了避免累赘,不再一一举例示出。
在利用SSE指令进行转换时,首先每个转换线程从每个图像处理区域中分别获取对应的Y平面掩码和UV平面掩码;
例如,调用SSE指令的_mm_set1_epi32将0x0000FF00扩展到128,获取NV12格式中的Y平面掩码,并且将该值存储到lumMask中。
调用SSE指令的_mm_set1_epi16将0x00ff扩展到128位,获取NV12格式的UV平面掩码,并将该值存储到uvMask中。
然后从每个图像处理区域中分别获取第j行的M个像素值和第j+1行的M个像素值,其中,M为大于1的整数;
例如,调用SSE指令的_mm_load_si128指令将每个图像处理区域第j行的4个像素值存储到__m128i line1变量中。
调用SSE指令的调用_mm_load_si128指令将每个图像处理区域第j+1行的4个像素值存储到__m128i line2变量中。所述j为每个图像处理区域中的任意一行。
再者根据获得的各所述Y平面掩码值、各所述第j行的M个像素值和各所述第j+1行的M个像素值,获得各所述Y平面的Y像素值。
具体地,将获得的各所述Y平面掩码值与对应的第j行的M个像素值分别进行与运算后,得到第一结果;将获得的各所述Y平面掩码值与对应的所述第j+1行的M个像素值分别进行与运算,得到第二结果。对得到的所述第一结果进行算术右移,得到第三结果。对得到的所述第二结果进行算术右移,得到第四结果。根据得到的所述第三结果和所述第四结果,获得Y平面的像素值。
例如,对于某一个转换线程来说,调用SSE指令的mm_and_si128指令将line1变量值(第j行的4个像素值)与lumMask值(该图像处理区域的Y平面掩码值)进行与运算,得到第一结果,并将第一结果存储到andResult1中。
将获得的Y平面掩码值与第i+1行的M个像素值进行与运算后,得到第二结果,例如,调用SSE指令的_mm_and_s128i指令将line2变量(第i+1行的4个像素值)与lumMask值(Y平面掩码值)进行与运算,得到第二结果,并将第二结果存储到andResult2中。
将获得的Y平面掩码值与第i行的M个像素值进行与运算后,得到第一结果,然后对得到的第一结果进行算术右移,得到第三结果,例如,调用_mm_srli_si128将上步中的andResult1(第一结果)算术右移一位,得到第三结果,并将第三结果存储到srlResult1中。
将获得的Y平面掩码值与第i+1行的M个像素值进行与运算后,得到第二结果,然后对得到的第二结果进行算术右移,得到第四结果,例如,调用_mm_srli_si128将上步中的andResult2(第二结果)算术右移一位,得到第四结果,并将第四结果存储到srlResult2中。
对于其他转换线程来说,也是按照上述同样的方法进行计算,然后将分别对多个第三结果进行拼接,得到待处理图像的第五结果;对多个第三结果进行拼接,得到待处理图像的第六结果。
根据获得的第五结果和第六结果,便可以获得Y平面的Y像素值。即,第五结果中的低八字节便为第j行的Y像素值,第六结果中的低八字节便为第j+1行的Y像素值。其中,Y平面的像素值包括:第j行的Y像素值和第j+1行的Y像素值。为了便于运算及存储,优选地,将所述第五结果中的低8字节的数据存储到指针数组A中的低8字节中,将所述第六结果中的低8字节的数据存储到指针数组A中的高8字节中,将所述指针数组A中的第一个整数值作为第i行的Y像素值,第二个整数值作为第j+1行的Y像素值。例如,调用SEE指令的__mm_packs_epi32指令将上步中的srlResult1(第五结果)的低8字节和srlResult2(第六结果)的低8字节存储到变量packVal中。其中srlResult1的低8字节在packVal的低8字节中,srlResult2的低8字节在packVal的高8字节中,将上步中获取到的packVal结构中的m128i_u32数组中的第一个整数值就是第i行的Y像素值,m128i_u32数组中的第二个整数值就是第i+1行的Y像素值。
其中,指针数组A中的第一个整数值即为第五结果中的低8字节,指针数组A中的第二个整数值即为第六结果中的低8字节。其中,指针数组A可以为上述的packVal。
最后根据获得的各所述UV平面掩码值、各所述第j行M个像素值和各所述第j+1行M个像素值,确定UV平面的UV像素值。
具体地,将获得的各所述UV平面掩码值与所述第j行的M个像素值进行与运算,得到第七结果;将获得的所述UV平面掩码值与所述第j+1行的M个像素进行与运算,得到第八结果;根据获得的所述第七结果和所述第八结果获得UV平面的像素值。
例如,对于某一个转换线程来说,将获得的UV平面掩码值与第j行的M个像素值进行与运算后,得到第七结果,例如,调用_mm_and_si128指令将line1变量值(第j行的4个像素值)与uvMask值(UV平面掩码值)进行与运算,得到第八结果,并将第八结果存储到uvandResult1中。
将获得的UV平面掩码值与第j+1行的M个像素值进行与运算后,得到第六结果,例如,调用_mm_and_s128i指令将line2变量值(第j行的4个像素值)与uvMask值(UV平面掩码值)进行与运算,得到第八结果,并将第八结果存储到uvandResult2中。
获得第七结果和第八结果后,将第七结果和第八结果进行加法运算,得到第九结果,例如,调用SSE指令的_mm_add_epi64指令将uvandResult1(第七结果)和uvandResult2(第八结果)相加,得到第九结果,并将第九结果存储到addVal变量中。
获得第九结果后,对第九结果中的整数进行交换运算,优选地,将第九结果中的第二个32位整数同第一个32位整数进行交换,第三个32位整数与第4个32位整数进行交换后得到第十结果。例如,调用SSE指令的_mm_shuffle_epi32指令将addVal(第九结果)的第三个32位整数与第4个32位整数进行交换,并且将addVal(第九结果)的第二个32位整数同第一个32位整数进行交换后得到第十结果,并将第十结果存储到addValShuffle变量中。
得到第十结果后,将第十结果与第九结果相加,然后对相加的结果取平均值得到第十一结果。例如,调用SSE指令_mm_add_epi64指令将addVal(第九结果)与addValShuffle(第十结果)相加,然后调用_mm_srai_epi16指令对相加后的结果取平均值得到第十一结果,并将第十一结果存储到avgVal变量中。
得到第十一结果后,对第十一结果中的整数进行交换运算,优选地,将所述第十一结果中的第二个32位整数同第四个32位整数进行交换,将第一个32位整数同第三个32位整数进行交换后得到UV平面的像素值。例如,调用SSE指令的_mm_shuffle_epi32指令对avgVal(第十一结果)的第二个32位整数同第四个32位整数进行交换,并且对第一个32位整数同第三个32位整数进行交换,将得到的结果存储到avgValShuffle变量中。其中,存储于avgValShuffle变量中的m128i_u32数组中的第一个32位整数值就是第j行的UV像素值,即为UV平面的像素值。其中UV平面的像素值包括:第j行的UV像素值。
同样地,对于其他转换线程来说,也是按照上述同样的方法获取各第十一结果,然后对各个十一结果进行拼接,获取最终的UV像素值。
另外,当多个转换线程都在执行图像转换操作时,还需调用系统的等待函数WaitForMultipleObjects对各个结构对象中的转换完成事件信号hSignalCompleteConvert执行等待操作,当转换完成后,就会将相应的转换完成事件信号设置为有信号状态,比如有信号状态可以以标记1标识。当所有hSignalCompleteConvert都变为有信号状态时,WaitForMultipleObjects函数就会返回,意味着该图像在所有的转换线程中已完成转换。
其中,需要再次强调的是,本实施例中,仅以SSE指令一次处理4个像素的情形为例进行说明,其一次处理2或3个像素的情形与之类似,为了避免累赘,不再一一举例示出。因此,并不能将其理解成是对本发明的限制。
通过上面这些步骤,实现了利用SSE指令将ARGB像素转换为NV12像素的过程,由于SSE指令一个指令可以处理多条数据的特性,使得该方法比现有的转换算法在效率上至少快4倍,所以极大提供了转换效率;同时,利用多线程同时对待处理图像进行转换,进一步提高了转换效率。
实施例二
本实施例还提供一种图像处理装置,如图2所示,所述装置包括:创建单元21、确定单元22及转换单元23;其中,
创建单元21用于创建N个转换线程,N为大于1的整数;
确定单元22用于获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;所述待处理图像为ARGB图像。
转换单元23用于基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明实施例所提供的图像处理装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
实施例三
本实施例还提供一种图像处理的计算机设备,如图3所示,所述计算机设备包括:射频(Radio Frequency,RF)电路310、存储器320、输入单元330、显示单元340、音频电路350、WiFi模块360、处理器370、以及电源380等部件。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
RF电路310可用于信号的接收和发送,特别地,将基站的下行信息接收后,给处理器370处理。通常,RF电路310包括但不限于至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。
存储器320可用于存储软件程序以及模块,处理器370通过运行存储在存储器320的软件程序以及模块,从而执行计算机设备的各种功能应用以及数据处理。存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元330可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元330可包括触控面板331以及其他输入设备332。触控面板331,可收集用户在其上的输入操作,并根据预先设定的程式驱动相应的连接装置。触控面板331采集到输出信息后再送给处理器370。除了触控面板331,输入单元330还可以包括其他输入设备332。具体地,其他输入设备332可以包括但不限于触控面板、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元340可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元340可包括显示面板341,可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板341。进一步的,触控面板331可覆盖显示面板341,当触控面板331检测到在其上或附近的触摸操作后,传送给处理器370以确定触摸事件的类型,随后处理器370根据输入事件的类型在显示面板341上提供相应的视觉输出。虽然在图3中触控面板331与显示面板341是作为两个独立的部件来实现计算机设备的输入和输入功能,但是在某些实施例中,可以将触控面板331与显示面板341集成而实现计算机设备的输入和输出功能。
音频电路350、扬声器351,传声器352可提供用户与计算机设备之间的音频接口。音频电路350可将接收到的音频数据转换后的电信号,传输到扬声器351,由扬声器351转换为声音信号输出;
WiFi属于短距离无线传输技术,计算机设备通过WiFi模块360可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了WiFi模块360,但是可以理解的是,其并不属于计算机设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器370是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器320内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器370可包括一个或多个处理单元;优选的,处理器370可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
计算机设备还包括给各个部件供电的电源380(比如电源适配器),优选的,电源可以通过电源管理系统与处理器370逻辑相连。
本发明实施例提供的图像处理方法、装置及计算机设备能带来的有益效果至少是:
本发明提供了一种图像处理方法、装置及计算机设备,所述方法包括:创建N个转换线程,N为大于1的整数;获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素;如此,利用多转换线程同时不同的图像区域进行转换,提高了转换效率,且在转换过程中,是利用SSE指令进行转换的,由于SSE指令一个指令可以处理多条数据,这样也进一步提高了转换效率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP,Digital Signal Processing)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读存储介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种图像处理方法,其特征在于,所述方法包括:
创建N个转换线程,N为大于1的整数;
获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;所述待处理图像为ARGB图像;
基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
2.如权利要求1所述的方法,其特征在于,所述创建N个转换线程,包括:
创建N个所述转换线程的结构对象;
在每个所述结构对象中创建开始转换事件信号、转换完成事件信号、所述图像处理区域的起始标记及结束标记;
调用创建线程函数创建N个所述转换线程。
3.如权利要求1所述的方法,其特征在于,所述根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域,包括:
针对第i个转换线程,根据所述待处理图像的宽度确定所述第i个转换线程的图像处理区域的宽度;
根据公式height/N*(i-1)确定所述第i个转换线程的图像处理区域的初始高度;
根据公式height/N*i确定所述第i个转换线程的图像处理区域的结束高度;根据所述第i个转换线程的图像处理区域的宽度、第i个转换线程的图像处理区域的初始高度以及所述第i个转换线程的图像处理区域的结束高度确定所述第i个转换线程的图像处理区域;其中,所述height为所述待处理图像的高度,所述i为任意一个转换线程,1≤i≤N。
4.如权利要求1所述的方法,其特征在于,所述基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素,包括:
从每个图像处理区域中分别获取对应的Y平面掩码和UV平面掩码;
从每个图像处理区域中分别获取第j行的M个像素值和第j+1行的M个像素值,其中,M为大于1的整数;
根据获得的各所述Y平面掩码值、各所述第j行的M个像素值和各所述第j+1行的M个像素值,确定Y平面的Y像素值;
根据获得的各所述UV平面掩码值、各所述第j行M个像素值和各所述第j+1行M个像素值,确定UV平面的UV像素值。
5.如权利要求2所述的方法,其特征在于,所述利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换时,还包括:
调用系统的等待函数WaitForMultipleObjects对各个结构对象中的转换完成事件信号执行等待操作,当转换完成后,将对应的转换完成事件信号设置为有信号状态。
6.一种图像处理装置,其特征在于,所述装置包括:
创建单元,用于创建N个转换线程,N为大于1的整数;
确定单元,用于获取待处理图像的宽度及高度,根据所述待处理图像的宽度、高度及所述转换线程的数量确定每个所述转换线程的图像处理区域;所述待处理图像为ARGB图像;
转换单元,用于基于SSE转换指令,利用每个所述转换线程同时对各自的图像处理区域的ARGB像素进行转换,将所述ARGB像素转换为Y像素及UV像素。
7.如权利要求6所述的装置,其特征在于,所述创建单元具体用于:
创建N个所述转换线程的结构对象;
在每个所述结构对象中创建开始转换事件信号、转换完成事件信号、所述图像处理区域的起始标记及结束标记;
调用创建线程函数创建N个所述转换线程。
8.如权利要求6所述的装置,其特征在于,所述确定单元具体用于:
针对第i个转换线程,根据所述待处理图像的宽度确定所述第i个转换线程的图像处理区域的宽度;
根据公式height/N*(i-1)确定所述第i个转换线程的图像处理区域的初始高度;
根据公式height/N*i确定所述第i个转换线程的图像处理区域的结束高度;根据所述第i个转换线程的图像处理区域的宽度、第i个转换线程的图像处理区域的初始高度以及所述第i个转换线程的图像处理区域的结束高度确定所述第i个转换线程的图像处理区域;其中,所述height为所述待处理图像的高度,所述i为任意一个转换线程,1≤i≤N。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至权利要求5任一项所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至权利要求5任一项所述的方法。
CN201810277482.3A 2018-03-30 2018-03-30 一种图像处理方法、装置及计算机设备 Pending CN110324598A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810277482.3A CN110324598A (zh) 2018-03-30 2018-03-30 一种图像处理方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810277482.3A CN110324598A (zh) 2018-03-30 2018-03-30 一种图像处理方法、装置及计算机设备

Publications (1)

Publication Number Publication Date
CN110324598A true CN110324598A (zh) 2019-10-11

Family

ID=68111840

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810277482.3A Pending CN110324598A (zh) 2018-03-30 2018-03-30 一种图像处理方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN110324598A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112788024A (zh) * 2020-12-31 2021-05-11 上海网达软件股份有限公司 一种用于8k超高清视频的实时编码的方法及系统
CN113329257A (zh) * 2021-05-19 2021-08-31 Oppo广东移动通信有限公司 图像显示方法、装置、电子设备及可读存储介质
CN113538215A (zh) * 2021-06-11 2021-10-22 展讯半导体(成都)有限公司 图像格式的转换方法、装置及系统、电子设备及存储介质
CN113840108A (zh) * 2020-06-23 2021-12-24 深圳市万普拉斯科技有限公司 录像镜像处理方法、装置、摄像设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070002912A (ko) * 2005-06-30 2007-01-05 엘지.필립스 엘시디 주식회사 표시장치
CN107341835A (zh) * 2017-07-07 2017-11-10 武汉斗鱼网络科技有限公司 图像处理方法、装置、电子设备及计算机可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070002912A (ko) * 2005-06-30 2007-01-05 엘지.필립스 엘시디 주식회사 표시장치
CN107341835A (zh) * 2017-07-07 2017-11-10 武汉斗鱼网络科技有限公司 图像处理方法、装置、电子设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DENIS DCARLUS: "Convert a .ppm file from RGB to YUV using SSE4.1 and supporting multithreading", 《HTTPS://GITHUB.COM/DCARLUS/RGB2YUV》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113840108A (zh) * 2020-06-23 2021-12-24 深圳市万普拉斯科技有限公司 录像镜像处理方法、装置、摄像设备及可读存储介质
WO2021259191A1 (zh) * 2020-06-23 2021-12-30 深圳市万普拉斯科技有限公司 录像镜像处理方法、装置、摄像设备及可读存储介质
CN112788024A (zh) * 2020-12-31 2021-05-11 上海网达软件股份有限公司 一种用于8k超高清视频的实时编码的方法及系统
CN113329257A (zh) * 2021-05-19 2021-08-31 Oppo广东移动通信有限公司 图像显示方法、装置、电子设备及可读存储介质
CN113538215A (zh) * 2021-06-11 2021-10-22 展讯半导体(成都)有限公司 图像格式的转换方法、装置及系统、电子设备及存储介质
CN113538215B (zh) * 2021-06-11 2022-12-27 展讯半导体(成都)有限公司 图像格式的转换方法、装置及系统、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN110324598A (zh) 一种图像处理方法、装置及计算机设备
CN111326099B (zh) 显示校正方法、装置及系统、存储介质以及显示系统
CN109196574A (zh) 用于降低电子显示器的近视源性效应的方法和设备
US10228830B2 (en) Method for starting application program, terminal and non-transitory computer readable storage medium
CN105991982B (zh) 用于成像系统的颜色匹配
CN106341628A (zh) 具有宽动态范围的图像传感器、像素电路和操作方法
CN107851307A (zh) 对用于图像处理的拜耳类型图像数据去马赛克的方法和系统
US20140204007A1 (en) Method and system for liquid crystal display color optimization with sub-pixel openings
EP3011539B1 (en) Compression and decompression of graphics data using pixel region bit values
CN101101728B (zh) 一种有机电致发光显示器亮度控制系统
CN107799093A (zh) 调节终端屏幕亮度的方法、终端及计算机可读存储介质
US20180352263A1 (en) Method and device for processing color image data representing colors of a color gamut
CN107315275B (zh) 显示方法、装置和计算机设备
WO2013120331A1 (zh) 屏幕内容的显示方法及装置
CN110473499A (zh) 用于显示面板的伽马电压调试方法、显示面板及显示装置
CN105100763B (zh) 色彩补偿方法及电路、显示装置
CN107341835B (zh) 图像处理方法、装置、电子设备及计算机可读存储介质
CN103278243B (zh) 实景取色方法、系统和装置
CN103731608B (zh) 一种能支持多种颜色及自动反色的字符叠加显示方法
US20120218292A1 (en) System and method for multistage optimized jpeg output
US20180139360A1 (en) Method and device for processing color image data representing colors of a color gamut
WO2013130303A1 (en) Extended range color space
KR20160131831A (ko) 클라우드 스트리밍 서비스 시스템, 이미지의 투명도에 기반한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
CN106201393B (zh) 信息处理方法及电子设备
CN109711367B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191011

RJ01 Rejection of invention patent application after publication