專利名稱:任意形狀圖像的基于塊的旋轉(zhuǎn)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及數(shù)字圖像數(shù)據(jù)的操作,并且特別地涉及圖像數(shù)據(jù)的旋轉(zhuǎn)。
背景技術(shù):
計(jì)算機(jī)或者其他數(shù)據(jù)處理系統(tǒng)中的圖形或者圖像數(shù)據(jù)處理常常是計(jì)算代價(jià)非常高的,需要大量的內(nèi)存和處理器資源。在許多數(shù)據(jù)處理系統(tǒng)中,圖像由像素元或者“像素”的陣列表示,每個(gè)像素具有“顏顏色深度度”,其定義了每個(gè)像素中可以表達(dá)的色彩變化的總數(shù)。隨著圖像的分辨率和/或顏顏色深度度的增加,圖像的感知質(zhì)量,其可反映為真實(shí)度、準(zhǔn)確度、稅度、抖動(dòng)等,也會(huì)增加。因此,存在對(duì)支持具有增加的分辨率和/或顏顏色深度度的圖像的數(shù)據(jù)處理系統(tǒng)的持續(xù)需要。
作為一般的規(guī)則,圖像的分辨率和/或顏色深度越大,所需用于表現(xiàn)圖像的圖像數(shù)據(jù)量就越大。而且,隨著用于表現(xiàn)圖像的圖像數(shù)據(jù)量增加,所需用于存儲(chǔ)、傳送和操作圖像的計(jì)算機(jī)資源量也會(huì)增加。
典型地需要相當(dāng)大量計(jì)算資源的一種具體類型的圖形操作是圖像旋轉(zhuǎn)。諸如為了顯示、傳真、復(fù)印和打印目的,在橫向和縱向取向之間轉(zhuǎn)換圖像時(shí),圖像旋轉(zhuǎn)具有許多有用的優(yōu)點(diǎn)。而且,計(jì)算機(jī)輔助設(shè)計(jì)、圖形設(shè)計(jì)、圖像處理以及其他視頻和圖形開發(fā)環(huán)境常常利用圖像旋轉(zhuǎn),用以操作用戶創(chuàng)建文件中的圖像數(shù)據(jù)。而且,可以設(shè)想,隨著手持電子設(shè)備變得更加普遍,將存在對(duì)能夠以不同的視角顯示圖像的更加靈活的顯示器的需要,以適應(yīng)設(shè)備的多種形狀因素。
傳統(tǒng)的圖像旋轉(zhuǎn)算法典型地通過軟件實(shí)現(xiàn),并且牽涉許多計(jì)算代價(jià)高的矩陣變換操作。該算法典型地受限于操作矩形的圖像,諸如存儲(chǔ)在幀緩沖器中的整個(gè)圖像。而且,由于所需用于執(zhí)行該矩陣變換的大量的計(jì)算資源,大部分基于軟件的算法不能良好地適用于低功率應(yīng)用,諸如手持設(shè)備、無線通訊設(shè)備、數(shù)碼相機(jī)、等。
為了解決大部分基于軟件的算法的昂貴資源需求,已嘗試使用專用的硬件執(zhí)行某些圖像旋轉(zhuǎn)功能。例如,專用存儲(chǔ)器存取電路已被使用來允許出現(xiàn)對(duì)幀緩沖器的非連續(xù)訪問,由此幀緩沖器是逐列讀出的,而不是逐行讀出的,用以有效地在顯示器上產(chǎn)生90度的旋轉(zhuǎn)圖像。然而,對(duì)存儲(chǔ)緩沖器的非連續(xù)訪問常常是低效率的,并且可能繞過了其他性能增強(qiáng)電路,諸如存儲(chǔ)器緩存和預(yù)取電路,并且因此可能對(duì)性能有負(fù)面的影響。而且,該硬件加速常常受限于非常特殊的應(yīng)用,并且常常僅限于服務(wù)于特定尺寸的矩形圖像。
盡管傳統(tǒng)的圖像旋轉(zhuǎn)算法將注意力集中于矩形圖像,這在許多應(yīng)用常常是足夠滿足需要的,但是在某些應(yīng)用中,這樣做趨向于在圖像旋轉(zhuǎn)處理過程中引入低效率。例如,使用傳統(tǒng)的圖像旋轉(zhuǎn)算法,必須由矩形區(qū)域限定圖像,用于由該算法進(jìn)行處理。然而,對(duì)于圖像中有密切關(guān)系的(非背景)圖像數(shù)據(jù)的形狀實(shí)質(zhì)上是非矩形的情況,由矩形限定該區(qū)域可能引入相當(dāng)大量的空白或者背景數(shù)據(jù)。然而,大部分傳統(tǒng)的圖像旋轉(zhuǎn)算法不能確定圖像數(shù)據(jù)何時(shí)與圖像密切相關(guān),或者該圖像數(shù)據(jù)何時(shí)構(gòu)成背景顏色,因此矩形區(qū)域中的所有圖像數(shù)據(jù)是粗略地以相同的方式進(jìn)行處理的。因此,大量的處理資源可能花費(fèi)在旋轉(zhuǎn)與正旋轉(zhuǎn)的實(shí)際圖像不是特別密切相關(guān)的圖像數(shù)據(jù)上。
因此,持續(xù)存在對(duì)針對(duì)不同應(yīng)用具有廣泛適用范圍的靈活的圖像旋轉(zhuǎn)算法的顯著需要。特別地,存在對(duì)這樣的圖像旋轉(zhuǎn)算法的需要,即,其可與各種類型的圖像結(jié)合使用,包括各種圖像尺寸和形狀,并且其適用于具有各種硬件和/或軟件性能的數(shù)據(jù)處理系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明解決了與現(xiàn)有技術(shù)領(lǐng)域相關(guān)的這些及其他的問題,提供了裝置、程序產(chǎn)品和方法,其中使用基于塊的方法旋轉(zhuǎn)圖像數(shù)據(jù),其中對(duì)于定義了圖像的多個(gè)圖像數(shù)據(jù)塊中的每一個(gè),對(duì)該塊應(yīng)用移位向量,用以使該塊繞旋轉(zhuǎn)點(diǎn)移位所需的旋轉(zhuǎn)角度,例如,使該塊的錨位置自源點(diǎn)移位至目標(biāo)點(diǎn)。此外,根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)該塊中的圖像數(shù)據(jù),由此當(dāng)已旋轉(zhuǎn)的圖像數(shù)據(jù)存儲(chǔ)在塊的目標(biāo)點(diǎn)時(shí),該塊中的圖像數(shù)據(jù)有效地旋轉(zhuǎn)至所需的位置。
而且,在根據(jù)本發(fā)明的某些實(shí)施例中,旋轉(zhuǎn)緩沖器可用于通過臨時(shí)存儲(chǔ)重疊的圖像數(shù)據(jù)塊,來協(xié)助圖像數(shù)據(jù)塊的旋轉(zhuǎn)。通常,通過這樣做,可以在存儲(chǔ)器中原位執(zhí)行圖像旋轉(zhuǎn),這樣消除了在圖像旋轉(zhuǎn)過程中對(duì)單獨(dú)的源存儲(chǔ)器和目標(biāo)存儲(chǔ)器的需要。
在形成本文一部分的附屬權(quán)利要求中陳述了體現(xiàn)本發(fā)明特征的這些及其他優(yōu)點(diǎn)和特征。然而,為了更好地理解本發(fā)明,并且為了更好地理解通過其使用而獲得的優(yōu)點(diǎn)和目的,應(yīng)參考附圖以及附屬的描述性內(nèi)容,其中描述了本發(fā)明的示例性實(shí)施例。
圖1是根據(jù)本發(fā)明實(shí)現(xiàn)基于塊的圖像旋轉(zhuǎn)的裝置的框圖。
圖2A~2C是說明了適用于根據(jù)本發(fā)明的基于塊的圖像旋轉(zhuǎn)算法的不同示例性源/目標(biāo)存儲(chǔ)器配置的框圖。
圖3是說明了能夠由圖1的裝置執(zhí)行的示例性圖像旋轉(zhuǎn)程序中的主要操作的流程圖。
圖4是將使用圖3的程序使之繞旋轉(zhuǎn)中心旋轉(zhuǎn)的示例性圖像的框圖。
圖5是說明了圖4的圖像繞旋轉(zhuǎn)中心旋轉(zhuǎn)90、180和270度的框圖。
圖6是說明了針對(duì)圖3程序的替換圖像旋轉(zhuǎn)程序的流程圖,用于處理圖像中塊之間的重疊。
圖7是說明了能夠由圖1裝置執(zhí)行的創(chuàng)建塊列表程序的流程圖。
圖8是能夠由圖7的程序生成、并且適于與塊目標(biāo)地址的動(dòng)態(tài)生成結(jié)合使用的示例性塊列表數(shù)據(jù)結(jié)構(gòu)的框圖。
圖9是能夠由圖7的程序生成、并且適于與預(yù)存儲(chǔ)的塊目標(biāo)地址結(jié)合使用的另一示例性塊列表數(shù)據(jù)結(jié)構(gòu)的框圖。
圖10是說明了圖1的裝置中源存儲(chǔ)器和目標(biāo)存儲(chǔ)器之間的數(shù)據(jù)流的框圖。
圖11是說明了圖10中涉及的塊讀處理的程序流程的流程圖。
圖12是說明了圖10中涉及的塊寫處理的程序流程的流程圖。
圖13是用于圖12的塊寫處理的示例性旋轉(zhuǎn)緩沖器地址計(jì)算電路的框圖。
圖14是將使用圖1的裝置使之繞旋轉(zhuǎn)中心旋轉(zhuǎn)的另一示例性圖像的框圖。
圖15是表示對(duì)于圖14的示例性圖像的一個(gè)示例性塊排序的樹形圖。
圖16是表示對(duì)于圖14的示例性圖像的另一示例性塊排序的樹形圖。
具體實(shí)施例方式
所說明的本發(fā)明的實(shí)施例實(shí)現(xiàn)了基于塊的圖像旋轉(zhuǎn),用以協(xié)助電子設(shè)備中的快速的和有效的圖像數(shù)據(jù)旋轉(zhuǎn)。如下文將更加顯而易見的是,在硬件和軟件中常常不同程度地實(shí)現(xiàn)了此處描述的實(shí)施例,用以支持大量的應(yīng)用,包括低成本和/或低功率的應(yīng)用,諸如在手持和無線通訊設(shè)備中所期望的應(yīng)用,這些設(shè)備諸如PDA、蜂窩電話等等。而且,盡管此處描述的實(shí)施例可用于旋轉(zhuǎn)矩形圖像的圖像數(shù)據(jù),但是本發(fā)明的原理實(shí)際上可應(yīng)用于具有任何形狀的圖像,包括非矩形圖像,其中圖像自身的邊界或者用于定義圖像的塊的邊界限定了非矩形的周界。
如下文將變得顯而易見的,根據(jù)本發(fā)明的實(shí)施例通過處理被組織為多個(gè)塊的圖像數(shù)據(jù)來旋轉(zhuǎn)圖像。對(duì)于每個(gè)獨(dú)立的塊,移位向量施加到該塊,用以使該塊繞旋轉(zhuǎn)點(diǎn)移位所需的旋轉(zhuǎn)角度。此外,典型地通過使用結(jié)合了專用旋轉(zhuǎn)加速電路的旋轉(zhuǎn)緩沖器,根據(jù)所需的旋轉(zhuǎn)角度,旋轉(zhuǎn)每個(gè)塊中的圖像數(shù)據(jù)。通過組合塊的移位和塊中的圖像數(shù)據(jù)的旋轉(zhuǎn),圖像數(shù)據(jù)塊有效地旋轉(zhuǎn)至其所需的位置。
現(xiàn)在轉(zhuǎn)到附圖,其中同樣的數(shù)字表示全部數(shù)幅圖中同樣的部分,圖1示出了關(guān)于裝置10的示例性硬件和軟件環(huán)境,其結(jié)合了根據(jù)本發(fā)明的基于塊的圖像旋轉(zhuǎn)。對(duì)于本發(fā)明的目的而言,裝置10實(shí)際上可以表示任何類型的計(jì)算機(jī)、計(jì)算機(jī)系統(tǒng)或其他可編程電子設(shè)備,包括客戶機(jī)計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持計(jì)算機(jī)、嵌入式控制器等。而且,裝置10可以使用例如集群中的一個(gè)或者多個(gè)聯(lián)網(wǎng)計(jì)算機(jī)或者其他的分布式計(jì)算系統(tǒng)實(shí)現(xiàn)。在下文中裝置10還將被稱為“計(jì)算機(jī)”,盡管應(yīng)該認(rèn)識(shí)到,術(shù)語“裝置”還可以包括與本發(fā)明相一致的其他適合的可編程電子設(shè)備。
計(jì)算機(jī)10典型地包括系統(tǒng)總線12,包括耦合到存儲(chǔ)器16的一個(gè)或者多個(gè)微處理器的中央處理單元(CPU)14耦合到該系統(tǒng)總線12,存儲(chǔ)器16可以表示包括計(jì)算機(jī)10的主存儲(chǔ)器的隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備,以及任何補(bǔ)充級(jí)的存儲(chǔ)器,例如,高速緩存、非易失性或者備份存儲(chǔ)器(例如,可編程存儲(chǔ)器或者快閃存儲(chǔ)器)、只讀存儲(chǔ)器等。此外,存儲(chǔ)器16可被認(rèn)為包括物理上位于計(jì)算機(jī)10中其他位置的記憶存儲(chǔ)器,例如,CPU14中處理器中的任何高速緩存,以及用作虛擬內(nèi)存的任何存儲(chǔ)容量,例如,存儲(chǔ)在海量存儲(chǔ)設(shè)備上或者耦合到計(jì)算機(jī)10的另一計(jì)算機(jī)上。
此外,存儲(chǔ)控制器18耦合到系統(tǒng)總線12,其用于提供對(duì)非易失性存儲(chǔ)的不同源的存取,例如,軟盤或者其他可移動(dòng)磁盤驅(qū)動(dòng)器、硬盤驅(qū)動(dòng)器、直接存取存儲(chǔ)設(shè)備(DASD)、光驅(qū)(例如,CD驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器等)和/或磁帶驅(qū)動(dòng)器,等等。而且,計(jì)算機(jī)10還可以包括網(wǎng)絡(luò)控制器20,用以提供與一個(gè)或者多個(gè)外部網(wǎng)絡(luò)(例如,LAN、WAN、無線網(wǎng)絡(luò)和/或互聯(lián)網(wǎng),等等)的接口。計(jì)算機(jī)10還典型地例如經(jīng)由鍵盤、鼠標(biāo)、軌跡球、游戲搖柄、觸控板和/或麥克風(fēng)等等,接收來自用戶的輸入。典型地通過圖形系統(tǒng)實(shí)現(xiàn)對(duì)用戶的信息顯示,其包括驅(qū)動(dòng)顯示器24(諸如,CRT顯示器、LCD顯示板等)的圖形引擎22??梢越?jīng)由網(wǎng)絡(luò)控制器20自另一計(jì)算機(jī)或者終端接收并向其傳送附加的用戶輸入。
為了實(shí)現(xiàn)根據(jù)本發(fā)明的基于塊的圖像旋轉(zhuǎn),在計(jì)算機(jī)10中使用了不同的硬件和軟件部件的組合。特別地,在計(jì)算機(jī)10中實(shí)現(xiàn)作為設(shè)置在圖像或視頻適配卡上的圖形控制器的圖形引擎22。所示駐留在存儲(chǔ)器16的程序空間中的操作系統(tǒng)26使用不同的設(shè)備驅(qū)動(dòng)器,包括顯示驅(qū)動(dòng)器28,用以處理計(jì)算機(jī)中的大量的輸入和輸出操作。具體地,顯示驅(qū)動(dòng)器28定制用于圖形引擎22,并且其在該顯示驅(qū)動(dòng)器中,其中出現(xiàn)了與基于塊的圖像旋轉(zhuǎn)相關(guān)的大量基于軟件的功能性。
在本領(lǐng)域所公知的處理中,顯示驅(qū)動(dòng)器28中的功能典型地通過一個(gè)或者多個(gè)應(yīng)用程序30來訪問,用以最終在顯示器24上描繪或者繪制所需的圖像數(shù)據(jù)。結(jié)合這些活動(dòng),顯示驅(qū)動(dòng)器28典型地在一個(gè)或者多個(gè)虛擬幀緩沖器32中建立了所需待顯示的圖像,所示虛擬幀緩沖器32駐留在存儲(chǔ)器16的數(shù)據(jù)空間中。
在存儲(chǔ)器16中還說明了結(jié)合根據(jù)本發(fā)明的基于塊的圖像旋轉(zhuǎn)使用的各種附加的軟件部件,包括多個(gè)通用對(duì)象描述34和針對(duì)多個(gè)視圖A..X定義的多個(gè)對(duì)象塊列表36、38。
從硬件的觀點(diǎn)來看,圖形引擎22依賴于許多硬件部件,包括旋轉(zhuǎn)/移位控制器40、本地幀緩沖器42和旋轉(zhuǎn)緩沖器44??刂破?0被用于管理處理圖像數(shù)據(jù)旋轉(zhuǎn)和移位的硬件處理。本地幀緩沖器42是高速存儲(chǔ)器,用于存儲(chǔ)由分立的控制器讀出以驅(qū)動(dòng)顯示器24的圖像數(shù)據(jù)。旋轉(zhuǎn)緩沖器44被用于臨時(shí)地存儲(chǔ)圖像數(shù)據(jù),并且可以包括旋轉(zhuǎn)加速電路,用于使用多個(gè)已知的圖像數(shù)據(jù)旋轉(zhuǎn)電路中的任何電路來旋轉(zhuǎn)存儲(chǔ)于其中的圖像數(shù)據(jù)??紤]到此處描述的實(shí)施例中可以處理在每邊僅具有幾個(gè)像素的塊尺寸,應(yīng)當(dāng)認(rèn)識(shí)到,在某些實(shí)施例中可以使用基于硬件的給定塊中的圖像數(shù)據(jù)旋轉(zhuǎn),用以在相對(duì)簡(jiǎn)單和緊湊的硬件電路中提供及其快速的旋轉(zhuǎn)。
如下文將變得顯而易見的,根據(jù)本發(fā)明的基于塊的圖像旋轉(zhuǎn)可以使用旋轉(zhuǎn)緩沖器來旋轉(zhuǎn)存儲(chǔ)在源存儲(chǔ)器中的圖像數(shù)據(jù),并且將已旋轉(zhuǎn)的圖像數(shù)據(jù)存儲(chǔ)在目標(biāo)存儲(chǔ)器中。確切的是,不同的實(shí)施例中用于源和目標(biāo)存儲(chǔ)器的硬件部件可以有所不同,并且如圖1所示的計(jì)算機(jī)10的配置中可以支持這些硬件部件。
例如,如圖2A所示,使用外部存儲(chǔ)器52可以實(shí)現(xiàn)結(jié)合了旋轉(zhuǎn)緩沖器50使用的源和目標(biāo)存儲(chǔ)器,例如,用以支持存儲(chǔ)在虛擬幀緩沖器中的圖像數(shù)據(jù)的旋轉(zhuǎn)。而且,圖像數(shù)據(jù)所讀出或者寫回的外部存儲(chǔ)器的特定區(qū)域可以是相同的,或者可以是不同的,在源和目標(biāo)區(qū)域相同時(shí),使用如下文將更加詳細(xì)描述的重疊處理。
在替換方案中,如圖2B所示,旋轉(zhuǎn)緩沖器54可以將外部存儲(chǔ)器56用作源存儲(chǔ)器,同時(shí)將本地幀緩沖器58用作目標(biāo)存儲(chǔ)器。在其他的實(shí)施例中,例如如圖2C所示,旋轉(zhuǎn)緩沖器60可以使本地幀緩沖器62既用作源存儲(chǔ)器又用作目標(biāo)存儲(chǔ)器,用于結(jié)合圖像旋轉(zhuǎn)使用。根據(jù)本發(fā)明還可以使用源和目標(biāo)存儲(chǔ)器的其他配置。
回到圖1,受益于本公開內(nèi)容的本領(lǐng)域普通技術(shù)人員所理解的另外功能也可以并入到根據(jù)本發(fā)明的圖形引擎22中,包括各種2D和3D處理引擎。而且,根據(jù)本發(fā)明,硬件和軟件部件的其他組合可以用于實(shí)現(xiàn)此處描述的基于塊的圖像旋轉(zhuǎn)功能。因此,本發(fā)明不限于此處討論的具體實(shí)現(xiàn)方案。
通常,從軟件的觀點(diǎn)來看,所執(zhí)行用于實(shí)現(xiàn)本發(fā)明的不同實(shí)施例中使用的任何功能的程序,不論其是作為操作系統(tǒng)的一部分實(shí)現(xiàn)還是作為具體的應(yīng)用、部件、程序、對(duì)象、模塊或者指令序列,或者甚至它們的子集,在此處都將被稱為“計(jì)算機(jī)程序代碼”或者簡(jiǎn)單地被稱為“程序代碼”。程序代碼典型地包括一條或者多條指令,其在不同的時(shí)間駐留在計(jì)算機(jī)中不同的存儲(chǔ)器或存儲(chǔ)設(shè)備中,并且在由計(jì)算機(jī)中的一個(gè)或者多個(gè)處理器讀取和執(zhí)行時(shí),使該計(jì)算機(jī)執(zhí)行所需用于執(zhí)行體現(xiàn)本發(fā)明的不同方面的步驟或元件的步驟。而且,盡管在功能完善的計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)的背景下已經(jīng)描述了本發(fā)明,并且下文將在該背景下描述本發(fā)明,但是本領(lǐng)域的技術(shù)人員應(yīng)認(rèn)識(shí)到,本發(fā)明的不同的實(shí)施例能夠作為多種形式的程序產(chǎn)品進(jìn)行分布,并且本發(fā)明同樣適用于,而不考慮用于實(shí)際實(shí)現(xiàn)該分布的信號(hào)承載介質(zhì)的具體類型。信號(hào)承載介質(zhì)包括,但不限于,可記錄類型的介質(zhì),諸如易失性和非易失性存儲(chǔ)設(shè)備,軟盤和其他可移動(dòng)磁盤、硬盤驅(qū)動(dòng)器、磁帶、光盤(例如,CD-ROM、DVD等)等等,和傳輸介質(zhì)類型,諸如數(shù)字和模擬通信鏈路。
此外,下文描述的各種程序代碼可以基于其中以本發(fā)明的具體實(shí)施例實(shí)現(xiàn)其的應(yīng)用來進(jìn)行識(shí)別。然而,應(yīng)當(dāng)認(rèn)識(shí)到,所遵循的任何具體的程序命名僅用于簡(jiǎn)便的目的,并且因此,本發(fā)明不應(yīng)限于在由該命名識(shí)別和/或意指的任何具體應(yīng)用中唯一地使用。而且,考慮到典型地?zé)o窮數(shù)量的方式,其中計(jì)算機(jī)程序可被組織為程序、進(jìn)程、方法、模塊、對(duì)象等等,以及不同的方式,其中程序功能可以分配到駐留在典型計(jì)算機(jī)中的各種軟件層中(例如,操作系統(tǒng)、庫、API、應(yīng)用、applet等),應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明不限于此處描述的程序功能的具體組織和分配。
而且,從硬件的觀點(diǎn)來看,此處討論的任何基于硬件的功能典型地在結(jié)合了一個(gè)或者多個(gè)集成電路設(shè)備、以及另外的支持電子元件的電路配置中得以實(shí)現(xiàn)。而且,如本領(lǐng)域所公知的,典型地使用一個(gè)或者多個(gè)計(jì)算機(jī)數(shù)據(jù)文件設(shè)計(jì)和制造集成電路設(shè)備,在此處被稱為硬件定義程序,其定義了設(shè)備上的電路配置的版圖。該程序典型地由設(shè)計(jì)工具生成,并且隨后在用于創(chuàng)建版圖掩模的制造過程中使用該程序,該版圖掩模定義了應(yīng)用到半導(dǎo)體晶片上的電路配置。典型地,使用硬件定義語言(HDL),諸如VHDL、verilog、EDIF等,以預(yù)定的格式提供該程序。盡管在功能完善的集成電路設(shè)備和使用該設(shè)備的數(shù)據(jù)處理系統(tǒng)中實(shí)現(xiàn)電路配置的背景下,已經(jīng)描述了本發(fā)明并且下文還將描述本發(fā)明,但是本領(lǐng)域的技術(shù)人員應(yīng)認(rèn)識(shí)到,根據(jù)本發(fā)明的電路配置也能夠作為多種形式的程序產(chǎn)品進(jìn)行分布,并且本發(fā)明同樣適用,而不考慮用于實(shí)際實(shí)現(xiàn)該分布的信號(hào)承載介質(zhì)的具體類型。
本領(lǐng)域的技術(shù)人員應(yīng)認(rèn)識(shí)到,在圖1和2A~2C中說明的示例性環(huán)境的目的不在于限制本發(fā)明。事實(shí)上,本領(lǐng)域的技術(shù)人應(yīng)認(rèn)識(shí)到,在不偏離本發(fā)明的范圍的前提下,可以使用其他的可替換的硬件和/或軟件環(huán)境。
現(xiàn)在參考圖3,更加詳細(xì)地說明了示例性的基于塊的圖像旋轉(zhuǎn)程序100的簡(jiǎn)要概況。該示例性程序開始于像素說明,其包括任意形狀的圖像、圖像的旋轉(zhuǎn)中心C、以及繞旋轉(zhuǎn)中心的所需的旋轉(zhuǎn)角度,典型地以90度為增量。
在框102中程序100開始,將像素圖像說明轉(zhuǎn)換為有序的矩形塊列表(A1...An),每個(gè)塊具有m×n像素的尺寸,其完整地定義了原始圖像。如上文所提及的,每個(gè)塊列表還典型地包括旋轉(zhuǎn)中心C,圖像中的每個(gè)像素將繞其旋轉(zhuǎn),以及所需的旋轉(zhuǎn)角度。塊可以在尺寸上彼此相同,或者可以獨(dú)立地確定尺寸。理想的是,選擇具體的塊尺寸和形狀以優(yōu)化旋轉(zhuǎn)硬件資源、系統(tǒng)數(shù)據(jù)傳輸特性(例如,存儲(chǔ)器存取突發(fā)尺寸)、存儲(chǔ)器技術(shù)(例如,DRAM)以及其他考慮。
此外,當(dāng)關(guān)于圖像的源和目標(biāo)存儲(chǔ)器是相同的時(shí),理想的是,排列塊列表的順序用以使重疊塊之間的潛在沖突最小。重疊塊是來自列表中這樣的塊,即其在旋轉(zhuǎn)時(shí)具有目標(biāo)坐標(biāo)與來自列表中一個(gè)或者多個(gè)后繼塊的像素相同的一個(gè)或者多個(gè)像素。識(shí)別與列表中的后繼塊相重疊的塊,可以在創(chuàng)建塊列表時(shí)確定,或者在塊列表的處理過程中實(shí)時(shí)地確定。應(yīng)當(dāng)認(rèn)識(shí)到,由于塊可能包括多個(gè)像素,并且由于塊可能僅部分地相互重疊,因此單個(gè)重疊塊可能與多個(gè)塊重疊。
下一步,框104開始循環(huán),用于處理有序列表中的每個(gè)塊,當(dāng)所有的塊均已得到處理時(shí)終止該程序。對(duì)于每個(gè)該塊,框106生成關(guān)于該塊的移位向量,用以使該塊繞旋轉(zhuǎn)中心C旋轉(zhuǎn)所需的角度。下一步,框108使旋轉(zhuǎn)該塊中的圖像數(shù)據(jù)旋轉(zhuǎn)所需的旋轉(zhuǎn)角度。隨后,在框110中,在框106中生成的移位向量應(yīng)用于該塊,用以確定該塊的目標(biāo)位置。然后,該目標(biāo)位置用作錨位置,用以自該錨位置起存儲(chǔ)在框108中生成的已旋轉(zhuǎn)的圖像數(shù)據(jù),由此該塊旋轉(zhuǎn)至其新的位置???12然后自列表中移除已經(jīng)處理的塊,并且使控制返回至塊104以處理列表中另外的塊。一旦處理了所有的塊,并且列表為空,則程序100完成。
針對(duì)各種定義圖像的塊生成和應(yīng)用移位向量,可以按如下發(fā)生。可以向各個(gè)塊分配表示對(duì)于每個(gè)塊的單個(gè)源位置的錨位置。通過這些錨位置,可以為這些塊定義與旋轉(zhuǎn)中心C相關(guān)的向量,此處被稱為源旋轉(zhuǎn)向量。關(guān)于塊的源旋轉(zhuǎn)向量是表示關(guān)于塊的錨位置和旋轉(zhuǎn)中心C之間的距離的(x,y)坐標(biāo)的元組。換言之,對(duì)于具有坐標(biāo)(Xn,Yn)的塊n,相對(duì)于具有坐標(biāo)(Xc,Yc)的旋轉(zhuǎn)中心點(diǎn)C的源旋轉(zhuǎn)向量(XSn,YSn)可以如下計(jì)算XSn=Xn-XcYSn=Y(jié)n-Yc例如,圖4說明了由多個(gè)2×2的像素塊122定義的示例性圖像120,其也可以表示為A1~A6。假設(shè)塊的左上位置是其錨位置,并且旋轉(zhuǎn)中心具有坐標(biāo)(8,8),源旋轉(zhuǎn)向量124如表I中所示表I示例性源旋轉(zhuǎn)向量
假設(shè)源旋轉(zhuǎn)向量Sn具有元組(XSn,YSn),則對(duì)應(yīng)于90、180和270度旋轉(zhuǎn)的目標(biāo)旋轉(zhuǎn)向量Dan分別是(YSn,-XSn)、(-XSn,-YSn)和(-YSn,XSn)。由源和目標(biāo)旋轉(zhuǎn)向量可以計(jì)算移位向量Tan,其定義了從塊的源位置到其目標(biāo)位置的水平和垂直像素的數(shù)目。移位向量是目標(biāo)和源旋轉(zhuǎn)向量之間的算術(shù)差,其如下定義對(duì)于90度的旋轉(zhuǎn)T90n=D90n-Sn=(YSn-XSn,-XSn-YSn).
對(duì)于180度的旋轉(zhuǎn)
T180n=D180n-Sn=(-XSn-XSn,-YSn-YSn)=(-2XSn,-2YSn).
對(duì)于270度的旋轉(zhuǎn)T270n=D270n-Sn=(-YSn-XSn,XSn-YSn)每個(gè)塊的目標(biāo)坐標(biāo)(Xdn,Ydn)將是塊的源坐標(biāo)和對(duì)應(yīng)于該區(qū)域和所需旋轉(zhuǎn)角度的移位向量Tan的和。這樣,對(duì)于90度的旋轉(zhuǎn),關(guān)于塊的錨位置的目標(biāo)坐標(biāo)是Xdn=Y(jié)n+Xc-Yc;和Ydn=-Xn+Xc+Yc。
同樣地,對(duì)于180度的旋轉(zhuǎn),塊的目標(biāo)坐標(biāo)是Xdn=2Xc-Xn;和Ydn=2Yc-Yn。
對(duì)于經(jīng)歷270度旋轉(zhuǎn)的塊,目標(biāo)坐標(biāo)是Xdn=-Yn+Xc+Yc;和Ydn=Xn-Xc+Yc。
因此,對(duì)于圖4的示例性圖像,在圖5中的120A、120B和120C處示出了關(guān)于90、180和270度旋轉(zhuǎn)的塊目標(biāo)坐標(biāo),并且呈現(xiàn)在下面的表II中表II示例性的塊目標(biāo)坐標(biāo)
除了由于旋轉(zhuǎn)引起的移位向量以外,單獨(dú)的位置向量也可以加入到每個(gè)塊的坐標(biāo)中,用以將旋轉(zhuǎn)的圖像設(shè)置在其最終的目標(biāo)位置。
上文中基本的基于塊的圖像旋轉(zhuǎn)程序100假設(shè)了不存在塊之間重疊的可能性。然而,對(duì)于可能發(fā)生重疊的情況(例如,由于源和目標(biāo)存儲(chǔ)器是相同的),理想的是,在圖像旋轉(zhuǎn)過程中利用多個(gè)旋轉(zhuǎn)緩沖器(或者單個(gè)旋轉(zhuǎn)緩沖器中的多個(gè)塊條目)協(xié)助重疊的處理。例如,圖6說明了圖像旋轉(zhuǎn)程序140,其依賴于標(biāo)識(shí)為RBUF_A和RBUF_B的兩個(gè)旋轉(zhuǎn)緩沖器,并且結(jié)合其中公共的幀緩沖器用作源和目標(biāo)存儲(chǔ)器的實(shí)施例使用。程序140還假設(shè)每次至多有一個(gè)塊可以重疊。如受益于本公開內(nèi)容的本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到的,對(duì)于可能存在另外的重疊的情況,可以使用另外的旋轉(zhuǎn)緩沖器。
在框142中程序140開始,從幀緩沖器或者其他源存儲(chǔ)器中讀入與列表中的第一個(gè)塊相關(guān)的像素?cái)?shù)據(jù),并且將其存儲(chǔ)在RBUF_A中。旋轉(zhuǎn)RBUF_A中的像素?cái)?shù)據(jù),然后在框144中執(zhí)行測(cè)試,用以確定預(yù)期的目標(biāo)是否與列表中的另一塊沖突或重疊。如果沒有沖突,則在框146中,如以上文描述的方式計(jì)算的,在由旋轉(zhuǎn)中心和所需旋轉(zhuǎn)角度確定的位置中,將已旋轉(zhuǎn)的塊寫入幀緩沖器。然后從列表中移除該塊,并且控制轉(zhuǎn)到框148以確定列表是否結(jié)束。如果否,則控制轉(zhuǎn)到框150以讀入下一像素?cái)?shù)據(jù)塊并旋轉(zhuǎn)該像素?cái)?shù)據(jù),然后轉(zhuǎn)到框144以確定對(duì)于新的塊是否出現(xiàn)了沖突。否則,一旦列表結(jié)束,則程序140終止。
回到框144,如果檢測(cè)到重疊沖突,則在框152中來自處于沖突中的塊的像素?cái)?shù)據(jù)被讀入到RBUF_B中,然后進(jìn)行旋轉(zhuǎn)。然后在框154中,RBUF_A中已旋轉(zhuǎn)的數(shù)據(jù)寫入到其目標(biāo),并且從列表中將其移除。然后控制轉(zhuǎn)到框156,用以確定RBUF_B中像素?cái)?shù)據(jù)的預(yù)期目標(biāo)是否與列表中的另一塊沖突或者重疊。如果否,則控制轉(zhuǎn)到框158,用以在所需的目標(biāo)位置中將已旋轉(zhuǎn)的塊寫入到幀緩沖器中,并且從列表中移除該塊。然后,如果需要,控制轉(zhuǎn)到框148,用以處理列表中另外的塊。
返回框156,如果對(duì)于RBUF_B中的像素?cái)?shù)據(jù)檢測(cè)到重疊,則在框160中,來自沖突中的塊的像素?cái)?shù)據(jù)被讀入到RBUF_A中,然后進(jìn)行旋轉(zhuǎn)。然后在框162中,RBUF_B中的已旋轉(zhuǎn)的數(shù)據(jù)寫入到其目標(biāo),并且從列表中將其移除。然后控制轉(zhuǎn)到框144,用以確定RBUF_A中像素?cái)?shù)據(jù)的預(yù)期目標(biāo)是否與列表中的另一塊沖突或者重疊,其使用前文描述的方式進(jìn)行操作。上文的處理順序繼續(xù),直至旋轉(zhuǎn)和移位了列表中的所有塊。
下面,公開了使用硬件和軟件組合的本發(fā)明一個(gè)具體的實(shí)現(xiàn)方案。在所說明的實(shí)現(xiàn)方案中,諸如創(chuàng)建塊列表、監(jiān)測(cè)旋轉(zhuǎn)和激活指針、以及最初生成圖像數(shù)據(jù)的功能分配給軟件,而諸如來自塊的圖像數(shù)據(jù)的實(shí)際旋轉(zhuǎn)、塊列表的處理和對(duì)存儲(chǔ)器存取的功能,則在硬件中處理。然而,應(yīng)當(dāng)認(rèn)識(shí)到,在其他的實(shí)施例中可以使用其他的硬件和軟件劃分。
為了該實(shí)現(xiàn)方案的目的,假設(shè)通過由通用對(duì)象描述定義的多個(gè)對(duì)象來構(gòu)建圖像。例如,本發(fā)明的該實(shí)現(xiàn)方案可以具有在基于視窗的圖形用戶界面中的適用性,其中諸如圖標(biāo)、視窗、工具欄等的對(duì)象設(shè)置在復(fù)合桌面圖像上,用以提供同用戶的交互。因此,在要求生成所需的顯示時(shí),可以單獨(dú)地表示和組合這些對(duì)象中的每一個(gè)。
通用對(duì)象描述可以存儲(chǔ)在如圖1中34處所示的存儲(chǔ)器中。而且,通用對(duì)象可被例示用于不同的視圖,例如,用以支持針對(duì)不同情況的不同對(duì)象布局。例如,考慮可在橫向(landscape)和縱向(portrait)視圖之間切換的顯示器,例如,用以支持手持電腦,其可以在相對(duì)于用戶的兩個(gè)不同的取向上進(jìn)行定位。在該環(huán)境中理想的是定義分別的視圖,按照需要將例示的對(duì)象設(shè)置在每個(gè)視圖中的不同位置。
為了支持將對(duì)象設(shè)置在多個(gè)視圖中,此處描述的實(shí)現(xiàn)方案基于常見的通用對(duì)象描述,例示了用于每個(gè)視圖的對(duì)象。與特定視圖中的對(duì)象的特定例示相關(guān)的是預(yù)定的旋轉(zhuǎn)和/或移位,指出了特定的對(duì)象將設(shè)置在視圖上的什么位置以及以什么角度設(shè)置。因此,在此處描述的實(shí)現(xiàn)方案中,對(duì)象的每個(gè)視圖或者例示由該對(duì)象的塊列表所表示,如圖1中36和38處所說明的。
因此,圖7的程序170用于生成由多個(gè)對(duì)象組成的多視像,每個(gè)對(duì)象具有相對(duì)于其通用表述的移位和/或旋轉(zhuǎn),用于定位在特定視圖上的具體位置和/或取向。
在框172中,程序170開始,生成第一對(duì)象的通用對(duì)象描述,例如,生成對(duì)象的圖像數(shù)據(jù)表述,并且獨(dú)立于與特定視圖相關(guān)的任何特定的移位或旋轉(zhuǎn)。
一旦創(chuàng)建了通用對(duì)象描述,則框174將該對(duì)象分解為矩形塊的有序列表。如上文所提及的,該塊可以具有相同的尺寸,或者可以按照需要確定為不同尺寸。典型地布置該塊以包含完整的對(duì)象,其可以是矩形的,或者更典型地是非矩形的。每個(gè)塊的尺寸可以基于許多因素進(jìn)行選擇。例如,可以基于圖形硬件支持的突發(fā)長(zhǎng)度來選擇塊尺寸,以優(yōu)化數(shù)據(jù)傳輸性能。較小的塊尺寸趨向于減少源存儲(chǔ)器讀過程和目標(biāo)存儲(chǔ)器寫過程中所需的旋轉(zhuǎn)緩沖存儲(chǔ)器的量。
如上文所述,除了創(chuàng)建塊列表以外,同樣理想的是排列塊列表的順序,用以使旋轉(zhuǎn)過程中塊之間的任何重疊最小。在重疊塊的情況中,理想的是將塊列表中的每個(gè)重疊塊放置在緊接著其旋轉(zhuǎn)引發(fā)了重疊的塊之后。此排序策略簡(jiǎn)化了塊列表處理。然而,在其中源和目標(biāo)存儲(chǔ)器不同的實(shí)施例中,重疊可能不是所考慮的問題,由此其他的考慮可被用于排列塊列表的順序,諸如存儲(chǔ)器性能問題,例如,頁邊界、相對(duì)存儲(chǔ)器存取速度、預(yù)取特性等。
一旦對(duì)象被分解為矩形塊的有序列表,則控制轉(zhuǎn)到框176,用以創(chuàng)建塊列表標(biāo)題,其存儲(chǔ)了許多與對(duì)象相關(guān)的參數(shù),包括,例如,列表中的塊數(shù)目、所需的旋轉(zhuǎn)角度、源和目標(biāo)存儲(chǔ)器之間的間距、旋轉(zhuǎn)中心、位置向量(表示用于在合成圖像上移位對(duì)象例示的x,y距離)等。
下一步,任選地執(zhí)行框178,基于用于執(zhí)行塊旋轉(zhuǎn)的所需角度和旋轉(zhuǎn)中心,使用上文描述的方式,來計(jì)算關(guān)于塊列表中第一個(gè)塊的塊目標(biāo)地址。此外,位置向量可以應(yīng)用于將目標(biāo)地址定位在圖像上的特定的移位位置處。然而,在某些實(shí)施例中,可以從程序170中略去框178,由此在由圖形引擎22處理每個(gè)塊的過程中,動(dòng)態(tài)地執(zhí)行關(guān)于每個(gè)塊的目標(biāo)地址的計(jì)算。
下一步,框180設(shè)置關(guān)于當(dāng)前塊的重疊標(biāo)志,以使由該塊所重疊的塊數(shù)目等于旋轉(zhuǎn)的結(jié)果。在其中至多僅有一個(gè)塊可以被重疊的實(shí)施例中,重疊標(biāo)志可以是二進(jìn)制標(biāo)志。否則,關(guān)于特定塊的重疊標(biāo)志的零值將表示沒有重疊,而任何非零值將表示在有序列表中與當(dāng)前塊重疊的后繼塊的數(shù)目。
下一步,如果需要回填塊的原始位置,則框182設(shè)置塊的回填標(biāo)志。特別地,可以由塊列表的分析確定出,在塊旋轉(zhuǎn)之后該塊的原始位置是否將由來自該圖像的另一塊覆蓋。如果否,則在某些實(shí)施例中理想的是,在該塊的原始位置處涂覆背景顏色,諸如透明顏色或者回填顏色。這樣,塊182支持可與特定塊相關(guān)的任選的回填特征。
一旦框182結(jié)束,則控制轉(zhuǎn)到框184,用以處理正由程序170處理的當(dāng)前有序列表中的另外的塊。對(duì)于每個(gè)另外的塊,控制返回到框178以計(jì)算關(guān)于該塊的目標(biāo)地址。一旦處理了有序列表中所有的塊,則框184將控制轉(zhuǎn)到框186,用以確定是否需要生成當(dāng)前對(duì)象的任何更多的視圖。對(duì)于每個(gè)另外的視圖,框186將控制轉(zhuǎn)到框174,用以將對(duì)象分解為對(duì)于新視圖進(jìn)行優(yōu)化的另一矩形塊的有序列表。一旦處理了所有的視圖,則框186將控制轉(zhuǎn)到框188。
框188確定是否還剩余任何更多的對(duì)象有待創(chuàng)建。如果是這樣,則框188將控制轉(zhuǎn)到框172,用以創(chuàng)建關(guān)于新對(duì)象的新通用對(duì)象描述。否則,一旦創(chuàng)建了所有的對(duì)象,則程序170結(jié)束。
這樣,可以看到,程序170可用于創(chuàng)建在構(gòu)建一個(gè)或者多個(gè)合成圖像中使用的多個(gè)對(duì)象的多視圖。典型地,程序170的功能將在軟件中實(shí)現(xiàn),并且可以在應(yīng)用軟件的運(yùn)行過程中動(dòng)態(tài)地生成,或者可以在軟件應(yīng)用的開發(fā)過程中執(zhí)行,例如當(dāng)已知每次運(yùn)行應(yīng)用軟件時(shí)某一對(duì)象集合都會(huì)被應(yīng)用軟件使用時(shí)。其他的實(shí)現(xiàn)方案對(duì)于本領(lǐng)域的普通技術(shù)人員是顯而易見的。
下面圖8和9說明了可以由圖7的程序170生成的一對(duì)有序?qū)ο罅斜?90、200。對(duì)象列表190具有這樣的類型,即其可由程序170生成,用于結(jié)合能夠動(dòng)態(tài)地生成塊列表中不同塊的目標(biāo)地址的圖形引擎使用。這樣,對(duì)象列表190包括標(biāo)題192,其包括表示列表中的塊數(shù)目、所需旋轉(zhuǎn)角度、旋轉(zhuǎn)中心、表示用于移位塊的x,y坐標(biāo)量的位置向量、和在緩沖器中存儲(chǔ)列數(shù)目以允許支持不同尺寸顯示器的源/目標(biāo)間距參數(shù)的字段。此外,標(biāo)題192可以包括到存儲(chǔ)器中存儲(chǔ)的下一對(duì)象列表的鏈接。
對(duì)象列表190還包括多個(gè)塊記錄194,其存儲(chǔ)了關(guān)于列表中每個(gè)塊的識(shí)別數(shù)據(jù)。對(duì)于每個(gè)該塊,記錄194包括源地址,表示處于未旋轉(zhuǎn)狀態(tài)的塊的錨位置;塊尺寸,表示m×n坐標(biāo)中的塊尺寸;和重疊標(biāo)志,表示在旋轉(zhuǎn)時(shí)由塊所重疊的其他塊的數(shù)目;以及回填標(biāo)志,表示塊的原始位置在旋轉(zhuǎn)之后是否應(yīng)被回填。
另一方面,圖9中的對(duì)象列表200用于其中圖形引擎不動(dòng)態(tài)地生成關(guān)于對(duì)象塊的目標(biāo)地址這樣的情況,而不是由程序170預(yù)先生成目標(biāo)地址并且將其存儲(chǔ)在對(duì)象列表自身中的情況。在此實(shí)現(xiàn)方案中,標(biāo)題202僅存儲(chǔ)塊數(shù)目、旋轉(zhuǎn)角度、源/目標(biāo)間距和到下一列表的鏈接,如果存在的話。另一方面,除了存儲(chǔ)源地址、塊尺寸、重疊標(biāo)志和回填標(biāo)志以外,每個(gè)塊記錄204還存儲(chǔ)由程序170預(yù)先計(jì)算的目標(biāo)地址。
應(yīng)當(dāng)認(rèn)識(shí)到,實(shí)際上可以通過與本發(fā)明相一致的方式,使用任何數(shù)據(jù)結(jié)構(gòu)來表示對(duì)象列表。因此,本發(fā)明不限于此處描述的具體的數(shù)據(jù)結(jié)構(gòu)。
下面圖10說明了用于處理已由程序170創(chuàng)建的塊列表的塊列表處理部件。在所說明的實(shí)施例中,圖10中的各種部件在硬件中實(shí)現(xiàn)。具體地,源存儲(chǔ)器210示出為向塊讀取處理212提供圖像數(shù)據(jù)。然后該塊讀取處理向旋轉(zhuǎn)緩沖器/先入先出(FIFO)緩沖器214輸出數(shù)據(jù),其用于存儲(chǔ)關(guān)于一個(gè)或者多個(gè)塊的圖像數(shù)據(jù),并且用于根據(jù)需要旋轉(zhuǎn)該圖像數(shù)據(jù)。然后已旋轉(zhuǎn)的圖像數(shù)據(jù)提供給塊寫入處理216,其向目標(biāo)存儲(chǔ)器218輸出圖像數(shù)據(jù)。緩沖器214還向處理212、216提供FIFO滿和FIFO空信號(hào)。而且,處理216向旋轉(zhuǎn)緩沖器214提供像素地址,其使用將在下文中得到更加詳細(xì)的描述。
在所說明的實(shí)施例中,在諸如圖1的控制器40的旋轉(zhuǎn)/移位控制器中實(shí)現(xiàn)處理212、216。而且,源存儲(chǔ)器和目標(biāo)存儲(chǔ)器210、218可以是分別的存儲(chǔ)器,或者可以是相同的存儲(chǔ)器,例如,圖1的本地幀緩沖器42。
而且,任選地,旋轉(zhuǎn)緩沖器214可以支持基于硬件的逐個(gè)塊的圖像數(shù)據(jù)旋轉(zhuǎn)。在替換方案中,使用與某些傳統(tǒng)的基于硬件的圖像旋轉(zhuǎn)算法相似的方式,通過對(duì)旋轉(zhuǎn)緩沖器數(shù)據(jù)的非順序存取,可以提供塊數(shù)據(jù)的旋轉(zhuǎn)。然而,考慮到旋轉(zhuǎn)緩沖器可以在諸如SRAM的高速存儲(chǔ)器中實(shí)現(xiàn),即使在基于硬件的旋轉(zhuǎn)電路未并入到緩沖器214時(shí),也可能不會(huì)出現(xiàn)使用外部存儲(chǔ)器時(shí)會(huì)發(fā)生的性能損失。
圖11更加詳細(xì)地說明了塊讀取處理212。在框222中,處理212開始,從源存儲(chǔ)器中讀取針對(duì)輸入到該處理的塊列表的塊列表標(biāo)題信息。下一步,框224從塊列表中讀關(guān)于第一塊的塊描述信息。然后框226確定旋轉(zhuǎn)緩沖器是否已聲明了FIFO滿信號(hào),并且一旦確定FIFO不是滿的,則將控制轉(zhuǎn)到框230。
框230向FIFO寫入塊控制字。該塊控制字可以包括,例如,來自塊描述的目標(biāo)地址、塊尺寸、重疊標(biāo)志、和回填標(biāo)志。下一步,框232從源存儲(chǔ)器中讀取來自塊的圖像數(shù)據(jù),其存儲(chǔ)在塊描述中指定的源目標(biāo)處。然后控制轉(zhuǎn)到框234,用以查看FIFO當(dāng)前是否是滿的。一旦確定FIFO不是滿的,則控制轉(zhuǎn)到框238,用以向FIFO寫入該塊的圖像數(shù)據(jù)。然后框240確定是否需要為該塊寫入更多的數(shù)據(jù)。如果是這樣,則控制返回到框232。否則,控制轉(zhuǎn)到框242,用以確定在塊列表中是否剩余任何更多的塊。如果是這樣,則框242將控制轉(zhuǎn)到框224,用以讀取關(guān)于列表中下一塊的塊描述。否則,框242將控制轉(zhuǎn)到244,用以確定是否需要從源存儲(chǔ)器中取回任何更多的對(duì)象。如果是這樣,則控制返回框222,用以讀取下一對(duì)象的塊列表標(biāo)題信息。否則,框244終止程序212。
下面圖12更加詳細(xì)地說明了塊寫入處理216。在框252中,程序216開始,從FIFO中讀取下一塊控制字。下一步,框254確定是否已設(shè)置了關(guān)于該塊控制字的回填標(biāo)志。如果是,則控制轉(zhuǎn)到框256,用以向目標(biāo)存儲(chǔ)器中的塊源地址寫入背景顏色,這樣清除了關(guān)于該塊的原始位置的圖像數(shù)據(jù)。然后控制轉(zhuǎn)到框258,用以確定重疊標(biāo)志是否等于零。此外,回到框254,如果未設(shè)置回填標(biāo)志,則繞過框256,并且將控制直接轉(zhuǎn)到框258。
如果重疊標(biāo)志未設(shè)置為零,則框258將控制轉(zhuǎn)到框260,用以確定當(dāng)前是否所有的重疊塊均存儲(chǔ)在FIFO中。該確定可以基于,例如確定有序列表中的接下來n個(gè)塊是否已傳到FIFO,其中n是當(dāng)前處理的塊的重疊標(biāo)志的值。如果所有的重疊塊仍未處于FIFO中,則框260等待直至所有這些塊均存儲(chǔ)到FIFO中。此時(shí),控制轉(zhuǎn)到框264,用以任選地計(jì)算塊目標(biāo)地址。該計(jì)算發(fā)生在這樣的實(shí)施例中,即其中圖形引擎支持動(dòng)態(tài)地生成塊目標(biāo)地址的能力。在其他的實(shí)施例中,其中由創(chuàng)建塊列表程序來計(jì)算塊目標(biāo)地址,諸如圖7的程序170,從處理216中略去框264。
下一步,框266旋轉(zhuǎn)對(duì)于該塊的圖像數(shù)據(jù),并將其寫到該塊的目標(biāo)地址。圖像數(shù)據(jù)的旋轉(zhuǎn)可以在處理216的控制下通過選擇所示的非順序像素地址作為處理216的輸出而發(fā)生,或者可以僅僅是一旦向FIFO提供旋轉(zhuǎn)角度時(shí)FIFO 214的輸出的結(jié)果。在任一情況中,寫到目標(biāo)存儲(chǔ)器的數(shù)據(jù)可以這樣的順序并且使用這樣的數(shù)據(jù)寬度寫入,即使得目標(biāo)存儲(chǔ)器的寫性能最優(yōu)化。
下一步,框268通過輪詢來自FIFO 214的FIFO空信號(hào),確定FIFO是否為空。如果是,則框268等待非空狀態(tài),并且然后將控制轉(zhuǎn)到框272,用以確定在FIFO中另外的數(shù)據(jù)是否是另外的塊數(shù)據(jù)。如果是,則控制轉(zhuǎn)到框264。否則,控制返回框252,用以從FIFO中讀取下一塊控制字。
因此可以看到,通過處理212、214的交互,由于另一塊的旋轉(zhuǎn)而能夠重疊的塊必須在將重疊塊寫到其目標(biāo)地址之前裝載到FIFO中。
如上文所提及的,在處理216的框266中將塊的圖像數(shù)據(jù)寫入到目標(biāo)地址,可以以與本發(fā)明一致的許多方式發(fā)生。例如,圖13說明了示例性的旋轉(zhuǎn)緩沖器地址生成電路300,其可由處理216使用以生成像素地址,用于從旋轉(zhuǎn)緩沖器214中的塊中非連續(xù)地讀取像素。
電路300包括一對(duì)向上/向下計(jì)數(shù)器302、304,其分別輸出到乘法器306和求和器308。計(jì)數(shù)器302是模為n的計(jì)數(shù)器,其接收作為輸入的值n表示在旋轉(zhuǎn)之前的圖像數(shù)據(jù)塊中的行數(shù)目。計(jì)數(shù)器304是模為m的計(jì)數(shù)器,其接收作為輸入的值m表示在旋轉(zhuǎn)之前的圖像數(shù)據(jù)塊中的列數(shù)目。每個(gè)計(jì)數(shù)器302、304還分別由nCntUp和mCntUp信號(hào)控制,其在設(shè)置為二進(jìn)制1時(shí)使計(jì)數(shù)器向上計(jì)數(shù),并且在設(shè)置為二進(jìn)制0時(shí)使計(jì)數(shù)器向下計(jì)數(shù)。如上文所提及的,計(jì)數(shù)器302的輸出被輸出到乘法器306,使計(jì)數(shù)器302的輸出與m的值相乘,然后將其結(jié)果提供給求和器308,用以同計(jì)數(shù)器304的輸出求和。求和器308的輸出是用于從旋轉(zhuǎn)緩沖器中讀取的地址,并且因此用作圖像數(shù)據(jù)塊中的索引。
每個(gè)計(jì)數(shù)器302、304還包括進(jìn)位輸入(CI)輸入端和進(jìn)位輸出(CO)輸出端。計(jì)數(shù)器304的CO輸出端耦合到AND門310的一個(gè)輸入端,AND門310的另一輸入端耦合用以接收nCntrMS信號(hào),而AND門310的輸出端耦合到計(jì)數(shù)器302的CI輸入端。計(jì)數(shù)器302的CO輸出端依次耦合到另一AND門312的一個(gè)輸入端,AND門312的另一輸入端耦合以接收mCntrMS信號(hào),而AND門312的輸出端耦合到計(jì)數(shù)器304的CI輸入端。nCntrMS和mCntrMS信號(hào)是以互斥的方式聲明的,并且用于控制計(jì)數(shù)器302、304中的哪一個(gè)表示旋轉(zhuǎn)緩沖器地址的最高有效位。
為了使用電路300執(zhí)行對(duì)旋轉(zhuǎn)緩沖器的適當(dāng)?shù)姆琼樞蜃x取,基于所需的旋轉(zhuǎn)角度,如下面表III中所示,設(shè)置控制信號(hào)nCntrMS、nCntUp、mCntrMS和mCntUp表III旋轉(zhuǎn)緩沖器地址生成電路控制設(shè)置
在其中計(jì)數(shù)器被設(shè)置用于向上計(jì)數(shù)的情況中,將計(jì)數(shù)器初始化為0值。另一方面,對(duì)于計(jì)數(shù)器被設(shè)置用于向下計(jì)數(shù)的情況,計(jì)數(shù)器被初始化為其最大值(即,對(duì)于計(jì)數(shù)器302是n-1)。
為了提供電路300的操作示例,下面的表IV示出了對(duì)于示例性的4×3的塊(m=4,n=3)旋轉(zhuǎn)0、90、180、270度時(shí),由電路300生成的地址值,假設(shè)在未旋轉(zhuǎn)的狀態(tài)中,從左向右、從上向下讀取該塊,其具有0(左上)~11(右下)的地址表IV關(guān)于4×3的塊的旋轉(zhuǎn)緩沖器讀地址
應(yīng)當(dāng)認(rèn)識(shí)到,當(dāng)在處理216的框266中從旋轉(zhuǎn)緩沖器寫出圖像數(shù)據(jù)時(shí),執(zhí)行針對(duì)目標(biāo)存儲(chǔ)器的連續(xù)的寫操作,其允許該處理利用目標(biāo)存儲(chǔ)器的典型的突發(fā)容量。依賴于塊在旋轉(zhuǎn)之后的取向,通過用于使寫地址適當(dāng)遞增的計(jì)數(shù)器和比較器的集合,可以執(zhí)行寫地址的生成。例如,下面的表V示出了寫地址的序列,其可被生成用于寫入到用于上文討論的相同的4×3的塊尺寸的目標(biāo)存儲(chǔ)器中,其中假設(shè)目標(biāo)地址為100且目標(biāo)間距為480表V關(guān)于4×3的塊的目標(biāo)存儲(chǔ)器寫地址
如上文所討論的,將塊在列表中排序的方式可以顯著地影響資源開銷和根據(jù)本發(fā)明的圖像旋轉(zhuǎn)算法的效率。為了說明此概念,圖14示出了示例性的對(duì)象280,其包括將繞旋轉(zhuǎn)中心C旋轉(zhuǎn)的12個(gè)塊A1~A12的集合。對(duì)于該對(duì)象而言,理想的是以n元樹形數(shù)據(jù)結(jié)構(gòu)的形式表示塊列表,其中不同的塊A1~A12表示為樹形數(shù)據(jù)結(jié)構(gòu)中的節(jié)點(diǎn)。在圖7~13中說明的實(shí)施例中,基于所定義的關(guān)于對(duì)象列表的樹形結(jié)構(gòu),以從左到右寬度優(yōu)先的順序?qū)⒚總€(gè)塊從源存儲(chǔ)器讀到FIFO。相似地,每個(gè)塊僅在其所有的從屬均已被存儲(chǔ)到FIFO之后,才寫到其目標(biāo)位置。對(duì)于圖14的對(duì)象280中的塊的集合,可以使用許多不同的樹形數(shù)據(jù)結(jié)構(gòu)來表示有序?qū)ο罅斜碇械膲K的相互依賴關(guān)系。
例如,圖15說明了一個(gè)示例性的樹形數(shù)據(jù)結(jié)構(gòu)290,其可以產(chǎn)生作為繞旋轉(zhuǎn)中心C的90度旋轉(zhuǎn)的結(jié)果。在該樹形結(jié)構(gòu)下,示出了塊A1以便與塊A2、A4、A6和A8重疊,并且同樣地,示出了塊A2與塊A9、A10、A11和A12重疊。在該設(shè)置下,通過圖10的處理212、216使這些塊裝載到FIFO中并從FIFO中寫出的裝載/存儲(chǔ)(L/S)和順序如下L1,L2,L4,L6,L8,S1,L9,L10,L11,L12,S2,S4,S6,S8,S9,S10,S11,S12,L3,S3,L5,S5,L7,S7.
從該序列中應(yīng)當(dāng)注意,在將塊A2存儲(chǔ)到目標(biāo)存儲(chǔ)器中之前,需要FIFO214將8個(gè)塊(塊A2,A4,A6,A8,A9,A10,A11和A12)存儲(chǔ)到FIFO中。因此,將需要足夠用于存儲(chǔ)相當(dāng)于圖像數(shù)據(jù)的8個(gè)塊的最小FIFO尺寸。
相反地,在圖16中說明的可替換的樹形數(shù)據(jù)結(jié)構(gòu)292,也可以用于表示關(guān)于圖14的對(duì)象280的相同的對(duì)象列表。應(yīng)當(dāng)注意,在樹形數(shù)據(jù)結(jié)構(gòu)292中,重新配置了塊A2、A4、A6和A8,其使得這些塊的每一個(gè)分別僅具有一個(gè)重疊塊A9、A10、A11和A12。通過以這樣的方式重新排列樹,處理212和216執(zhí)行的FIFO的裝載/存儲(chǔ)順序如下L1,L8,L6,L4,L2,S1,L9,S8,L10,S6,L11,S4,L12,S2,S9,S10,S11,S12,L3,S3,L5,S5,L7,S7.
應(yīng)當(dāng)注意在該設(shè)置中,在任何給定時(shí)刻,至多需要5個(gè)塊駐留在FIFO中。這樣,相對(duì)于樹形數(shù)據(jù)結(jié)構(gòu)290,可以使用較小的FIFO處理樹形數(shù)據(jù)結(jié)構(gòu)292。
此處描述的實(shí)施例提供了相比于傳統(tǒng)的軟件和硬件技術(shù)的許多優(yōu)點(diǎn)。如上文所提及的,對(duì)于所旋轉(zhuǎn)圖像的每個(gè)像素,傳統(tǒng)的軟件技術(shù)通常需要矩陣乘法運(yùn)算,其可能消耗大量的計(jì)算資源,并且對(duì)于移動(dòng)設(shè)備和手持設(shè)備而言,更重要的是其可能消耗大量的電力。相反地,可以在旋轉(zhuǎn)緩沖器中執(zhí)行以此處描述的方式實(shí)現(xiàn)的圖像旋轉(zhuǎn),該旋轉(zhuǎn)緩沖器結(jié)合了加速硬件,用以協(xié)助可控制尺寸的塊中的圖像數(shù)據(jù)選中。對(duì)于需要支持多個(gè)顯示取向的移動(dòng)應(yīng)用和信息設(shè)備應(yīng)用,可以減少軟件開發(fā)時(shí)間,由于單個(gè)幀緩沖器圖像可以開發(fā)用于通過使用不同的塊列表由該單個(gè)圖像產(chǎn)生的應(yīng)用和數(shù)個(gè)取向。
而且,執(zhí)行幀緩沖器的非連續(xù)存取的傳統(tǒng)硬件方法極大地限制了幀緩沖器可支持的存儲(chǔ)器的類型和總線結(jié)構(gòu)。例如,當(dāng)從非連續(xù)的地址存取像素?cái)?shù)據(jù)時(shí),在DRAM中實(shí)現(xiàn)的幀緩沖器將增加顯著的性能損失。旋轉(zhuǎn)操作固有地將引起非連續(xù)的數(shù)據(jù)存取,但是通過如此處描述的在緩沖器中執(zhí)行旋轉(zhuǎn),可以消除大部分的非連續(xù)存取。而且,傳統(tǒng)的硬件方法傾向于不能良好地與其他2D圖形操作集成,諸如色度鍵(藍(lán)屏)和過濾/縮放。由于此處描述的方法可以直接針對(duì)幀緩沖器中的數(shù)據(jù)執(zhí)行,類似于2D圖形操作,因此其可以容易地與其他2D功能集成,并且甚至可以共享某些相同的硬件資源(諸如所需用于執(zhí)行旋轉(zhuǎn)操作的緩沖器)?;趲彌_器的非連續(xù)存取的傳統(tǒng)硬件方法還受到這樣的約束,即要求以像素將由顯示電子裝置處理的精確順序向顯示控制器輸出像素。此處描述的方法并未受到相似的限制,并且,例如可以支持任意尺寸/形狀的圖像的旋轉(zhuǎn)。
而且,給出了對(duì)任意形狀圖像的支持,相比于其中基于圖像實(shí)質(zhì)上是矩形的這一假設(shè)來處理圖像的傳統(tǒng)算法,此處描述的算法可以額外地提供更高的性能。特別地,對(duì)于如果由矩形周界限定的圖像將包含相等大量的空白區(qū)域的情況,由傳統(tǒng)算法執(zhí)行的圖像旋轉(zhuǎn)將可能導(dǎo)致不必要的圖像數(shù)據(jù)的旋轉(zhuǎn)。相反地,支持如此處所述的旋轉(zhuǎn)任意形狀的圖像的能力,可以定義對(duì)象列表用以僅限定重要的圖像數(shù)據(jù),這樣相比于矩形區(qū)域減小了塊數(shù)目,并且因此減小了與圖像數(shù)據(jù)旋轉(zhuǎn)相關(guān)的處理開銷。
其他優(yōu)點(diǎn)和修改方案對(duì)于受益于本公開內(nèi)容的本領(lǐng)域的普通技術(shù)人員而言將是顯而易見的。因此本發(fā)明由下文的附屬權(quán)利要求限定。
權(quán)利要求
1.一種旋轉(zhuǎn)圖像數(shù)據(jù)的方法,對(duì)于定義圖像(120)的多個(gè)圖像數(shù)據(jù)塊(122)中的每一個(gè),該方法包括,將移位向量應(yīng)用到塊(122),用以使該塊繞旋轉(zhuǎn)點(diǎn)移位所需的旋轉(zhuǎn)角度;并且,根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)塊(122)中的圖像數(shù)據(jù)。
2.權(quán)利要求1的方法,其中旋轉(zhuǎn)點(diǎn)對(duì)于多個(gè)塊(122)是公共的,并且其中應(yīng)用移位向量包括,生成表示旋轉(zhuǎn)點(diǎn)和塊的錨位置之間距離的源旋轉(zhuǎn)向量(124)。
3.權(quán)利要求2的方法,其中應(yīng)用移位向量進(jìn)一步包括,基于與所需旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量和源旋轉(zhuǎn)向量(124)之間的差,生成移位向量。
4.權(quán)利要求3的方法,其中旋轉(zhuǎn)點(diǎn)具有坐標(biāo)(Xc,Yc),其中來自多個(gè)塊(122)的塊n的錨位置具有坐標(biāo)(Xn,Yn),其中塊n的源旋轉(zhuǎn)向量具有坐標(biāo)(XSn,YSn),并且其中XSn=Xn-Xc;且YSn=Y(jié)n-Yc。
5.權(quán)利要求4的方法,其中從包括90、180、270度的組中選擇旋轉(zhuǎn)角度,其中與90度旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量等于(YSn,-XSn),其中與180度旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量等于(-XSn,-YSn),且其中與270度旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量等于(-YSn,XSn)。
6.權(quán)利要求3的方法,其中對(duì)塊(122)應(yīng)用移位向量進(jìn)一步包括,通過將塊的錨位置與移位向量求和,生成關(guān)于該塊的已移位的錨位置。
7.權(quán)利要求1的方法,其中具有坐標(biāo)(Xc,Yc)的旋轉(zhuǎn)點(diǎn)對(duì)于多個(gè)塊(122)是公共的,其中塊(122)是來自多個(gè)塊(122)的塊n,其具有坐標(biāo)為(Xn,Yn)的錨位置,其中旋轉(zhuǎn)角度是90度,其中對(duì)塊(122)應(yīng)用移位向量包括,生成對(duì)于塊n的已移位的錨位置,其具有坐標(biāo)(Xdn,Ydn),并且其中Xdn=Y(jié)n+Xc-Yc;且Ydn=-Xn+Xc+Yc。
8.權(quán)利要求1的方法,其中具有坐標(biāo)(Xc,Yc)的旋轉(zhuǎn)點(diǎn)對(duì)于多個(gè)塊(122)是公共的,其中塊(122)是來自多個(gè)塊(122)的塊n,其具有坐標(biāo)為(Xn,Yn)的錨位置,其中旋轉(zhuǎn)角度是180度,其中對(duì)塊(122)應(yīng)用移位向量包括,生成關(guān)于塊n的已移位的錨位置,其具有坐標(biāo)(Xdn,Ydn),并且其中Xdn=2Xc-Xn;且Ydn=2Yc-Yn。
9.權(quán)利要求1的方法,其中具有坐標(biāo)(Xc,Yc)的旋轉(zhuǎn)點(diǎn)對(duì)于多個(gè)塊(122)是公共的,其中塊(122)是來自多個(gè)塊(122)的塊n,其具有坐標(biāo)為(Xn,Yn)的錨位置,其中旋轉(zhuǎn)角度是270度,其中對(duì)塊(122)應(yīng)用移位向量包括,生成關(guān)于塊n的已移位的錨位置,其具有坐標(biāo)(Xdn,Ydn),并且其中Xdn=-Yn+Xc+Yc;且Ydn=Xn-Xc+Yc。
10.權(quán)利要求1的方法,其中每個(gè)塊(122)被設(shè)置為矩形像素陣列。
11.權(quán)利要求10的方法,其中每個(gè)塊(122)被設(shè)置為正方形像素陣列。
12.權(quán)利要求1的方法,其中多個(gè)塊(122)具有相同的尺寸。
13.權(quán)利要求1的方法,其中多個(gè)塊(122)具有不同的尺寸。
14.權(quán)利要求1的方法,其中根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)塊(122)中的圖像數(shù)據(jù)包括,使塊(122)中的圖像數(shù)據(jù)旋轉(zhuǎn)90度、180度和270度中的一個(gè)。
15.權(quán)利要求1的方法,其中根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)塊(122)中的圖像數(shù)據(jù)是使用旋轉(zhuǎn)緩沖器(44)執(zhí)行的。
16.權(quán)利要求1的方法,進(jìn)一步包括,從圖像(120)生成多個(gè)塊(122)。
17.權(quán)利要求16的方法,其中生成多個(gè)塊(122)包括確定關(guān)于每個(gè)塊(122)的錨位置。
18.權(quán)利要求16的方法,其中生成多個(gè)塊(122)進(jìn)一步包括確定關(guān)于每個(gè)塊(122)的源旋轉(zhuǎn)向量(124),其表示旋轉(zhuǎn)點(diǎn)和每個(gè)塊(122)的錨位置之間的差。
19.權(quán)利要求1的方法,其中多個(gè)塊(122)配置在有序列表(36、38)中。
20.權(quán)利要求19的方法,進(jìn)一步包括,將多個(gè)塊(122)配置為有序列表(36、38)。
21.權(quán)利要求19的方法,其中多個(gè)塊(122)配置在有序列表(36、38)中,用以使在多個(gè)塊(122)的旋轉(zhuǎn)過程中檢測(cè)到的重疊最小。
22.權(quán)利要求19的方法,進(jìn)一步包括,在將移位向量(122)應(yīng)用到塊并且旋轉(zhuǎn)塊(122)中的圖像數(shù)據(jù)之后,從有序列表(36、38)中移除該塊(122)。
23.權(quán)利要求19的方法,進(jìn)一步包括,檢測(cè)已移位的塊(122)是否將與多個(gè)塊(122)中的另一塊重疊,如果是這樣,則將重疊的塊復(fù)制到旋轉(zhuǎn)緩沖器(44)。
24.權(quán)利要求23的方法,進(jìn)一步包括,在將重疊的塊復(fù)制到旋轉(zhuǎn)緩沖器(44)之后,將移位向量應(yīng)用到該重疊的塊,用以使該重疊的塊繞旋轉(zhuǎn)點(diǎn)移位所需的角度,并且,根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)該重疊塊中的圖像數(shù)據(jù)。
25.權(quán)利要求23的方法,其中檢測(cè)已移位的塊是否將與另一塊重疊包括,檢測(cè)已移位的塊與多個(gè)塊重疊,并且其中將重疊的塊復(fù)制到旋轉(zhuǎn)緩沖器(44)包括,將多個(gè)塊復(fù)制到至少一個(gè)旋轉(zhuǎn)緩沖器(44)。
26.權(quán)利要求1的方法,進(jìn)一步包括從源存儲(chǔ)器(210)中取出塊(122);并且,將已移位的塊存儲(chǔ)到目標(biāo)存儲(chǔ)器(218)中。
27.權(quán)利要求26的方法,其中源和目標(biāo)存儲(chǔ)器(210、218)中的每一個(gè)選自包括幀緩沖器(42)和外部存儲(chǔ)器(16)的組中。
28.權(quán)利要求26的方法,其中源和目標(biāo)存儲(chǔ)器(210、218)是不同的存儲(chǔ)器。
28.權(quán)利要求26的方法,其中源和目標(biāo)存儲(chǔ)器(210、218)是相同的存儲(chǔ)器。
30.權(quán)利要求1的方法,其中多個(gè)塊(122)定義了關(guān)于圖像(120)的非矩形邊界。
31.權(quán)利要求1的方法,其中圖像(120)包括至少一個(gè)對(duì)象,并且其中多個(gè)塊(122)與該對(duì)象的第一視圖相關(guān)。
32.權(quán)利要求1的方法,進(jìn)一步包括,回填塊(122)的原始位置。
33.權(quán)利要求1的方法,進(jìn)一步包括將每個(gè)塊(122)的圖像數(shù)據(jù)裝載到旋轉(zhuǎn)緩沖器(44)中;并且,僅在與該塊(122)重疊的每個(gè)塊的圖像數(shù)據(jù)已裝載到旋轉(zhuǎn)緩沖器(44)中之后,將來自旋轉(zhuǎn)緩沖器(44)的關(guān)于塊(122)的圖像數(shù)據(jù)寫入到目標(biāo)存儲(chǔ)器(218)中。
34.一種旋轉(zhuǎn)圖像數(shù)據(jù)的方法,該方法包括旋轉(zhuǎn)來自待旋轉(zhuǎn)的圖像(120)中的多個(gè)圖像數(shù)據(jù)塊(122)中的第一塊(122);確定已旋轉(zhuǎn)的第一塊是否與多個(gè)塊(122)中的另一塊重疊;如果已旋轉(zhuǎn)的第一塊與另一塊(122)重疊,則在將已旋轉(zhuǎn)的第一塊存儲(chǔ)到幀緩沖器(42)中之前,將重疊的塊復(fù)制到旋轉(zhuǎn)緩沖器(44)中;在將該重疊塊存儲(chǔ)到旋轉(zhuǎn)緩沖器(44)中之后,旋轉(zhuǎn)該重疊的塊;并且,將已旋轉(zhuǎn)的重疊塊存儲(chǔ)到幀緩沖器(42)中。
35.權(quán)利要求34的方法,其中多個(gè)塊(122)配置在有序列表(36、38)中,該方法進(jìn)一步包括,在將已旋轉(zhuǎn)的第一塊存儲(chǔ)到幀緩沖器(42)中之后,從有序列表(36、38)中移除該第一塊(122)。
36.一種裝置,包括存儲(chǔ)器(16),其被設(shè)置用于存儲(chǔ)定義了圖像(120)的多個(gè)圖像數(shù)據(jù)塊(122);和電路配置(14、22),其耦合到存儲(chǔ)器(16),并且被設(shè)置用于通過將移位向量應(yīng)用到塊(122),使多個(gè)塊(122)中的每個(gè)塊(122)繞旋轉(zhuǎn)點(diǎn)移位所需的角度,并且根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)每個(gè)塊(122)中的圖像數(shù)據(jù)。
37.權(quán)利要求36的裝置,其中旋轉(zhuǎn)點(diǎn)對(duì)于多個(gè)塊(122)是公共的,并且其中電路配置(14、22)被設(shè)置用于通過這樣的方法應(yīng)用移位向量,即生成表示旋轉(zhuǎn)點(diǎn)到塊(122)的錨位置之間距離的源旋轉(zhuǎn)向量(124)、基于與所需旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量和源旋轉(zhuǎn)向量(124)之間的差生成移位向量;以及通過對(duì)塊(122)的錨位置與移位向量求和,生成關(guān)于塊(122)的已移位的錨位置。
38.權(quán)利要求37的裝置,其中旋轉(zhuǎn)點(diǎn)具有坐標(biāo)(Xc,Yc),其中來自多個(gè)塊(122)的塊n的錨位置具有坐標(biāo)(Xn,Yn),其中關(guān)于塊n的源旋轉(zhuǎn)向量具有坐標(biāo)(XSn,YSn),并且其中XSn=Xn-Xc;且YSn=Y(jié)n-Yc;其中從包括90、180、270度的組中選擇旋轉(zhuǎn)角度,其中與90度旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量等于(YSn,-XSn),其中與180度旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量等于(-XSn,-YSn),且其中與270度旋轉(zhuǎn)角度相關(guān)的目標(biāo)旋轉(zhuǎn)向量等于(-YSn,XSn)。
39.權(quán)利要求36的裝置,其中每個(gè)塊(122)被設(shè)置為矩形像素陣列。
40.權(quán)利要求36的裝置,其中電路配置(14、22)被設(shè)置用于通過使塊(122)中的圖像數(shù)據(jù)旋轉(zhuǎn)90度、180度和270度中的一個(gè),根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)該塊中的圖像數(shù)據(jù)。
41.權(quán)利要求36的裝置,其中電路配置(14、22)包括旋轉(zhuǎn)緩沖器(44),其被設(shè)置用于旋轉(zhuǎn)塊(122)中的圖像數(shù)據(jù)。
42.權(quán)利要求36的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于從圖像(120)中生成多個(gè)塊(122),并且確定關(guān)于每個(gè)塊(122)的錨位置。
43.權(quán)利要求42的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于確定關(guān)于每個(gè)塊(122)的源旋轉(zhuǎn),其表示旋轉(zhuǎn)點(diǎn)和每個(gè)塊(122)的錨位置之間的差。
44.權(quán)利要求36的裝置,其中多個(gè)塊(122)配置在有序列表(36、38)中。
45.權(quán)利要求44的裝置,其中多個(gè)塊(122)配置為有序列表(36、38),用以使多個(gè)塊(122)的旋轉(zhuǎn)過程中檢測(cè)到的重疊最小。
46.權(quán)利要求44的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于在將移位向量應(yīng)用到塊(122)、并且旋轉(zhuǎn)塊(122)中的圖像數(shù)據(jù)之后,從有序列表(36、38)中移除該塊(122)。
47.權(quán)利要求44的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于檢測(cè)已移位的塊(122)是否與多個(gè)塊(122)中的另一塊(122)重疊,如果是這樣,則將重疊的塊復(fù)制到旋轉(zhuǎn)緩沖器(44)中。
48.權(quán)利要求47的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于將重疊塊(122)復(fù)制到旋轉(zhuǎn)緩沖器(44)中,將移位向量應(yīng)用到該重疊塊(122),用以使該重疊塊(122)繞旋轉(zhuǎn)點(diǎn)移位所需的角度,并且,根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)該重疊塊(122)中的圖像數(shù)據(jù)。
49.權(quán)利要求36的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于從存儲(chǔ)器(16)中取出塊(122),并且,將已移位的塊(122)存儲(chǔ)到不同的存儲(chǔ)器(16)中。
50.權(quán)利要求36的裝置,其中電路配置(14、22)被進(jìn)一步設(shè)置用于從存儲(chǔ)器(16)中取出塊(122),并且,將已移位的塊(122)存儲(chǔ)到該存儲(chǔ)器(16)中。
51.權(quán)利要求36的裝置,其中存儲(chǔ)器(16)選自包括幀緩沖器(42)和外部存儲(chǔ)器(16)的組中。
52.一種電路配置,包括旋轉(zhuǎn)緩沖器(44);和電路(14、22),其耦合到旋轉(zhuǎn)緩沖器(44),并且被設(shè)置用于通過這樣的方法旋轉(zhuǎn)圖像(120),即,對(duì)于定義圖像(120)的多個(gè)圖像數(shù)據(jù)塊(122)中的每一個(gè),將關(guān)于塊(122)的圖像數(shù)據(jù)取回到旋轉(zhuǎn)緩沖器(44)中,將移位向量應(yīng)用到塊(122),用以使塊(122)繞旋轉(zhuǎn)點(diǎn)移位所需的角度,并且根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)該旋轉(zhuǎn)緩沖器(44)中的圖像數(shù)據(jù)。
53.權(quán)利要求52的電路配置,其中電路(14、22)包括處理器(10)和程序代碼(28),該程序代碼(28)被設(shè)置用于在處理器(10)上執(zhí)行以將移位向量應(yīng)用到該塊,并且啟動(dòng)旋轉(zhuǎn)緩沖器(44)中的圖像數(shù)據(jù)旋轉(zhuǎn)。
54.一種集成電路,包括權(quán)利要求52的電路配置。
55.一種程序產(chǎn)品,包括硬件定義程序,其定義了權(quán)利要求52的電路配置;和信號(hào)承載介質(zhì),其承載硬件定義程序,其中信號(hào)承載介質(zhì)包括可記錄介質(zhì)和傳輸介質(zhì)中的至少一個(gè)。
全文摘要
一種裝置、程序產(chǎn)品和方法,使用基于塊的方法來旋轉(zhuǎn)圖像數(shù)據(jù),其中對(duì)于定義了圖像(120)的多個(gè)圖像數(shù)據(jù)塊(122)中的每一個(gè),對(duì)該塊(122)應(yīng)用移位向量,用以使該塊(122)繞旋轉(zhuǎn)點(diǎn)移位所需的旋轉(zhuǎn)角度,例如,使該塊(122)的錨位置自源點(diǎn)移位至目標(biāo)點(diǎn)。此外,根據(jù)所需的旋轉(zhuǎn)角度旋轉(zhuǎn)該塊(122)中的圖像數(shù)據(jù),由此當(dāng)已旋轉(zhuǎn)的圖像數(shù)據(jù)存儲(chǔ)在塊的目標(biāo)點(diǎn)時(shí),該塊(122)中的圖像數(shù)據(jù)有效地旋轉(zhuǎn)至所需的位置。
文檔編號(hào)G06T3/60GK1685363SQ03822120
公開日2005年10月19日 申請(qǐng)日期2003年9月12日 優(yōu)先權(quán)日2002年9月18日
發(fā)明者K·洛克, J·萊曼 申請(qǐng)人:皇家飛利浦電子股份有限公司