发明内容
本发明实施例的目的在于提供一种图形处理方法,旨在解决现有技术中由于图形数据的更新需要巨大的数据运算及数据处理量,降低目标图形区的数据更新过程,以及降低了图形系统的效率的问题。
一种图形处理方法,所述方法包括以下步骤:
在源图形区中确定像素更新域;
在源图形区中获取所述像素更新域的最小含域,所述最小含域是:在目标图形区大小及比例条件限制下,源图形区中完成像素更新区域更新时需要处理的最小矩形区域;
计算所述最小含域在目标图形区中的对应位置及大小;其中,所述计算出的目标图形区中的对应位置的坐标、宽和高均是精确整数;
按照计算出目标图形区中的对应位置及大小将最小含域内的像素数据处理成目标图形区中的图像数据并进行更新。
一种图形处理装置,所述装置包括:
像素更新域确定模块,最小含域获取模块,最小含域对应目标计算模块,以及图像数据处理模块,其中,
像素更新域确定模块确定源图形区中像素更新域;
最小含域获取模块获取源图形区中变化数据区的最小含域,所述最小含域是:在目标图形区大小及比例条件限制下,源图形区中完成像素更新区域更新时需要处理的最小矩形区域;
最小含域对应目标计算模块计算所述最小含域在目标图形区中的对应位置及大小;
图像数据处理模块将源图形区中最小含域内的像素数据处理成目标图形区中对应域内的图像数据。
一种数字终端,所述数字终端包括一种图形处理装置,所述图形处理装置包括:
像素更新域确定模块,最小含域获取模块,最小含域对应目标计算模块,以及图像数据处理模块,其中,
像素更新域确定模块确定源图形区中像素更新域;
最小含域获取模块获取源图形区中变化数据区的最小含域,所述最小含域是:在目标图形区大小及比例条件限制下,源图形区中完成像素更新区域更新时需要处理的最小矩形区域;
最小含域对应目标计算模块计算所述最小含域在目标图形区中的对应位置及大小;
图像数据处理模块将源图形区中最小含域内的像素数据处理成目标图形区中对应域内的图像数据。
本发明实施例通过获取源图形区中变化数据区的最小含域,计算该最小含域在目标图形区中的对应位置及大小,其中,所述计算出的目标图形区中的对应位置的坐标、宽和高均是精确整数;并将源图形区中最小含域内的像素数据处理成目标图形区中对应域内的图像数据并完成更新,不需要大量的数据运算及数据处理量,加快了目标图形区的数据更新过程,提高了图形系统的效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过获取源图形区中变化数据区的最小含域,计算该最小含域在目标图形区中的对应位置及大小,其中,所述计算出的目标图形区中的对应位置的坐标、宽和高均是精确整数;并将源图形区中最小含域内的像素数据处理成目标图形区中对应域内的图像数据并完成更新。
图1示出了本发明实施例提供的图形处理方法的流程,详述如下。
在步骤S101中,确定源图形区中像素更新域;
其中,图形系统能随时自动获知当前是否有数据变化,并且能根据判断的情况准确的界定源图形区中像素更新域{x,y,w,h},x,y代表坐标,w,h分别代表宽度和高度。一般源图形区的数据变化都是由图形系统中的业务应用触发的新图形场景绘制造成的,譬如由消息触发的新场景等。当然,在图形系统中,不停变化的图形显示,大多数都是局部数据在变化。
在步骤S102中,获取源图形区中变化数据区的最小含域。
作为本发明的实施例,本发明方法将最小含域定义为:在目标图形区大小及比例条件限制下,源图形区中完成像素更新区域更新时需要处理的最小矩形区域。
其中,该最小含域满足两个特点:一是最小含域的起点坐标{X,Y}分别按照目标图形区的条件计算出来的对应起点坐标{X’,Y’}中X’与Y’均是精确整数,即计算中不含有小数位;二是最小含域的宽W和高H分别按照目标图形区的大小及比例计算出来的对应宽W’和高H’均是精确整数。由于最小含域在数学上满足这些特点,所以每次局部数据更新时,按照邻域计算出来的区域在目标图形区中刚好对应图形中每个像素的边界,即更新过程中不会出现含有小数的像素操作。
在具体实施过程中,假设源图形区的整体宽度为ww、高度为hh;记目标图形区的整体宽度为WW,高度为HH,计算源图形区中像素变化区域{x,y,w,h}的最小含域{X,Y,W,H}的步骤为:
(1).分别计算源图形区与目标图形区的宽度(ww与WW)和高度(hh与HH)的最大公约数Mw和Mh;本发明实施例采用辗转相除法计算两个数字的最大公约数可采用。
辗转相除法求两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数;又用第二个余数除第一个余数,得第三个余数;这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数。当然,如果最后的除数是1,那么原来的两个数是互质数。
(2).分别计算区域{x,y,w,h}对应的最小含域{X,Y,W,H}中的项数值,具体计算公式是:
记Zw=ww/Mw;Zh=hh/Mh;INT为取整操作
X=INT(x/Zw)*Zw;
Y=INT(y/Zh)*Zh;
如果Zw≠1,W=INT((w+(x-X)+(Zw-1))/Zw)*Zw;否则W=w;
如果Zh≠1,H=INT((h+(y-Y)+(Zh-1))/Zh)*Zh;否则H=h;
在步骤S103中,计算源图形中最小含域在目标图形区中的对应位置及大小。
即按照目标图形区的大小及比例,计算源图形区中最小含域{X,Y,W,H}在目标图形区中的对应区域{X’,Y’,W’,H’}。具体计算公式是:X’=X*WW/ww;Y’=Y*HH/hh;W’=W*WW/ww;H’=H*HH/hh;通过该步骤的计算得到的更新区的位置(X’,Y’)及宽高(W’,H’)的数值均是精确的整数,这样符合像素操作的物理特性要求。
在步骤S104中,将源图形区中域内像素数据处理成目标图形区中域内图像数据并更新。
其中,源图形区{X,Y,W,H}域中是像素数据,即一个图像数据块,目标图形区{X’,Y’,W’,H’}域中也是像素数据,即一个图像数据块。由于图像块{X,Y,W,H}与图像块{X’,Y’,W’,H’}大小不同,所以需要把图像块{X,Y,W,H}中的像素数据处理成符合图像块{X’,Y’,W’,H’}大小的图像数据。
然后,将处理的结果数据实际更新到目标图形区中{X’,Y’,W’,H’}域内,即完成一次更新。
当然,在具体实施过程中,也可以直接将最后进行了缩放处理的结果数据放置于目标图形区的{X’,Y’,W’,H’},这样就可以减少一次数据复制。
请参阅图2,该图示出了图形区间局部数据更新时应该更新的最小含域的范围。
其中,图2中a图示意了源图形中数据变化域从数学意义上计算出来的目标区域区,由于像素数据的物理特性,带有小数的区域实际上不能实现,并且舍去小数后的结果与目标结果会有很大累计差别,即想直接更新数据实际上行不通的;
图2中b图和c图示意了源图形中两个不同的数据变化域计算出来的最小含域,b图刚好是a图的解决方案。其中,b图中黑色虚线区为数学上计算的像素更新区,与该黑色虚线区相邻的黑色实线框为实际的像素更新区,即最小邻域;b图黑色虚线区为数学上计算的像素更新区,与该黑色虚线区紧邻的小黑色实线区为实际的像素更新区,即最小邻域。
从图2中可以看出一个区域的最小含域与其所在的位置及宽高均有关系,并且计算出的含域位置及宽高在横向和纵向均满足最小含域的条件,这样就保证了由含域计算出来的目标图形区的目标区域正好落在各个像素的边界上。
由于本发明实施例通过源图形区中更新域的最小含域来更新处理、更新图像数据,这比将整个图形区的数据整体处理并且更新一次的整体更新方法,极大地减少了需要处理的像素数据量。特别是当源图形区中只有少数几个像素更新或小范围内数据有变化时,最小含域会比整个源图形区小得多。
而且,由于本发明实施例大大减少了需要处理的像素数据量,每次更新时,自然也就大大减少了图像处理过程的计算量,极大地降低了系统消耗,极大地提高了图形区数据更新的效率。
下面以具体的例子来说明本发明提供的图形处理方法的具体流程。
试用实现中设置机顶盒图形系统中的GUI图形都是按PAL制式标准进行绘制,绘制区720×576。按PAL显示模式时显示区是720×576;按NTSC显示模式时显示区是720×480;按高清显示模式时显示区是1344×756。
机顶盒中PAL制式标准绘制的图形在高清显示模式下显示。
首先确定源图形区中像素更新域{x,y,w,h};
当前绘制区中{x=101,y=101,w=100,h=100}区域数据需要更新。根据文中的计算方法,各种数据初始值分别应该是:ww=720,hh=576;WW=1344,HH=756。
其次,在源图形区中寻找{x,y,w,h}像素域的最小含域{X,Y,W,H},其步骤为:
(1).分别计算源图形区与目标图形区的宽度(ww与WW)和高度(hh与HH)的最大公约数Mw和Mh。根据上文描述的辗转相除法计算两个数的最大约数算法,计算出数的:ww与WW的Mw=48,hh与HH的Mh=36;
(2).分别计算区域{x,y,w,h}对应的最小含域{X,Y,W,H}中的项数值,具体计算:
Zw=ww/Mw=720/48=15;
Zh=hh/Mh=576/36=16;
X=INT(x/Zw)*Zw=INT(101/15)*15=90;
Y=INT(y/Zh)*Zh INT(101/16)*16=96;
因为Zw≠1,
所以W=INT((w+(x-X)+(Zw-1))/Zw)*Zw=INT((100+(101-90)+(15-1))/15)*15=120;
因为Zh≠1,
所以H=INT((h+(y-Y)+(Zh-1))/Zh)*Zh=INT((100+(101-96)+(16-1))/16)*16=112;
完成以上步骤后,最终计算获得{x=101,y=101,w=100,h=100}像素域的最小含域是{X=90,Y=96,W=120,H=112}。
然后,计算源图形区中最小含域{X,Y,W,H}在目标图形区中的对应域{X’,Y’,W’,H’};
根据前文的所述,具体计算:
X’=X*WW/ww=90*1344/720=168;
Y’=Y*HH/hh=96*756/576=126;
W’=W*WW/ww=120*1344/720=224;
H’=H*HH/hh=112*756/576=147;
显然,最终得到的更新域{X’=168,Y’=126,W’=224,H’=147}的位置(X’,Y’)及宽高(W’,H’)的数值均是精确整数,所有的计算过程中没有误差,这一切都为最终像素数据的精确更新提供了数学层面的技术保障。
将源图形区中{X,Y,W,H}域内像素数据处理成目标图形区中{X’,Y’,W’,H’}域内图像数据,其中,该处理过程可以为放大或缩小。
由于是在图形区中处理以像素为单位的图形数据。即{X,Y,W,H}域和{X’,Y’,W’,H’}域内的数据实质是一个个完整的图像块,也可以看作是一帧帧的图形位图数据。以此数据为基础构建成基于内存中的图像数据体,然后按照当前{X,Y,W,H}域和{X’,Y’,W’,H’}域大小关系,采用图像处理的方法进行图像块整体放大或缩小,即将图像块{X=90,Y=96,W=120,H=112}像素数据处理成目标图像块{X’=168,Y’=126,W’=224,H’=147}。
最后,将处理的结果数据实际更新到目标图形区中{X’,Y’,W’,H’}域内,即完成一次更新。
由于图像块正好是按目标图形区{X’=168,Y’=126,W’=224,H’=147}处的图像大小及格式进行处理的,所以直接将结果图像块覆盖在{X’=168,Y’=126,W’=224,H’=147}即可。
图3示出了本发明实施例提供的图形处理装置的结构。
其中,像素更新域确定模块11确定源图形区中像素更新域。
最小含域获取模块12获取源图形区中变化数据区的最小含域。
其中,该最小含域为在目标图形区大小及比例条件限制下,源图形区中完成像素更新区域更新时需要处理的最小矩形区域。
在具体实施过程中,该最小含域的起点坐标分别按照目标图形区的条件计算出来的对应起点坐标均是整数,而且,该最小含域的宽和高分别按照目标图形区的大小及比例计算出来的对应宽和高均是整数。
最小含域对应目标计算模块13计算该最小含域在目标图形区中的对应位置及大小。具体的计算过程在前文已述,此处不再赘述,
图像数据处理模块14将源图形区中最小含域内的像素数据处理成目标图形区中对应域内的图像数据。
本发明实施例通过获取源图形区中变化数据区的最小含域,计算该最小含域在目标图形区中的对应位置及大小,其中,所述计算出的目标图形区中的对应位置的坐标、宽和高均是精确整数;并将源图形区中最小含域内的像素数据处理成目标图形区中对应域内的图像数据并完成更新,不需要大量的数据运算及数据处理量,加快了目标图形区的数据更新过程,提高了图形系统的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。