具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图3所示,本申请实施例涉及一种移动设备,该移动设备具体可以包括:
输入单元301、显示单元302、处理器303、存储器304、传感器305、音频电路306、无线保真(Wireless Fidelity,简称WiFi)模块307、射频(Radio Frequency,简称RF)电路308、电源309以及总线310,输入单元301、显示单元302、处理器303、存储器304、传感器305、音频电路306、WiFi模块307、RF电路308通过总线310相互连接通信。本领域技术人员可以理解,图2中示出的设备结构并不构成对移动设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
移动设备以手机300为例,下面结合图3对手机的各个构成部件进行具体的介绍:
输入单元301可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元301可包括触控面板3011以及其他输入设备3012。触控面板3011也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板3011上或在触控面板3011附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板3011可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器303,并能接收处理器303发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板3011。除了触控面板3011,输入单元301还可以包括其他输入设备3012。具体地,其他输入设备3012可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元302可用于显示由用户输入的信息或提供给用户的信息以及手机300的各种菜单。显示单元302可包括显示面板3021,可选的,可以采用液晶显示器(LiquidCrystal Display,简称LCD)、有机发光二极管(Organic Light-Emitting Diode,简称OLED)等形式来配置显示面板3021。进一步的,触控面板3011可覆盖显示面板3021,当触控面板3011检测到在其上或附近的触摸操作后,传送给处理器303以确定触摸事件的类型,随后处理器303根据触摸事件的类型在显示面板3021上提供相应的视觉输出。虽然在图3中,触控面板3011与显示面板3021是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板3011与显示面板3021集成而实现手机的输入和输出功能。
手机300还可包括至少一种传感器305,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板3021的亮度,接近传感器可在手机移动到耳边时,关闭显示面板3021和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路306、扬声器311、传声器312可提供用户与手机300之间的音频接口。音频电路306可将接收到的音频数据转换后的电信号,传输到扬声器311,由扬声器311转换为声音信号输出;另一方面,传声器312将收集的声音信号转换为电信号,由音频电路306接收后转换为音频数据,再将音频数据输出处理器303处理后,经RF电路308以发送给比如另一手机,或者将音频数据输出至存储器304以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块307可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图3示出了WiFi模块307,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
RF电路308可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器303处理;另外,将设计上行的数据发送给基站。通常,RF电路308包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,简称LNA)、双工器等。此外,RF电路308还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,简称GSM)、通用分组无线服务(GeneralPacket Radio Service,简称GPRS)、码分多址(Code Division Multiple Access,简称CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)、长期演进(Long Term Evolution,简称LTE)、电子邮件、短消息服务(Short Messaging Service,简称SMS)等。
存储器304可用于存储软件程序以及模块,处理器303通过运行存储在存储器304的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器304可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器304可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器303是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器304内的软件程序和/或模块,以及调用存储在存储器304内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器303可包括一个或多个处理单元;优选的,处理器303可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器303中。
手机还包括给各个部件供电的电源309(比如电池),优选的,电源可以通过电源管理系统与处理器303逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,处理器303可以调用存储器304存储的操作指令,来执行以下方法:获取待处理图像;建立由X轴、Y轴与Z轴组成的三维坐标系,由X轴与Y轴构成的XY平面与显示屏所在二维平面平行;调用gluLookAt(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz),将待处理图像进行视图变换得到待显示图像,其中,Ax,Ay,Az分别为观察点的x轴坐标、y轴坐标、z轴坐标,Bx,By,Bz分别为观察对象的x轴坐标、y轴坐标、z轴坐标,Cx,Cy,Cz分别为目标向量的终点的x轴坐标、y轴坐标、z轴坐标,目标向量用于指示观察点的正上方向,Ay>0,Az>0,Cx=0,Cy>0,Cz<0;将待显示图像显示在显示屏上。
可选的,本申请的另一个实施例中,处理器303还可以执行以下方法:摄取目标图像,从目标图像中提取图像特征,图像特征为头部特征;若图像特征与预设头部特征的相似度大于预设阈值,则根据移动设备的摄像镜头所在二维平面与显示屏所在二维平面的角度,确定(Cx,Cy,Cz);测量用户到移动设备的距离,根据距离以及角度,确定(Ax,Ay,Az);确定(Bx,By,Bz)。
在实际应用中,显示图像与用户视线未必正好相对,为了进一步调整显示图像与显示屏的夹角,可选的,本申请的另一个实施例中,处理器303还可以执行以下方法:接收按键信息,根据按键信息将(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)修改为(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′);调用gluLookAt(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′),将待显示图像进行视图变换得到目标显示图像;将目标显示图像显示在显示屏上。
可选的,在本申请的另一个实施例中,处理器303还可以执行以下方法:检测作用于显示屏的触摸操作,根据触摸操作将(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)修改为(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′);调用gluLookAt(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′),将待显示图像进行视图变换得到目标显示图像;将目标显示图像显示在显示屏上。
在本申请的另一个实施例中,处理器303还可以执行以下方法:
获取待处理图像;建立由X轴、Y轴与Z轴组成的三维坐标系,由X轴与Y轴构成的XY平面与显示屏所在二维平面平行;调用glRotate(α,Px,Py,Pz),将待处理图像进行模型变换得到待显示图像,其中0度<α<90度,Px>0,Py=0,Pz=0;将待显示图像显示在显示屏上。
可选的,在本申请的另一个实施例中,在调用glRotate(α,Px,Py,Pz),将待处理图像进行视图变换得到待显示图像之前,处理器303还可以执行以下方法:摄取目标图像,从目标图像中提取图像特征,图像特征为头部特征;若图像特征与预设头部特征的相似度大于预设阈值,则将移动设备的摄像镜头所在二维平面与显示屏所在二维平面的角度作为α;确定(Px,Py,Pz)。
可选的,在本申请的另一个实施例中,在将待显示图像显示在显示屏上之后,处理器303还可以执行以下方法:
接收按键信息,根据按键信息将α为α′;调用glRotate(α′,Px,Py,Pz),将待显示图像进行模型变换得到目标显示图像;将目标显示图像显示在显示屏上。
可选的,在本申请的另一个实施例中,在将待显示图像显示在显示屏上之后,处理器303还可以执行以下方法:
检测作用于显示屏的触摸操作,根据触摸操作将α修改为α′;调用glRotate(α′,Px,Py,Pz),将待显示图像进行模型变换得到目标显示图像;将目标显示图像显示在显示屏上。
基于图3所示实施例或可选实施例的移动设备,本申请提供了多种图像处理方法,能够改善屏幕显示图像与用户视线的倾斜角度,具体请参阅以下实施例:
请参阅图4,基于上述硬件结构的移动设备(例如手机300),本申请中图像处理方法的一个实施例包括:
401、移动设备获取待处理图像;
本实施例中,当用户选择播放图片时,移动设备可以获取该图片,将其作为待处理图像;当用户观看视频时,移动设备可以解码视频文件得到多个视频帧,将每个视频帧作为一个待处理图像。其中,图片格式可以是BMP、JPG、JPEG、PNG、GIF、PSD、FPX、EXIF、DXF、EPS或TGA等。
402、移动设备建立由X轴、Y轴与Z轴组成的三维坐标系,由X轴与Y轴构成的XY平面与显示屏所在二维平面平行;
移动设备可以利用开放图形库(Open Graphics Library,简称OpenGL)建立三维坐标系。OpenGL是一种跨编程语言、跨平台的编程接口规格的图形程序接口。嵌入式系统的开放图形库(OpenGL for Embedded Systems,简称OpenGL ES)是一个主要应用于移动设备的OpenGL子集,能实现非常丰富的动画效果。
403、移动设备调用gluLookAt(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz),将待处理图像进行视图变换得到待显示图像;
移动设备获取待处理图像之后,可以将待处理图像存入显示缓冲区,然后调用gluLookAt(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)来对待处理图像进行视图变换。
其中,gluLookAt(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)是OpenGL ES提供的视图变换函数。Ax,Ay,Az分别为观察点在三维坐标系中的x轴坐标、y轴坐标、z轴坐标,Bx,By,Bz分别为观察对象在三维坐标系中的x轴坐标、y轴坐标、z轴坐标,从原点(0,0,0)到C点(Cx,Cy,Cz)的向量为目标向量,该目标向量用于指示观察点的正上方向。其中,观察点也可以称作视点,观察对象也可以称作参考点。原点为目标向量的起点,C点为目标向量的终点。
在建立的三维坐标中,观察点可以看作相机,观察对象可以看作相机镜头对准的物体,目标向量用于表示相机的正上方向,如图5所示。在OpenGL ES中,gluLookAt函数也可以采用gluLookAt(eyex,eyey,eyez,centerx,centery,centerzupx,upx、upy、upz)表示。
当Ay>0,Az>0时,相当于观察点A位于由XY平面与z轴正方向构成的空间内。当Cx=0,Cy>0,Cz<0时,表示观察点的正上方向倾斜于XY平面。
举例来说,当视图变换参数为(0,5,5,0,0,0,0,1,-1)时,根据该视图变换参数将待处理图像进行视图变换之后,相当于观察者在观察点(即三维坐标系的(0,5,5)的位置),以从(0,0,0)到(0,1,-1)的向量方向为观察点的正上方向,即表示以斜向下45度的用户视线看着(0,0,0)处的待处理图像,为便于观察,仅以待显示图像部分为例,如图6所示。
404、移动设备将待显示图像显示在显示屏上。
移动设备得到待显示图像之后,可以将待显示图像显示在显示屏上,该显示图像倾斜于显示屏所在平面。当移动设备水平放置时,显示图像斜向上显示。由于显示图像与显示屏所在平面存在夹角α,如图7所示,显示屏与用户视线的夹角为β,则显示图像与用户视线的夹角为α+β,当α+β=90时,该显示图像正对用户视线,提高了用户的观影体验。
其中,移动设备将显示图像显示在显示屏上的具体过程可包括:显示图像→投影变换→视口变换,即将显示图像从三维坐标系转换为在显示屏所在二维平面的二维图形,再在显示屏所在二维平面选择视口(显示窗口),将显示图像在视口进行显示。
本实施例中,移动设备可以将显示图像向屏幕里旋转,使得显示图像能够与用户视线相对,用户可以清楚的观看到整个图像,改善了用户观影体验,与现有技术相比,本申请技术提高了人机交互效率,并且节约了支撑架的开销。
在本发明另外的一些实施例中,移动设备可以根据观察者相对于移动设备所处位置的不同,来调用gluLookAt函数,进而动态、实时显示图像在显示屏上。
具体的,当移动终端水平放置时,移动终端能够通过距离传感器检测到身体和移动终端的距离,例如40cm;移动终端还可以获取预设高度,例如40cm,移动终端可以根据身体到移动终端的距离,以及预设高度来确定观察点的位置(0,4,4)以及目标向量终点的位置(0,1,-1),然后以(0,4,4,0,0,0,0,1,-1)为视图变换参数,对待处理图像进行视图变换得到待显示图像,再显示在显示屏上。在用户看来,显示图像与显示屏所在二维平面的夹角为45度。
当身体远离移动终端时,移动终端可以检测到移动终端与身体的距离增大,根据检测到的距离,将观察点的z轴坐标增加,减小目标向量终点的y轴坐标并保持目标向量终点的z轴坐标不变;当待显示图像显示在显示屏上时,在用户看来,显示图像与显示屏所在二维平面的夹角增大了。当身体靠近移动终端时,移动终端将观察点的z轴坐标减小,增加目标向量终点的y轴坐标并保持目标向量终点的z轴坐标不变;当待显示图像显示在显示屏上时,在用户看来,显示图像与显示屏所在二维平面的夹角减小了。由此可见,随着身体的移动,用户视线与显示屏所在二维平面的夹角不断变化,而移动终端可以根据身体到移动终端的距离实时调整显示图像与显示屏所在二维平面的夹角,使得显示图像总是与用户视线相对。
或者,当用户旋转移动终端时,移动终端能够通过陀螺仪、检测显示屏所在二维平面与水平面的夹角,随着该夹角的增加,移动终端可以将目标向量终点的y轴坐标减小并增加目标向量终点的z轴坐标;在用户看来,显示图像与显示屏所在二维平面的夹角变小了。当显示屏所在二维平面与水平面的夹角为45度时,显示图像与显示屏所在二维平面重合或平行。由此可见,随着移动终端旋转,用户视线与显示屏所在二维平面的夹角不断变化,而移动终端可以根据显示屏所在二维平面与水平面的夹角实时调整显示图像与显示屏所在二维平面的夹角,使得显示图像总是与用户视线相对。
在本发明实施例中,视图变换参数(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)可以是根据经验设定的,也可以是由移动设备根据获取的其他参数设定的。下面对移动设备根据其他参数设定视图变换参数的过程进行介绍。在本申请的另一个实施例中,在步骤402之后,步骤403之前,该图像处理方法还包括:
移动设备摄取目标图像,从目标图像中提取图像特征,图像特征为头部特征;
若图像特征与预设头部特征的相似度大于预设阈值,则移动设备根据移动设备的摄像镜头所在二维平面与显示屏所在二维平面的角度,确定(Cx,Cy,Cz);
移动设备测量用户到移动设备的距离;
根据上述距离以及上述角度,确定(Ax,Ay,Az);
确定(Bx,By,Bz)。
本实施例中,移动设备设置有倾斜于显示屏的摄像头,摄像镜头所在二维平面与显示屏所在二维平面的角度可以记为θ。移动设备可以通过摄像头摄取图像,在从摄取图像中提取图像特征,例如眼睛、眉毛、头发、鼻子等头部特征,若提取的图像特征与预设的图像特征的相似度大于预设阈值,则确定眼睛到显示屏存在倾角,将该倾角的取值设置为θ,根据θ选取Cy,Cz,具体公式可以为:tanθ=|Cy|/|Cz|。Cx一般可设置为0。
其中,距离传感器可设置在摄像头的相邻位置,移动设备还可以通过距离传感器测量头部特征到移动设备的距离,该距离可记为L,根据θ以及L选取Ay,Az,具体可以为Ay=L×sinθ×a,Az=L×cosθ×a。a为转换系数,用于将实际距离转换到三维坐标系。Ax一般可设置为0。
(Bx,By,Bz)可以为(0,0,0)。
由上可见,移动设备可以根据观察者相对于移动设备所处位置的不同,来调用gluLookAt函数,进而动态、实时显示图像在显示屏上。
按照图4所示的图像处理方法,移动设备将显示图像显示在显示屏上之后,显示图像可能没有正对用户视线,需要调节显示图像与显示屏所在平面的夹角。本申请提供了调节上述夹角的方法,能够将显示图像与用户视线之间的夹角垂直或基本垂直,该方法如下:
在本申请的另一个实施例中,在步骤404之后,该图像处理方法还包括:接收按键信息,根据按键信息将(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)修改为(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′);调用gluLookAt(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′),将显示图像进行视图变换得到目标显示图像;将目标显示图像显示在显示屏上。
本实施例中,Ax′,Ay′,Az′分别为修改后的观察点的x轴坐标、y轴坐标、z轴坐标,Bx′,By′,Bz′分别为修改后的观察对象的x轴坐标、y轴坐标、z轴坐标,Cx′,Cy′,Cz′分别为修改后的目标向量的终点的x轴坐标、y轴坐标、z轴坐标。
移动设备可以通过实体按键(如音量键)或虚拟按键,将视图变换参数(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)修改为目标视图变换参数(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′),调用gluLookAt(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′)将显示图像进行视图变换得到目标显示图像,从而改变显示图像与显示屏的夹角。举例来说,按一次音量键+,视图变换参数中的正上方向与XY平面的夹角增加5度,显示图像向屏幕里旋转5度,按一次音量键-,视图变换参数中的正上方向与XY平面的夹角减少5度,显示图像向屏幕外旋转5度。可以理解的是,按键信息与视图变换参数中的正上方向的对应关系可以根据实际情况设定,具体此处不作限定。
需要说明的是,移动设备根据目标视图变换参数将显示图像进行视图变换得到目标显示图像,再将目标显示图像显示在显示屏上的过程,与图4所示实施例中步骤403至步骤404相似,此处不再赘述。
在本申请的另一个实施例中,在步骤404之后,该图像处理方法还包括:检测作用于显示屏的触摸操作,根据触摸操作将视图变换参数(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)修改为目标视图变换参数(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′);调用gluLookAt(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′),将显示图像进行视图变换得到目标显示图像;将目标显示图像显示在显示屏上。
本实施例中,当手指在显示屏上滑动时,移动设备可以检测到滑动操作,并根据滑动操作修改视图变换参数,从而改变显示图像与显示屏的夹角。举例来说,手指向上滑动时,显示图像向屏幕外旋转,手指向下滑动时,显示图像向屏幕里旋转。或者,手指向左滑动时,显示图像向屏幕外旋转,手指向右滑动时,显示图像向屏幕里旋转。可以理解的是,手指在显示屏上的滑动距离与图像旋转角度的对应关系可以根据实际情况设置,具体此处不作限定。
需要说明的是,移动设备根据目标视图变换参数将显示图像进行视图变换得到目标显示图像,再将目标显示图像显示在显示屏上的过程,与图4所示实施例中步骤403至步骤404相似,此处不再赘述。
在本申请的另一个实施例中,在步骤401之前,该图像处理方法还包括:移动设备检测设备姿态;当设备姿态为水平放置姿态时,触发移动设备执行步骤401。
本实施例中,移动设备可以利用陀螺仪检测设备姿态,当检测到设备姿态为水平放置姿态时,触发步骤401至步骤404。在这种情况下,移动设备可以自动使显示图像与用户视线相对,无需用户启动上述图像处理方法的相关程序,可以节省用户时间。
请参阅图8,本申请中图像处理方法的另一个实施例包括:
801、移动设备获取待处理图像;
802、移动设备建立由X轴、Y轴与Z轴组成的三维坐标系,由X轴与Y轴构成的XY平面与显示屏所在二维平面平行;
步骤801至步骤802与图4所示实施例中步骤401至步骤402相似,此处不再赘述。
803、移动设备调用glRotate(α,Px,Py,Pz),将待处理图像进行模型变换得到待显示图像;
移动设备获取待处理图像之后,可以将待处理图像存入显示缓冲区,然后利用glRotate(α,x,y,z)对待处理图像进行模型变换。其中,glRotate(α,Px,Py,Pz)是OpenGL ES提供的模型变换函数。其中,α为旋转角度,Px,Py,Pz分别为旋转轴端点的x轴坐标、y轴坐标、z轴坐标,(0,0,0)为向量的起点。当Px>0,Py=0,Pz=0时,表明显示图像围绕x轴旋转,x轴为旋转轴;当0度<α<90度时,表明显示图像向屏幕里旋转,且旋转角度不超过90度。
举例来说,当α为45度,(Px,Py,Pz)为(1,0,0)时,则模型变换参数为(45,1,0,0),将该模型变换参数作为glRotate函数的输入参数,经过glRotate函数处理之后,可以得到待显示图像,该待显示图像相对于XY平面向屏幕里旋转45度角,如图9所示。需要说明的是,该显示图像还可以经过glTranslate函数来改变显示图像到XY平面的距离。举例来说,当移动设备得到显示图像之后,再执行glTranslate(0,1,0),表示将显示图像向y轴方向移动1个单位。
804、移动设备将待显示图像显示在显示屏上
步骤804与图4所示实施例中步骤404相似,此处不再赘述。
可选的,在本申请的另一个实施例中,在步骤803之前,该图像处理方法还包括:
移动设备摄取目标图像,从目标图像中提取图像特征,图像特征为头部特征;
若图像特征与预设头部特征的相似度大于预设阈值,则移动设备将移动设备的摄像镜头所在二维平面与显示屏所在二维平面的角度作为α;
移动设备确定(Px,Py,Pz)。
本实施例中,移动设备设置有倾斜于显示屏的摄像头,摄像镜头所在二维平面与显示屏所在二维平面的角度可以记为θ。移动设备可以通过摄像头摄取图像,在从摄取图像中提取图像特征,例如眼睛、眉毛、头发、鼻子等头部特征,若提取的图像特征与预设的图像特征的相似度大于预设阈值,则确定眼睛到显示屏存在倾角,移动设备可以获取θ,并将θ作为旋转角度。举例来说,Py=0,Pz=0,Px可以为x正半轴上的任意一点。
可选的,在本申请的另一个实施例中,在将显示图像显示在显示屏上之后,该图像处理方法还包括:接收按键信息,根据按键信息将α修改为α′,α′为修改后的旋转角度;调用glRotate(α′,Px,Py,Pz),将显示图像进行模型变换得到目标显示图像;将目标显示图像显示在显示屏上。
具体的,移动设备可以通过实体按键(如音量键)或虚拟按键,将模型变换参数(α,Px,Py,Pz)修改为目标模型参数(α′,Px,Py,Pz),调用glRotate(α′,Px,Py,Pz)将显示图像进行模型变换得到目标显示图像,从而改变显示图像与显示屏的夹角。举例来说,按一次音量键+,将模型变换参数的旋转角度增加5度,按一次音量键-,将模型变换参数的旋转角度减少5度。可以理解的是,按键信息与旋转角度的对应关系可以根据实际情况设定,具体此处不作限定。
可选的,在本申请的另一个实施例中,在将显示图像显示在显示屏之后,该图像处理方法还包括:检测作用于显示屏的触摸操作,根据触摸操作将模型变换参数(α,Px,Py,Pz)修改为目标模型变换参数(α′,Px,Py,Pz);调用glRotate(α′,Px,Py,Pz),将显示图像进行模型变换得到目标显示图像;将目标显示图像显示在显示屏上。
具体的,当手指在显示屏上滑动时,移动设备可以检测到滑动操作,并根据滑动操作修改模型变换参数中的α,从而改变显示图像与显示屏的夹角。举例来说,手指向上滑动时,模型变换参数的旋转角度变小,显示图像向屏幕外旋转;手指向下滑动时,模型变换参数的旋转角度变大,显示图像向屏幕里旋转。或者,手指向左滑动时,模型变换参数的旋转角度变小,显示图像向屏幕外旋转;手指向右滑动时,模型变换参数的旋转角度变大,显示图像向屏幕里旋转。可以理解的是,手指在显示屏上的滑动距离与旋转角度的对应关系可以根据实际情况设置,具体此处不作限定。
为便于理解,下面以一个具体应用场景对本申请中的图像处理方法进行详细介绍:
移动设备以手机为例,用户将手机平放在桌面,点击视频,手机可以获取视频文件,将其解码得到视频帧;手机还可以利用OpenGL建立三维坐标系,其中XY平面与显示屏所在二维平面平行;
预设视图变换参数以(0,5,5,0,0,0,0,1,-1)为例,手机调用gluLookAt函数对视频帧进行视图变换得到新的视频帧,将新的视频帧显示在显示屏上。该视频帧相对于显示屏向屏幕里旋转45度,当用户视线与显示屏的角度为45度时,该视频帧与用户视线垂直。当手机连续对多个视频帧进行视图变换时,用户视线与视频垂直;
在另一种情况下,手机可以拍摄图像,若拍摄图像有眼睛,则获取摄像镜头与显示屏的夹角,该夹角以45度为例,移动设备可以确定Cy与Cz的取值相等,符号相反,Cx=0,具体可以设置为(0,1,-1)。手机还可以测量眼睛与手机的距离以50cm为例,转换系数为0.1,移动设备可以确定Ay=50×sin45°×(0.1)≈3.5,Az≈3.5,Ax=0,以及(Bx,By,Bz)为(0,0,0),从而确定视图变换参数为(0,3.5,3.5,0,0,0,0,1,-1)。
在另一种情况下,预设模型变换参数以(45,1,0,0)为例,对于解码得到的视频帧,手机可以利用glRotate函数将该视频帧相对于显示屏向屏幕里旋转45度,当用户视线与显示屏的角度为45度时,该视频帧与用户视线垂直。
对于上述相对于显示屏向屏幕旋转45度的视频帧,当用户视线与显示屏的角度为30度时,假定手机可以根据一次音量+的按键信息,将视频帧向屏幕里旋转5度,用户可以按3次音量+,手机可以将视频帧向屏幕里再旋转15度,使得视频帧相对于显示屏向屏幕里旋转60度,使得用户视线与视频帧垂直;或者,手机可以根据手指在显示屏上向下滑动5mm,将视频帧向屏幕里旋转5度,用户可以在显示屏上向下滑动15mm,手机可以将视频帧向屏幕里再旋转15度,使视频帧相对于显示屏向屏幕里旋转60度,使得用户视线与视频帧垂直。
由上可见,本申请提供的图像处理方法可以将显示图像斜向上显示,能够使用户视线与显示图像之间的夹角基本垂直,该图像处理方法无需使用支撑架,提高了人机交互效率,并且节约了支撑架的成本。
以上从方法角度对本申请中的图像处理方法进行了介绍,下面从装置角度对本申请中的移动设备进行介绍:
本申请提供一种移动设备1000,可以实现图4所示实施例或可选实施例中的图像处理方法,请参阅图10,移动设备1000可以包括:
获取模块1001,用于获取待处理图像;
建立模块1002,用于建立由X轴、Y轴与Z轴组成的三维坐标系,由X轴与Y轴构成的XY平面与显示屏所在的二维平面平行;
视图变换模块1003,用于调用gluLookAt(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz),将待处理图像进行视图变换得到待显示图像,其中,Ax,Ay,Az分别为观察点的x轴坐标、y轴坐标、z轴坐标,Bx,By,Bz分别为观察对象的x轴坐标、y轴坐标、z轴坐标,Cx,Cy,Cz分别为目标向量的终点的x轴坐标、y轴坐标、z轴坐标,目标向量用于指示观察点的正上方向,Ay>0,Az>0,Cy>0,Cz<0;
显示模块1004,用于将待显示图像显示在显示屏上。
基于图10所示的移动设备,在本申请的一个可选实施例中,
摄取模块1101,用于摄取目标图像;
提取模块1102,用于从目标图像中提取图像特征,图像特征为头部特征;
确定模块1103,用于若图像特征与预设头部特征的相似度大于预设阈值,则根据移动设备的摄像镜头所在二维平面与显示屏所在二维平面的角度,确定(Cx,Cy,Cz);
测量模块1104,用于测量头部特征到移动设备的距离;
确定模块1103,还用于根据距离以及角度,确定(Ax,Ay,Az);
确定模块1103,还用于确定(Bx,By,Bz)。
基于图10所示的移动设备,本申请还提供一种移动设备,能够调整显示图像与显示屏的夹角,如图12所示。可选的,在本申请的另一个实施例中,移动设备1000还包括:
接收模块1201,用于接收按键信息;
第一修改模块1202,用于根据按键信息将(Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz)修改为(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′);
视图变换模块1003,还用于调用gluLookAt(Ax′,Ay′,Az′,Bx′,By′,Bz′,Cx′,Cy′,Cz′),将待显示图像进行视图变换得到目标显示图像;
显示模块1004,还用于将目标显示图像显示在显示屏上。
进一步的,请参阅图12,在本申请的另一个可选实施例中,移动设备900还包括:
触控模块1203,用于检测作用于显示屏的触摸操作;
第二修改模块1204,用于根据触摸操作将视图变换参数修改为目标视图变换参数;
视图变换模块1003,根据目标视图变换参数,将待显示图像进行视图变换得到目标显示图像;
显示模块1004,还用于将目标显示图像显示在显示屏上。
为便于理解,下面以一个具体应用场景对本申请提供的移动设备中各模块之间的关系进行详细描述:
用户将手机平放在桌面,点击视频,获取模块1001获取视频文件,将其解码得到视频帧;建立模块1002可以利用OpenGL建立三维坐标系,其中XY平面与显示屏所在二维平面平行;
预设视图变换参数以(0,5,5,0,0,0,0,1,-1)为例,视图变换模块803可以利用gluLookAt函数对视频帧进行视图变换得到新的视频帧,显示模块804可以将新的视频帧显示在显示屏上。该视频帧相对于显示屏向屏幕里旋转45度,当用户视线与显示屏的角度为45度时,该视频帧与用户视线垂直。当手机连续对多个视频帧进行视图变换时,用户视线与视频图像垂直。
在另一种情况下,摄取模块1101可以拍摄图像,提取模块1102可以从拍摄图像中提取图像特征。若拍摄图像有眼睛,则确定模块1103可以获取摄像镜头与显示屏的夹角,该夹角以45度为例,可以确定Cy与Cz的取值相等,符号相反,Cx=0,具体可以设置为(0,1,-1)。测量模块1104还可以测量眼睛与手机的距离以50cm为例,转换系数为0.1,确定模块1103可以确定Ay=50×sin45°×(0.1)≈3.5,Az≈3.5,Ax=0,以及(Bx,By,Bz)为(0,0,0),从而确定视图变换参数为(0,3.5,3.5,0,0,0,0,1,-1)。
对于上述相对于显示屏向屏幕旋转45度的视频帧,当用户视线与显示屏的角度为30度时,假定手机可以根据一次音量+的按键信息,将视频帧向屏幕里旋转15度,当用户按“音量+”时,接收模块1201接收“音量+”的按键信息,第一修改模块1202根据“音量+”将(0,5,5,0,0,0,0,1,-1)修改为(0,5,5,0,0,0,0,1,-2),视图变换模块803根据(0,1,5,0,0,0,0,1,-2)将视频帧向屏幕里再旋转15度,显示模块804可以将视频帧显示在显示屏上。由于视频帧相对于显示屏向屏幕里旋转60度,因此用户视线与视频帧垂直;
或者,假定手机可以根据手指在显示屏上向下滑动15mm,将视频帧向屏幕里旋转15度,当用户在显示屏上向下滑动15mm时,触控模块1203可以检测到上述触摸操作,第二修改模块1204根据上述触摸操作将(0,5,5,0,0,0,0,1,-1)修改为(0,5,5,0,0,0,0,1,-2),视图变换模块1003根据(0,5,5,0,0,0,0,1,-2)将视频帧向屏幕里再旋转15度,显示模块1004可以将视频帧显示在显示屏上。由于视频帧相对于显示屏向屏幕里旋转60度,因此用户视线与视频帧垂直。
请参阅图13,本申请提供一种移动设备1300,可以实现图8所示方法实施例或可选实施例,移动设备1300包括:
获取模块1301,用于获取待处理图像;
建立模块1302,用于建立由X轴、Y轴与Z轴组成的三维坐标系,由X轴与Y轴构成的XY平面与显示屏所在二维平面平行;
模型变换模块1303,用于调用glRotate(α,Px,Py,Pz),将待处理图像进行模型变换得到待显示图像,其中,α为旋转角度,Px,Py,Pz分别为旋转轴端点的x轴坐标、y轴坐标、z轴坐标,0度<α<90度,Px>0,Py=0,Pz=0;
显示模块1304,用于将待显示图像显示在显示屏上。
基于图13所示的移动设备,请参阅图14,在本申请的另一个可选实施例中,移动设备1300还可以包括:
摄取模块1401,用于摄取目标图像;
提取模块1402,用于从目标图像中提取图像特征,图像特征为头部特征;
设置模块1403,用于若图像特征与预设头部特征的相似度大于预设阈值,则将移动设备的摄像镜头所在二维平面与显示屏所在二维平面的角度作为α。
基于图13所示的移动设备,本申请还提供一种移动设备,能够调整显示图像与显示屏的夹角,如图15所示。可选的,在本申请的另一个实施例中,移动设备1300还包括:
接收模块1501,用于接收按键信息;
第一修改模块1502,用于根据按键信息将α修改为α′;
模型变换模块1303,还用于调用glRotate(α′,Px,Py,Pz),将待显示图像进行模型变换得到目标显示图像;
显示模块1304,还用于将目标显示图像显示在显示屏上。
可选的,在本申请的另一个实施例中,移动设备1300还包括:
触控模块1503,用于检测作用于显示屏的触摸操作;
第二修改模块1504,用于根据触摸操作将α修改为α′,α′为修改后的旋转角度;
模型变换模块1303,还用于根据调用glRotate(α′,Px,Py,Pz),将待显示图像进行模型变换得到目标显示图像;
显示模块1304,还用于将目标显示图像显示在显示屏上。
为便于理解,下面以一个具体应用场景对本申请提供的移动设备中各模块之间的关系进行详细描述:
用户将手机平放在桌面,点击视频,获取模块1301获取视频文件,将其解码得到视频帧;建立模块1302可以利用OpenGL建立三维坐标系,其中XY平面与显示屏所在二维平面平行;
预设模型变换参数以(45,1,0,0)为例,对于解码得到的视频帧,模型变换模块1303可以利用glRotate函数将该视频帧相对于显示屏向屏幕里旋转45度,显示模块1304可以将旋转后的视频帧显示在显示屏上。当用户视线与显示屏的角度为45度时,该视频帧与用户视线垂直。
对于上述相对于显示屏向屏幕旋转45度的视频帧,当用户视线与显示屏的角度为30度时,假定手机可以根据一次音量+的按键信息,将视频帧向屏幕里旋转15度,当用户按“音量+”时,接收模块1501接收“音量+”的按键信息,第一修改模块1502根据“音量+”将(45,1,0,0)修改为(60,1,0,0),模型变换模块1303根据(60,1,0,0)将视频帧向屏幕里再旋转15度,显示模块1304可以将视频帧显示在显示屏上。由于视频帧相对于显示屏向屏幕里旋转60度,因此用户视线与视频帧垂直;
或者,假定手机可以根据手指在显示屏上向下滑动5mm,将视频帧向屏幕里旋转5度,当用户在显示屏上向下滑动15mm时,触控模块1503可以检测到上述触摸操作,第二修改模块1504根据上述触摸操作将(45,1,0,0)修改为(60,1,0,0),模型变换模块1303根据(60,1,0,0)将视频帧向屏幕里再旋转15度,显示模块1304可以将视频帧显示在显示屏上。由于视频帧相对于显示屏向屏幕里旋转60度,因此用户视线与视频帧垂直。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。