
本發明涉及屏幕顯示技術領域,特別是涉及一種屏幕分辨率切換方法及系統。
背景技術:
隨著電視行業的不斷發展,對于高清電視和標清電視來說,其屏幕的顯示分辨率發生了改變。顯示分辨率,即屏幕分辨率,是屏幕圖像的精密度,是指顯示器所能顯示的像素有多少。由于屏幕上的點、線和面都是由像素組成的,顯示器可顯示的像素越多,畫面就越精細,同樣的屏幕區域內能顯示的信息也越多,所以分辨率是個非常重要的性能指標之一。可以把整個圖像想象成是一個大型的棋盤,而分辨率的表示方式就是所有經線和緯線交叉點的數目。顯示分辨率一定的情況下,顯示屏越小圖像越清晰,反之,顯示屏大小固定時,顯示分辨率越高圖像越清晰。
屏幕在系統中,對應一個framebuffer幀緩沖器的概念。在系統中,預先分配一塊內存,存放要顯示的像素內容,然后將內存中的內容顯示到電視上。對于常見的argb8888顏色格式,pixel為unsignedint,占4個字節,32個位,每個字節對應一個通道:a,r,g,b。framebuffer的存在,相當于在內存中,提供了電視畫面的一個所見即所得的表示,即程序在內存中所見即用戶在電視上所得。
目前,從高清分辨率1280*720切換到標清分辨率640*530,由于兩者的寬高并不整除,所以像素并不是一一對應的。為了不引起畫面抖動,底層每次都將會進行全局刷新。但高頻切換標清有的時候并非是整個屏幕進行切換,如只有顯示窗口進行切換時,若進行全局分辨率整體切換,容易引起畫面抖動,進而影響機頂盒的性能,降低用戶的使用體驗。
技術實現要素:
本發明的目的在于提出一種屏幕分辨率切換方法及系統,以解決上述現有技術中的技術問題。
為達到上述目的,本發明提供了以下技術方案:
一種屏幕分辨率切換方法,包括:
確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;
根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;
將所述待縮放像素區域x*y的像素點按照所述x/y/映射表映射到所述像素映射區域x/*y/,得到切換后的像素圖像;
通過雙線性插值算法對所述像素圖像進行平滑處理。
其中,所述根據預設規則分別計算x、y方向上的映射表,構建x/y/的映射表,具體為:
獲取高清分辨率的待縮放像素點區域,確定所述待縮放像素點區域的長x和寬y;
獲取所述待縮放像素點區域在標清分辨率的像素點區域,確定所述像素點區域的長x/和寬y/;
分別在x、y方向上根據取商進行比例縮放,取余分布空格子構建x方向上的映射表和y方向上的映射表;
將所述x方向上的映射表和所述y方向上的映射表構建x/y/的映射表。
其中,所述分別在x、y方向上根據取商進行比例縮放,取余分布空格子構建x方向上的映射表和y方向上的映射表,具體的,x方向上為:
通過所述長x/和所述長x取商,得到商值m和余數n,按照商值m進行比例縮放將所述長x的像素點分到所述長x/中,余數n為所述長x/的剩余長度;
將所述長x/除以所述余數n,即:k=x//n,根據預設循環語句執行,計算所述長x/的剩余長度的填充像素點;得到所述x方向上的映射表。
其中,所述通過雙線性插值算法對所述像素圖像進行平滑處理,具體為:
選取所述待縮放圖片的像素區域x*y上的原始圖像像素點周圍的四個像素點按照預設計算公式進行混合,得到平滑圖像。
具體的,所述預設計算公式為:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中,f(i,j)表示原始像素點(i,j)處的的argb像素值,u、v取值0或1,表示映射表原始像素點(i,j)的四個方向。
一種屏幕分辨率切換系統,包括:
確定單元,用于確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;
構建單元,用于根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;
映射單元,用于將所述待縮放像素區域x*y的像素點按照所述x/y/映射表映射到所述像素映射區域x/*y/,得到切換后的像素圖像;
處理單元,用于通過雙線性插值算法對所述像素圖像進行平滑處理。
其中,所述構建單元包括:
第一獲取單元,用于獲取高清分辨率的待縮放像素點區域,確定所述待縮放像素點區域的長x和寬y;
第二獲取單元,用于獲取所述待縮放像素點區域在標清分辨率的像素點區域,確定所述像素點區域的長x/和寬y/;
映射表構建子單元,用于分別在x、y方向上根據取商進行比例縮放,取余分布空格子構建x方向上的映射表和y方向上的映射表;
x/y/映射表構建子單元,用于將所述x方向上的映射表和所述y方向上的映射表構建x/y/的映射表。
其中,所述映射表構建子單元包括:
取商單元,用于通過所述長x/和所述長x取商,得到商值m和余數n,按照商值m進行比例縮放將所述長x的像素點分到所述長x/中,余數n為所述長x/的剩余長度;
取余單元,用于將所述長x/除以所述余數n,即:k=x//n,根據預設循環語句執行,計算所述長x/的剩余長度的填充像素點;得到所述x方向上的映射表。
其中,所述處理單元,還用于選取所述待縮放圖片的像素區域x*y上的原始圖像像素點周圍的四個像素點按照預設計算公式進行混合,得到平滑圖像。
具體的,所述預設計算公式為:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中,f(i,j)表示原始像素點(i,j)處的的argb像素值,u、v取值0或1,表示映射表原始像素點(i,j)的四個方向。
經由上述的技術方案可知,與現有技術相比,本發明公開了一種屏幕分辨率切換方法及系統,該方法包括:確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;將待縮放像素區域x*y的像素點按照x/y/映射表映射到像素映射區域x/*y/,得到切換后的像素圖像;通過雙線性插值算法對像素圖像進行平滑處理。本發明實現了高清切換標清時,若只因顯示區域發生一小部分改變時,通過構建映射表的方式將高清上的像素點一一映射放大到標清上的像素點,實現局部刷新,而且對像素圖像進行平滑處理了使得畫面比較平滑,不出現圖像失真的情況,增強了用戶體驗。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發明實施例提供的一種屏幕分辨率切換方法流程示意圖;
圖2為本發明實施例提供的將4*4像素放大到8*8像素映射表;
圖3為本發明實施例提供的4*4像素放大到11*11像素映射表;
圖4為本發明實施例以x方向上計算的取商放大后的映射表;
圖5為本發明實施例以x方向上計算的取余后填充空格子后的映射表;
圖6為本發明實施例提供個一種屏幕分辨率切換系統結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
術語解釋:
sdtv(standard-definition,tv標清電視)是指必須達到480線逐行掃描,能將720逐行、1080隔行等格式變為480逐行輸出,采用數字壓縮音響,對應現有電視的分辨率,其圖像質量為標準清晰度水平,如分辨率在480以上的vcd、dvd、電視節目等“標清”視頻格式,即標準清晰度,而物理分辨率達到720p以上則稱作為hd(highdefinition,高清)。
hdtv(highdefinitiontelevision,高清晰度電視),hdtv技術源之于dtv(digitaltelevision,數字電視)技術,hdtv技術和dtv技術都是采用數字信號,而hdtv技術則屬于dtv的最高標準,擁有最佳的視頻、音頻效果,hdtv有三種顯示格式,分別是:720p(1280×720,非交錯式,場頻為24、30或60);1080i(1920×1080,交錯式,場頻60);1080p(1920×1080,非交錯式,場頻為24或30)。
本發明主要是將高清分辨率1280*720切換到標清分辨率640*530,即俗稱高清切標清,是指在高清屏幕(1280*720)顯示標清的畫面(640*530),所以要將畫面(640*530)放大到(1280*720),以適應顯示屏幕。
請參閱附圖1,圖1為本發明實施例提供的一種屏幕分辨率切換方法流程示意圖。如圖1所示,本發明公開了一種屏幕分辨率切換方法,該方法具體包括如下步驟:
s101、確定待縮放圖片的像素區域x*y和像素映射區域x/*y/。
本實施例中,主要是確定待縮放圖片的像素區域和像素映射區域,即:將高清中多長多寬的圖像區域映射到標清中多長多寬的圖像區域。x為x方向上的長度,y為y方向上的寬度,可以理解為將x方向上像素的點均分到x/的像素點上。
s102、根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表。
本實施例中,根據預設規則分別計算x、y方向上的映射表,構建x/y/的映射表,具體為:
獲取高清分辨率的待縮放像素點區域,確定待縮放像素點區域的長x和寬y;
獲取待縮放像素點區域在標清分辨率的像素點區域,確定像素點區域的長x/和寬y/;
分別在x、y方向上根據取商進行比例縮放,取余分布空格子構建x方向上的映射表和y方向上的映射表;
具體的,以x方向上的映射表為例介紹:
通過長x/和長x取商,得到商值m和余數n,按照商值m進行比例縮放將長x的像素點分到長x/中,余數n為長x/的剩余長度;
將長x/除以余數n,即:k=x//n,根據預設循環語句執行,計算長x/的剩余長度的填充像素點;得到x方向上的映射表。
對于y方向上的映射表可以根據上述以x方向上的映射表的建立方法得到。
將x方向上的映射表和y方向上的映射表構建x/y/的映射表。
s103、將待縮放像素區域x*y的像素點按照x/y/映射表映射到像素映射區域x/*y/,得到切換后的像素圖像。
s104、通過雙線性插值算法對像素圖像進行平滑處理,得到平滑圖像。
本實施例中,對于像素圖像進行平滑處理可以選取所述待縮放圖片的像素區域x*y上的原始圖像像素點周圍的四個像素點按照預設計算公式進行混合,得到平滑圖像。
其中,上述預設計算公式為:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中,f(i,j)表示原始像素點(i,j)處的的argb像素值,u、v取值0或1,表示映射表原始像素點(i,j)的四個方向。
本發明公開了一種屏幕分辨率切換方法,該方法包括:確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;將待縮放像素區域x*y的像素點按照x/y/映射表映射到像素映射區域x/*y/,得到切換后的像素圖像;通過雙線性插值算法對像素圖像進行平滑處理。本發明實現了高清切換標清時,若只因顯示區域發生一小部分改變時,通過構建映射表的方式將高清上的像素點一一映射放大到標清上的像素點,實現局部刷新,而且對像素圖像進行平滑處理了使得畫面比較平滑,不出現圖像失真的情況,增強了用戶體驗。
實施例一:
以將4*4像素放大到8*8像素,請參閱附圖2,圖2為本發明實施例提供的將4*4像素放大到8*8像素映射表。如圖2所示,對于該實施例,屬于可以整除倍數的比例縮放,將4*4格子的長和寬分別比乘以一個特定的倍數2(8/4=2),原來的點4*4格子里的點a(1,1),就映射到8*8格子的4個點(1,1)、(1,2)、(2,1)、(2,2)。
對于得到的像素映射表中的像素圖像需要通過雙線性插值算法對像素圖像進行平滑處理,對于像素圖像進行平滑處理可以選取所述待縮放圖片的像素區域x*y上的原始圖像像素點周圍的四個像素點按照預設計算公式進行混合,得到平滑圖像。其中,上述預設計算公式為:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中,f(i,j)表示原始像素點(i,j)處的的argb像素值,u、v取值0或1,表示映射表原始像素點(i,j)的四個方向。
實施例二
對于實施例一,對于可以整除的比例可以解決部分情況,但若是將4*4切換到11*11,4*4像素的點并不能均分到11*11的像素里,因為11/4=2.75,不是整數倍,沒有一個有效的比例來進行縮放。則需要考慮其他情況。
請參閱附圖3,圖3為本發明實施例提供的4*4像素放大到11*11像素映射表。如圖3所示,對于該實施例,屬于不可以整除倍數的比例縮放,需要先建立xy的映射表:
以4*4切換到11*11為例,先介紹x方向的映射表,y方向的映射表可以類比求得。具體的:
首先,取商進行比例縮放11/4=2.75,商為2,余數為3,取商,即是倍數2,將左邊格子里的4個點放大2倍,放到右邊11個格子,還余下3個空格子,如圖4所示。
其次,取余分布余下的空格子,將被除數11除以3,k=11/3,則執行以下語句:
for(i=0;i<3;i++)
a[i]=(int)(i*k+0.5)+1;
就本實施例執行上述for循環3次,根據k計算出右邊格子需要再增加填充的3個點a[0]=1、a[1]=5、a[2]=8,則將需要增加填充的三個點分別添加到空余格子里。如圖5所示,即得出x方向的映射表:x[n]=1,1,1,2,2,3,3,3,4,4,4,n=11;同理可以得到y方向的映射表y[n]=1,1,1,5,5,9,9,9,13,13,13,n=11,從而計算出11*11的所有像素點,如圖3所示。
對于得到的像素映射表中的像素圖像需要通過雙線性插值算法對像素圖像進行平滑處理,對于像素圖像進行平滑處理可以選取所述待縮放圖片的像素區域x*y上的原始圖像像素點周圍的四個像素點按照預設計算公式進行混合,得到平滑圖像。其中,上述預設計算公式為:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中,f(i,j)表示原始像素點(i,j)處的的argb像素值,u、v取值0或1,表示映射表原始像素點(i,j)的四個方向。
本發明公開了一種屏幕分辨率切換方法,該方法包括:確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;將待縮放像素區域x*y的像素點按照x/y/映射表映射到像素映射區域x/*y/,得到切換后的像素圖像;通過雙線性插值算法對像素圖像進行平滑處理。本發明實現了高清切換標清時,若只因顯示區域發生一小部分改變時,通過構建映射表的方式將高清上的像素點一一映射放大到標清上的像素點,實現局部刷新,而且對像素圖像進行平滑處理了使得畫面比較平滑,不出現圖像失真的情況,增強了用戶體驗。
本發明在上述公開的方法的基礎上,還對應的公開了一種系統。
請參閱附圖6,圖6為本發明實施例提供的一種屏幕分辨率切換系統結構示意圖。如圖6所示,本發明公開了一種屏幕分辨率切換系統,該系統結構具體包括如下:
確定單元601,用于確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;構建單元602,用于根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;映射單元603,用于將待縮放像素區域x*y的像素點按照x/y/映射表映射到像素映射區域x/*y/,得到切換后的像素圖像;處理單元604,用于通過雙線性插值算法對像素圖像進行平滑處理,得到平滑圖像。
其中,上述構建單元602包括:
第一獲取單元,用于獲取高清分辨率的待縮放像素點區域,確定待縮放像素點區域的長x和寬y;
第二獲取單元,用于獲取待縮放像素點區域在標清分辨率的像素點區域,確定像素點區域的長x/和寬y/;
映射表構建子單元,用于分別在x、y方向上根據取商進行比例縮放,取余分布空格子構建x方向上的映射表和y方向上的映射表;
x/y/映射表構建子單元,用于將x方向上的映射表和y方向上的映射表構建x/y/的映射表。
其中,所述映射表構建子單元包括:
取商單元,用于通過長x/和長x取商,得到商值m和余數n,按照商值m進行比例縮放將長x的像素點分到長x/中,余數n為長x/的剩余長度;
取余單元,用于將長x/除以余數n,即:k=x//n,根據預設循環語句執行,計算長x/的剩余長度的填充像素點;得到x方向上的映射表。
優選的,上述處理單元604,還用于選取待縮放圖片的像素區域x*y上的原始圖像像素點周圍的四個像素點按照預設計算公式進行混合,得到平滑圖像。
本發明公開了一種屏幕分辨率切換系統,本發明實現了高清切換標清時,若只因顯示區域發生一小部分改變時,通過構建映射表的方式將高清上的像素點一一映射放大到標清上的像素點,實現局部刷新,而且對像素圖像進行平滑處理了使得畫面比較平滑,不出現圖像失真的情況,增強了用戶體驗。
綜上所述,本發明公開了一種屏幕分辨率切換方法及系統,該方法包括:確定待縮放圖片的像素區域x*y和像素映射區域x/*y/;根據預設規則分別計算x、y方向上的映射表,構建x/y/映射表;將待縮放像素區域x*y的像素點按照x/y/映射表映射到像素映射區域x/*y/,得到切換后的像素圖像;通過雙線性插值算法對像素圖像進行平滑處理。本發明實現了高清切換標清時,若只因顯示區域發生一小部分改變時,通過構建映射表的方式將高清上的像素點一一映射放大到標清上的像素點,實現局部刷新,而且對像素圖像進行平滑處理了使得畫面比較平滑,不出現圖像失真的情況,增強了用戶體驗。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括上述要素的物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。