專利名稱:帶圖像旋轉(zhuǎn)的嵌入式裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的各方面涉及數(shù)字圖像操縱。其它方面涉及用于在例如移動(dòng)電話的嵌入式裝置中旋轉(zhuǎn)數(shù)字圖像的工具。
背景技術(shù):
數(shù)字圖像操縱可涉及對(duì)數(shù)字圖像執(zhí)行的許多不同類型的修改和變換。數(shù)字圖像操縱技術(shù)的實(shí)例包括旋轉(zhuǎn)、放大、收縮、扭曲、邊緣檢測(cè)和過濾。
在某些應(yīng)用中,例如旋轉(zhuǎn)的圖像操縱操作可幫助用戶從某一視角理解圖像,或可將圖像定向以用于特定用途。在其它應(yīng)用中,可執(zhí)行數(shù)字圖像操縱(包括旋轉(zhuǎn))以用于娛樂目的。數(shù)字圖像操縱技術(shù)還用于產(chǎn)業(yè)中,用于多種應(yīng)用中,所述應(yīng)用包括圖案識(shí)別、特征提取(例如,在視頻監(jiān)視和人物動(dòng)作分析中)、圖像恢復(fù)、圖像增強(qiáng)、針對(duì)計(jì)算機(jī)動(dòng)畫序列的扭曲/變形,和生物醫(yī)學(xué)圖像處理。
多種數(shù)字圖像操縱技術(shù)以相片編輯軟件的形式市售。例如數(shù)碼相機(jī)和移動(dòng)電話的嵌入式裝置也具有數(shù)字圖像操縱功能。
發(fā)明內(nèi)容
一種嵌入式裝置的一個(gè)實(shí)施例包含旋轉(zhuǎn)角度界定機(jī)構(gòu)和旋轉(zhuǎn)機(jī)構(gòu)。所述旋轉(zhuǎn)角度界定機(jī)構(gòu)適于界定圖像的任意旋轉(zhuǎn)角度。所述旋轉(zhuǎn)機(jī)構(gòu)適于使用所述任意角度且僅使用整數(shù)算法來將旋轉(zhuǎn)變換角度應(yīng)用于所述圖像,使得將所述圖像內(nèi)的像素映射到旋轉(zhuǎn)的位置。
將參看以下圖式來描述實(shí)施例,其中在所有圖式中,相同標(biāo)號(hào)表示相同項(xiàng)目,且圖式中圖1是能夠執(zhí)行旋轉(zhuǎn)圖像變換的示范性嵌入式裝置的方框圖;
圖2是旋轉(zhuǎn)之前圖像的示意圖,其說明坐標(biāo)系統(tǒng)和旋轉(zhuǎn)角度;圖3是坐標(biāo)平面的圖,其說明在第一情況下將任意輸入的旋轉(zhuǎn)角度映射到0與90度之間的角度;圖4是坐標(biāo)平面的圖,其說明在第二情況下將任意輸入的旋轉(zhuǎn)角度映射到0與90度之間的角度;圖5是坐標(biāo)平面的圖,其說明在第三情況下將任意輸入的旋轉(zhuǎn)角度映射到0與90度之間的角度;圖6是坐標(biāo)平面的圖,其說明在第四情況下將任意輸入的旋轉(zhuǎn)角度映射到0與90度之間的角度;圖7是能夠使用整數(shù)算法執(zhí)行旋轉(zhuǎn)變換的示范性嵌入式裝置的方框圖;圖8是執(zhí)行旋轉(zhuǎn)變換的示范性方法的流程圖;和圖9是對(duì)具有適于執(zhí)行旋轉(zhuǎn)的數(shù)碼相機(jī)的移動(dòng)電話的說明。
具體實(shí)施例方式
圖1是示范性嵌入式裝置10的方框圖,在所說明的實(shí)施例中,所述示范性嵌入式裝置10包含無線移動(dòng)通信裝置。所說明的嵌入式裝置10包含系統(tǒng)總線14;裝置存儲(chǔ)器16(其為所說明的裝置10中的主存儲(chǔ)器),其通過系統(tǒng)總線14連接到嵌入式裝置10的其它部分并可由所述其它部分存??;和硬件實(shí)體18,其連接到系統(tǒng)總線14。硬件實(shí)體18中的至少某些實(shí)體執(zhí)行涉及存取和使用主存儲(chǔ)器16的動(dòng)作。硬件實(shí)體18可包括微處理器、ASIC和其它硬件。
圖形實(shí)體20連接到系統(tǒng)總線14。圖形實(shí)體20可包含一較大集成系統(tǒng)(例如,芯片上系統(tǒng)(SoC))的核心或部分,或其可包含例如圖形加速器的圖形芯片。在所說明的實(shí)施例中,圖形實(shí)體20包含圖形管線(未圖示)、圖形時(shí)鐘23、緩沖器22和總線接口19,所述總線接口19用以使圖形實(shí)體20與系統(tǒng)總線14介接。
緩沖器22保存由圖形實(shí)體20在每一像素處理中使用的數(shù)據(jù)。緩沖器22提供像素相關(guān)數(shù)據(jù)(例如,來自主存儲(chǔ)器16內(nèi)的緩沖器(未圖示)的像素信息)的本地存儲(chǔ)。
在所說明的實(shí)施例中,圖形實(shí)體20還包括角度確定機(jī)構(gòu)24和旋轉(zhuǎn)變換機(jī)構(gòu)26。角度確定機(jī)構(gòu)24耦合到裝置10的用戶接口28。旋轉(zhuǎn)機(jī)構(gòu)26使用由角度確定機(jī)構(gòu)24提供的旋轉(zhuǎn)角度對(duì)圖像執(zhí)行旋轉(zhuǎn)變換。盡管在所說明的實(shí)施例中圖形實(shí)體20執(zhí)行變換功能,但在其它實(shí)施例中,那些功能可由其它硬件18執(zhí)行。
圖2是圖像50的示意說明。圖像50具有寬度W和高度H。在大多數(shù)數(shù)字圖像操縱方法中,以像素為單位來表達(dá)所述寬度W和高度H,但可使用其它度量單位。圖像50的高度H沿著圖2中的y軸52延伸,且圖像的寬度W沿著x軸54延伸。在圖2中,如圖所示,圖像50的寬度坐標(biāo)從0延伸到W-1,且高度坐標(biāo)從0延伸到H-1。圖像50還具有旋轉(zhuǎn)中心,如坐標(biāo)(x0,y0)處所指示。
可以多種方式創(chuàng)建圖像50,所述方式包括數(shù)字?jǐn)z影、膠片攝影隨后進(jìn)行數(shù)字化、從非攝影源進(jìn)行數(shù)字化,和純數(shù)字說明/呈現(xiàn)。
如圖2中所指示,在所說明的實(shí)施例中,將使圖像50繞其中心旋轉(zhuǎn)任意旋轉(zhuǎn)角度α。所述角度α可為任何角度。在其它實(shí)施例中,可使圖像50繞并非為圖像的幾何中心的其它點(diǎn)旋轉(zhuǎn)。
通過使用一組變換函數(shù)將圖像的每一像素映射到新的旋轉(zhuǎn)位置來旋轉(zhuǎn)圖像50。對(duì)于旋轉(zhuǎn),由以下等式(1)和(2)表示所述變換函數(shù)xout=xo+(xin-xo)·cosθ-(yin-yo)·sinθ(1)yout=y(tǒng)o+(xin-xo)·sinθ+(yin-yo)·cosθ(2)其中xin和yin是輸入像素坐標(biāo),xout和yout是輸出像素坐標(biāo),θ是以弧度為單位來表達(dá)的旋轉(zhuǎn)角度,且x0和y0是旋轉(zhuǎn)中心的坐標(biāo),在這種情況下,所述旋轉(zhuǎn)中心是圖像50的中心。
等式(1)和(2)也可用矩陣形式表示為xout-xoyout-yo=cosθ-sinθsinθcosθ·xin-xoyin-yo---(3)]]>如等式(3)所示,可通過執(zhí)行適當(dāng)?shù)木仃嚦朔▉碇苯佑?jì)算圖像50的輸出像素的位置。然而,如圖所示,所述計(jì)算使用旋轉(zhuǎn)角度的正弦和余弦值。在某些實(shí)施例中,可使用(例如)查找表(LUT)來存儲(chǔ)并檢索正弦和余弦值。然而,具有用以處理任意指定的旋轉(zhuǎn)角度的充分?jǐn)?shù)目的正弦和余弦值的LUT可能需要大量的存儲(chǔ)器或存儲(chǔ)空間。在嵌入式裝置上可能不能獲得或不需要大量空間。
因此,在所說明的實(shí)施例中,計(jì)算旋轉(zhuǎn)角度的正弦和余弦函數(shù)值。執(zhí)行旋轉(zhuǎn)運(yùn)算的第一任務(wù)是將輸入的所需的旋轉(zhuǎn)角度(角度α)映射到范圍在0度與90度之間的旋轉(zhuǎn)角度(角度β)。因?yàn)檫@利用了正弦和余弦函數(shù)的周期性,所以簡(jiǎn)化了計(jì)算。
在此實(shí)施例中,當(dāng)將角度α轉(zhuǎn)換為范圍在0與90度之間的角度β時(shí)要考慮四種情況。圖3說明展示第一情況的坐標(biāo)平面,其中角度α在0與90度之間。圖4說明展示第二情況的坐標(biāo)平面,其中角度α在90與180度之間。在那種情況下,角度β被設(shè)定為等于180減去α。圖5說明展示第三情況的坐標(biāo)平面,其中角度α在180與270度之間。在那種情況下,角度β被設(shè)定為等于α減去180。在圖6的坐標(biāo)平面中所示的第四情況下,角度β被設(shè)定為等于360減去α。如果角度α大于360度,那么將重復(fù)地從角度α中減去360,直到α在0與360度之間的范圍內(nèi)為止。對(duì)于是360的倍數(shù)的角度來說,旋轉(zhuǎn)圖像等同于原始圖像。
通過將輸入角度α映射到角度β,正弦和余弦關(guān)系變?yōu)槿绻?°≤α<90°,那么β=α且sinα=sinβcosα=cosβ---(4)]]>如果90°≤α<180°,那么β=180°-α且 如果180°≤α<270°,那么β=α-180°且 如果270°≤α<360°,那么β=360°-α且 在所說明的實(shí)施例中,使用泰勒級(jí)數(shù)(Taylor series)來近似正弦和余弦函數(shù)值。對(duì)于正弦函數(shù),泰勒級(jí)數(shù)展開式為sinθ=θ-13!θ3+15!θ5-17!θ7+···---(8),]]>且對(duì)于余弦函數(shù),泰勒級(jí)數(shù)展開式為cosθ=1-12!θ2+14!θ4-16!θ6+···---(9),]]>其中θ是轉(zhuǎn)換為弧度單位的角度β。如在使用泰勒級(jí)數(shù)的任何情況中,當(dāng)添加更多的項(xiàng)時(shí),近似會(huì)變得更精確。然而,所使用的泰勒級(jí)數(shù)的項(xiàng)越多,過程的計(jì)算量就越大。另外,泰勒級(jí)數(shù)的連續(xù)項(xiàng)將不斷變小的精度量添加到最終結(jié)果。因此,用于計(jì)算冪函數(shù)的泰勒級(jí)數(shù)的項(xiàng)數(shù)將取決于所需的精度以及可用的計(jì)算能力。
正弦和余弦值的精度量以及相應(yīng)的用于特定應(yīng)用中的泰勒級(jí)數(shù)的項(xiàng)數(shù)可變化。在某些顯示器應(yīng)用中,可能不需要很大的精度,而在圖像分析或其它高性能應(yīng)用中,可能需要大量精度。一種決定使用多少項(xiàng)的方法是設(shè)定一精度閾值,例如,近似的正弦和余弦值必須在實(shí)際值的5%內(nèi),且接著求得產(chǎn)生所需精度級(jí)的每一函數(shù)的泰勒級(jí)數(shù)的項(xiàng)數(shù)。在所說明的實(shí)施例中,不同的泰勒級(jí)數(shù)項(xiàng)數(shù)用于不同的角度。也就是說,使用以下等式(10)和(11)計(jì)算所說明的實(shí)施例中的正弦和余弦值
如等式(10)和(11)中所示,當(dāng)角度β增加超過40度時(shí),用于近似正弦和余弦函數(shù)的項(xiàng)數(shù)從兩項(xiàng)增加到四項(xiàng),因?yàn)樵谒f明的實(shí)施例中發(fā)現(xiàn),對(duì)于小于40度的角度來說,兩個(gè)泰勒級(jí)數(shù)項(xiàng)足以將函數(shù)近似到5%的精度內(nèi),但兩項(xiàng)級(jí)數(shù)的精度減小超過40度。其它實(shí)施例可使用不同的閾值。
可實(shí)施所說明的圖像旋轉(zhuǎn)方法以在具有有限能力的計(jì)算系統(tǒng)(例如,整數(shù)微處理器)上運(yùn)行。整數(shù)微處理器一般用于移動(dòng)裝置上,例如移動(dòng)電話、具有數(shù)碼相機(jī)的移動(dòng)電話,和其它便攜式計(jì)算裝置。雖然整數(shù)微處理器通常包括浮點(diǎn)(即,十進(jìn)制)數(shù)學(xué)仿真程序,但使用所述仿真程序可能消耗更多的時(shí)間,且計(jì)算量更大??墒褂谜麛?shù)算法來實(shí)施變換。
當(dāng)使用等式(10)和(11)的泰勒級(jí)數(shù)近似在整數(shù)微處理器上實(shí)施例如等式(1)和(2)的變換等式以計(jì)算正弦和余弦函數(shù)時(shí),要考慮兩個(gè)因素僅使用具有精度的整數(shù)算法來計(jì)算那些等式;和對(duì)運(yùn)算進(jìn)行排序,以避免整數(shù)溢出(integer overflow)(即,其中所計(jì)算的數(shù)字超過微處理器可處理的最大整數(shù)的情形)。
圖7是適于使用整數(shù)算法執(zhí)行上文所述的變換的示范性嵌入式裝置70的方框圖。嵌入式裝置70包括主存儲(chǔ)器16,其連接到系統(tǒng)總線14;圖形實(shí)體76,其通過接口19連接到系統(tǒng)總線14;和整數(shù)微處理器71,其連接到系統(tǒng)總線14。嵌入式裝置70還包括連接到微處理器的旋轉(zhuǎn)運(yùn)算促進(jìn)程序(rotation operations facilitator)72。整數(shù)運(yùn)算促進(jìn)程序74包括在旋轉(zhuǎn)運(yùn)算促進(jìn)程序72內(nèi)。
旋轉(zhuǎn)運(yùn)算促進(jìn)程序72使用等式(10)和(11)的近似來計(jì)算等式(1)和(2)的正弦和余弦函數(shù),且執(zhí)行其它旋轉(zhuǎn)運(yùn)算。整數(shù)運(yùn)算促進(jìn)程序74確保以避免整數(shù)溢出的計(jì)算次序使用整數(shù)算法執(zhí)行所有必要的計(jì)算。下文將更詳細(xì)地描述組件72、74的操作和所執(zhí)行的計(jì)算。例如裝置70的嵌入式裝置的優(yōu)勢(shì)在于,不使用浮點(diǎn)仿真程序,這使得變換在整數(shù)微處理器71上更有效。可在硬件中、在軟件中,在硬件和軟件的某一組合中,或以與嵌入式裝置70兼容的任何其它方式實(shí)施旋轉(zhuǎn)運(yùn)算促進(jìn)程序72和整數(shù)運(yùn)算促進(jìn)程序74。
等式(10)和(11)不嚴(yán)格含有整數(shù)項(xiàng),但那些等式的項(xiàng)可經(jīng)轉(zhuǎn)換,使得可使用整數(shù)算法執(zhí)行計(jì)算。舉例來說,可將 首先計(jì)算為實(shí)數(shù),接著乘以210=1024,且最后四舍五入為整數(shù)。因此, 可被轉(zhuǎn)換為13!·210=(0.16667)·1024=171.]]>可使用 的此新的整數(shù)表示形式來計(jì)算中間的算法運(yùn)算。在所有中間運(yùn)算都完成后,可通過除以210來獲得最終結(jié)果。這種技術(shù)在中間整數(shù)算法運(yùn)算期間保留了精度。類似地,可以相同方式將例如 的其它非整數(shù)項(xiàng)轉(zhuǎn)換為整數(shù),以使用純整數(shù)算法獲得精確的結(jié)果。一般來說,使用二的較大的冪來維持合理數(shù)目的有效數(shù)字,這有助于維持精度。然而,如果需要較小的精度,那么可將二的較小的冪用作乘數(shù)。另外,盡管其它整數(shù)的冪可用作乘數(shù),但使用二的冪允許使用較快的移位運(yùn)算,而不是相對(duì)較慢的乘法運(yùn)算。
作為一個(gè)實(shí)施實(shí)例,以下代碼說明在32位整數(shù)微處理器上實(shí)施所描述的旋轉(zhuǎn)方法<pre listing-type="program-listing">uint32 w,h,beta,radian;int8 sinSign,cosSign;int32 xin,yin,xout,yout,xo,yo,sintheta,costheta;xo=w>>1;yo=h>>1;sinSign=1;cosSign=1;/*angle is an int32 input parameter indicating the rotation angle*/while(angle<0){angle+=360;}angle%=360;/*map angle to range
degrees*/if(angle<=90){ beta=angle;}else if(angle<=180){ beta=180-angle; cosSign=-1;}else if(angle<=270){beta=angle-180;sinSign=-1;cosSign=-1;</pre><pre listing-type="program-listing"> }else{ beta=360-angle; sinSign=-1; } /*convert angle to radians*2^9*/ radian=beta*9; /*calculate sin and cos*/ if(radian<=360){ /*beta<=40 degrees*/ sintheta=((radian*(262144-(radian*radian)/6))>>8)*sinSign; costheta=(524288-radian*radian)*cosSign; }else{ if(radian==810){ /*beta=90 degrees*/ sintheta=524288*sinSign; costheta=0; }else{ /*40<beta<90*/ sintheta=(((radian*(262144-(radian*radian)/6))>>8)+ (((((((((radian*radian*radian)/120)>>3)* radian)>>10)*radian)/42)*((11010048- radian*radian)>>10))>>21))*sinSign; costheta=((524288-radian*radian)+ (((((((radian*radian*radian)/24)>>3) *radian/30)>>10)*((7864320- radian*radian)>>10))>>12))*cosSign; } } /*for each output pixel,map to the corresponding input pixel*/ xin=xo+(((xout-xo)*costheta+(yout-yo)*sintheta)>>19); yin=y(tǒng)o+(((xo-xout)*sintheta+(yout-yo)*costheta)>>19);</pre>在上述代碼中,變量w是圖像寬度,變量h是圖像高度,且angle是被作為32位整數(shù)被存儲(chǔ)的旋轉(zhuǎn)角度。上述代碼片斷以C編程語(yǔ)言描述,但可用C++、Java、J++、匯編語(yǔ)言,或能夠執(zhí)行所述命令的任何其它編程語(yǔ)言來實(shí)施此處描述的旋轉(zhuǎn)方法的其它實(shí)施例。為了促進(jìn)實(shí)時(shí)性能,在所示的實(shí)施例中,例如,沒有使用大于微處理器的32位能力的整數(shù)。以上代碼中的運(yùn)算次序使得計(jì)算中沒有整數(shù)將大于32位。盡管此處針對(duì)32位微處理器實(shí)施,但也可針對(duì)其它微處理器(包括64和128位微處理器)以及在能夠執(zhí)行所述計(jì)算的任何其它計(jì)算裝置(例如,ASIC)上實(shí)施這些旋轉(zhuǎn)方法。盡管依據(jù)整數(shù)微處理器進(jìn)行描述,但本文所述的旋轉(zhuǎn)運(yùn)算也可在能夠進(jìn)行浮點(diǎn)運(yùn)算的微處理器上執(zhí)行。
在圖8的流程圖中展示執(zhí)行旋轉(zhuǎn)變換的更一般的方法100。方法100在動(dòng)作102處開始處理輸入圖像,且繼續(xù)動(dòng)作104。在動(dòng)作104處,方法100獲得旋轉(zhuǎn)角度α。獲得旋轉(zhuǎn)角度α的方式取決于執(zhí)行方法100的平臺(tái)上可用的用戶接口類型。在某些實(shí)施例中,用戶可使用數(shù)字鍵擊來輸入角度。在其它實(shí)施例中,用戶可使用非數(shù)字的鍵的某一組合來指示旋轉(zhuǎn)角度。或者,如果方法100被實(shí)施為對(duì)許多圖像執(zhí)行相同旋轉(zhuǎn)變換的方法,那么可將角度α編碼在用于執(zhí)行所述方法的指令中,在此情況下,動(dòng)作104可包含從存儲(chǔ)裝置中檢索α。一旦已獲得角度α,方法100就繼續(xù)動(dòng)作106。
在動(dòng)作106中,角度α如上文所述被映射到范圍在0與90度之間的角度β。一旦完成動(dòng)作106,方法100就繼續(xù)S108,在S108中使用適當(dāng)?shù)奶├占?jí)數(shù)近似來計(jì)算角度β的正弦和余弦函數(shù)。在計(jì)算了角度的正弦和余弦函數(shù)后,方法100繼續(xù)動(dòng)作110,在動(dòng)作110中選擇輸入圖像中的像素。一旦選擇了像素,就執(zhí)行動(dòng)作112,在動(dòng)作112中計(jì)算輸出像素的位置。方法100的控制接著進(jìn)行到動(dòng)作114,在動(dòng)作114中確定是否需要處理額外的輸入像素。如果需要處理額外的輸入像素(114是),那么方法100的控制返回動(dòng)作110,且繼續(xù)輸入像素的處理。當(dāng)不再有像素仍需變換時(shí)(114否),方法100的控制進(jìn)行到動(dòng)作116,在動(dòng)作116中方法終止并返回。在方法100完成并返回后,可執(zhí)行對(duì)于(例如)輸出最終的旋轉(zhuǎn)圖像有用的任何額外的任務(wù)。
圖9說明在繞圖像的幾何中心逆時(shí)針旋轉(zhuǎn)之后,顯示在移動(dòng)電話的屏幕上的圖像。在圖9的圖像的原始尺寸外部的經(jīng)變換圖像的像素區(qū)域被剪去,且圖像的未使用區(qū)域具有黑色像素值。在其它實(shí)施例中,可重新調(diào)整圖像的大小,使得原始圖像中出現(xiàn)的每個(gè)像素也出現(xiàn)在旋轉(zhuǎn)圖像中。可賦予旋轉(zhuǎn)圖像中的未使用像素非黑色的色彩或特性,且如果使用支持像素透明度的圖像格式,那么那些像素可被指示為透明的。
在以上描述內(nèi)容的某些部分中,已假設(shè)待旋轉(zhuǎn)的圖像為RGB(紅-綠-藍(lán))格式,其中每個(gè)圖像像素具有針對(duì)所述像素的紅色內(nèi)容的值,針對(duì)綠色內(nèi)容的值和針對(duì)藍(lán)色內(nèi)容的值。然而,所說明的變換方法可在不首先轉(zhuǎn)換為RGB的情況下直接用于其它圖像格式上。這是有利的,因?yàn)楸M管RGB格式的圖像相對(duì)易于操縱,但它們更難以壓縮,且一般消耗更多的存儲(chǔ)空間。
兩種其它普通的圖像格式是YCbCr和YCrCb。而在RGB圖像中,數(shù)據(jù)依據(jù)每一像素的紅、綠和藍(lán)色彩值而存儲(chǔ),YCbCr和YCrCb格式通過紀(jì)錄每一像素的亮度(Y)和色度(Cb、Cr)值來存儲(chǔ)圖像數(shù)據(jù)。YCbCr和YCrCb格式是比較流行的,因?yàn)樗鼈冇糜谄胀ǖ腏PEG圖片文件格式中。
如果在例如數(shù)碼相機(jī)的便攜式嵌入式裝置上實(shí)施例如旋轉(zhuǎn)的圖像變換,那么對(duì)RGB、YCbCr和YCrCb圖像進(jìn)行操作的能力是有利的,因?yàn)樗腥N格式均可用于數(shù)碼相機(jī)中。這是由于數(shù)字圖像被創(chuàng)建和處理的方式所致。
舉例來說,大多數(shù)數(shù)碼相機(jī)圖像傳感器包含僅對(duì)紅、綠或藍(lán)光中的一者而不是對(duì)所有三種色彩的光敏感的個(gè)別傳感器單元。因此,個(gè)別單元通常以被稱為Bayer圖案的圖案排列,其中對(duì)綠色敏感的單元分散在對(duì)紅色和藍(lán)色敏感的單元之中,并與其交替。在消費(fèi)型產(chǎn)品中,綠色單元一般起支配作用,因?yàn)槿祟惖囊曈X系統(tǒng)對(duì)綠色較為敏感,且包含更多的綠色單元往往會(huì)增加感知到的圖像質(zhì)量。在一個(gè)典型的Bayer圖案中,16個(gè)單元的陣列可能包括8個(gè)綠色單元、4個(gè)紅色單元和4個(gè)藍(lán)色單元,其大致排列成棋盤圖案。當(dāng)由使用呈Bayer圖案的單色單元的數(shù)碼相機(jī)拍攝圖像時(shí),原始圖像通常被內(nèi)插,使得每一像素具有紅值、綠值和藍(lán)值,且至少在處理的中間階段被存儲(chǔ)為RGB圖像。所述圖像可進(jìn)一步被轉(zhuǎn)換為YCbCr或YCrCb以供存儲(chǔ)。
盡管可通過應(yīng)用上文描述的旋轉(zhuǎn)變換方法直接處理YCbCr和YCrCb格式的圖像,但存在可能(例如)對(duì)經(jīng)二次取樣的YCbCr和YCrCb圖像執(zhí)行額外的任務(wù)的某些情形。在經(jīng)二次取樣的圖像中,某些色度值被丟棄或經(jīng)二次取樣以縮減文件的大小。舉例來說,像素列以普通的H2V1 YCbCr 4:2:2格式被進(jìn)行二次取樣,但像素行不受影響。在此二次取樣方案中,如果從零開始對(duì)列進(jìn)行編號(hào),那么僅偶數(shù)列具有Cb分量,且僅奇數(shù)列具有Cr分量。另一經(jīng)二次取樣的格式是YCbCr 4:2:0格式,其中每一2×2像素陣列共享單一的Cb值和單一的Cr值。YCrCb格式一般與YCbCr相同,只是Cb和Cr值的次序被顛倒。
上文描述的變換方法可直接應(yīng)用于經(jīng)二次取樣的YCrCb和YCbCr格式,但這樣做可能不會(huì)產(chǎn)生具有正確交替的Cb和Cr分量的最終圖像。為了克服此問題,可通過考慮相鄰的像素對(duì)并復(fù)制適當(dāng)?shù)腃b和Cr值,使得每一像素均具有Cb和Cr值,而從經(jīng)二次取樣的圖像中創(chuàng)建臨時(shí)的未經(jīng)二次取樣的圖像(YCrCb 4:4:4和YCbCr 4:4:4)。接著將上文描述的變換方法應(yīng)用于所述臨時(shí)的未經(jīng)二次取樣的圖像以產(chǎn)生臨時(shí)的未經(jīng)二次取樣的輸出圖像。變換之后,丟棄經(jīng)二次取樣的輸出圖像中的額外的Cb和Cr值。由發(fā)明者執(zhí)行的測(cè)試展示在RGB圖像的處理與YCrCb和YCbCr格式的相同圖像的處理之間沒有視覺上可感知到的差異。
圖9展示具有數(shù)碼相機(jī)202的移動(dòng)電話200的實(shí)施例。移動(dòng)電話和數(shù)碼相機(jī)每一者都是嵌入式裝置類型。移動(dòng)電話200和其數(shù)碼相機(jī)202包括用于執(zhí)行本文所述的圖像變換的機(jī)構(gòu)。在典型的使用中,用戶將使用移動(dòng)電話200的數(shù)碼相機(jī)202來拍攝數(shù)字圖片,且接著將使用移動(dòng)電話200的處理能力來執(zhí)行旋轉(zhuǎn)。如圖9中所示,數(shù)碼相機(jī)204顯示在移動(dòng)電話200的顯示屏幕206上。顯示屏幕206可(例如)為相對(duì)較小的液晶顯示器。如圖所示,圖像204已被逆時(shí)針旋轉(zhuǎn)。臨時(shí)覆蓋在圖像204上的覆蓋圖或下拉菜單214可提供用于進(jìn)行額外旋轉(zhuǎn)的指令。舉例來說,用戶可被指示使用移動(dòng)電話204的箭頭鍵210來增加或減小旋轉(zhuǎn)角度。每一按鍵可經(jīng)編程以與旋轉(zhuǎn)角度增加或減小1或2度相對(duì)應(yīng)。當(dāng)改變旋轉(zhuǎn)角度時(shí),以新的旋轉(zhuǎn)角度重復(fù)變換。新的旋轉(zhuǎn)角度可以是相對(duì)于圖像的當(dāng)前位置或相對(duì)于其初始位置而給定的旋轉(zhuǎn)角度。用戶也可使用數(shù)字鍵212來指定旋轉(zhuǎn)角度。
雖然已描述某些所說明的實(shí)施例,但本文已使用的文字是描述性文字而不是限制性文字???例如)在所附權(quán)利要求書的范圍內(nèi)作出變化。
權(quán)利要求
1.一種嵌入式裝置,其包含旋轉(zhuǎn)角度界定機(jī)構(gòu),其界定圖像的旋轉(zhuǎn)角度;和旋轉(zhuǎn)機(jī)構(gòu),其使用所述角度且僅使用整數(shù)算法來將旋轉(zhuǎn)變換應(yīng)用于所述圖像,使得所述圖像內(nèi)的像素被映射到旋轉(zhuǎn)的位置。
2.根據(jù)權(quán)利要求1所述的裝置,其進(jìn)一步包含用戶接口,所述用戶接口耦合到所述旋轉(zhuǎn)角度界定機(jī)構(gòu)以獲取所述旋轉(zhuǎn)角度。
3.根據(jù)權(quán)利要求1所述的裝置,其中所述旋轉(zhuǎn)角度界定機(jī)構(gòu)適于將旋轉(zhuǎn)角度α映射到經(jīng)映射的旋轉(zhuǎn)角度β,且所述旋轉(zhuǎn)機(jī)構(gòu)在應(yīng)用所述旋轉(zhuǎn)變換時(shí)使用所述經(jīng)映射的旋轉(zhuǎn)角度。
4.根據(jù)權(quán)利要求3所述的裝置,其中所述經(jīng)映射的旋轉(zhuǎn)角度β滿足不等式0°≤B≤90°。
5.根據(jù)權(quán)利要求4所述的裝置,其中所述旋轉(zhuǎn)變換由矩陣變換表示xout-xoyout-yo=cosθ-sinθsinθcosθ·xin-xoyin-yo]]>其中xin和yin是所述圖像的像素的位置坐標(biāo),xout和yout是所述像素的旋轉(zhuǎn)的位置的位置坐標(biāo),x0和y0是所述旋轉(zhuǎn)變換的旋轉(zhuǎn)中心的位置坐標(biāo),且θ是以弧度為單位表達(dá)的所述經(jīng)映射的旋轉(zhuǎn)角度β。
6.根據(jù)權(quán)利要求5所述的裝置,其中所述旋轉(zhuǎn)角度α與所述經(jīng)映射的旋轉(zhuǎn)角度β之間的關(guān)系由以下等式表示如果0°≤α<90°,那么β=α且sinα=sinβcosα=cosβ]]>如果90°≤α<180°,那么β=180°-α且 如果180°≤α<270°,那么β=α-180°且 如果270°≤α<360°,那么β=360°-α且
7.根據(jù)權(quán)利要求5所述的裝置,其中所述旋轉(zhuǎn)機(jī)構(gòu)近似所述矩陣變換的正弦和余弦函數(shù)的值,以獲得精確到所需的精度閾值內(nèi)的值。
8.根據(jù)權(quán)利要求7所述的裝置,其中所述旋轉(zhuǎn)機(jī)構(gòu)使用一個(gè)或一個(gè)以上泰勒級(jí)數(shù)項(xiàng)正弦和余弦近似來近似所述矩陣變換的所述正弦和余弦函數(shù)的值。
9.根據(jù)權(quán)利要求8所述的裝置,其中如果所述經(jīng)映射的旋轉(zhuǎn)角度β在閾值角度以下,且所述經(jīng)映射的旋轉(zhuǎn)角度β的泰勒級(jí)數(shù)項(xiàng)的第二項(xiàng)在所述閾值角度以上,那么所述旋轉(zhuǎn)機(jī)構(gòu)使用泰勒級(jí)數(shù)項(xiàng)的第一項(xiàng)。
10.根據(jù)權(quán)利要求1所述的裝置,其中所述旋轉(zhuǎn)機(jī)構(gòu)包括整數(shù)運(yùn)算促進(jìn)程序,所述整數(shù)運(yùn)算促進(jìn)程序適于將非整數(shù)項(xiàng)轉(zhuǎn)換為整數(shù),且以防止整數(shù)溢出的計(jì)算次序來執(zhí)行計(jì)算。
11.根據(jù)權(quán)利要求1所述的裝置,其中所述嵌入式裝置是移動(dòng)電話。
12.一種用數(shù)據(jù)編碼的機(jī)器可讀媒體,所述數(shù)據(jù)可與機(jī)器共同操作以促使界定圖像的旋轉(zhuǎn)角度;和僅使用整數(shù)算法將使用所述角度的旋轉(zhuǎn)變換應(yīng)用于所述圖像,使得所述圖像內(nèi)的像素被映射到旋轉(zhuǎn)的位置。
13.根據(jù)權(quán)利要求12所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以進(jìn)一步促使映射所述旋轉(zhuǎn)角度β,且在應(yīng)用所述旋轉(zhuǎn)變換時(shí)使用所述經(jīng)映射的旋轉(zhuǎn)角度。
14.根據(jù)權(quán)利要求13所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使所述經(jīng)映射的旋轉(zhuǎn)角度β滿足不等式0°≤B≤90°。
15.根據(jù)權(quán)利要求14所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使由矩陣變換來表示所述旋轉(zhuǎn)變換xout-xoyout-yo=cosθ-sinθsinθcosθ·xin-xoyin-yo]]>其中xin和yin是所述圖像的像素的位置坐標(biāo),xout和yout是所述像素的旋轉(zhuǎn)的位置的位置坐標(biāo),x0和y0是所述旋轉(zhuǎn)變換的旋轉(zhuǎn)中心的位置坐標(biāo),且θ是以弧度為單位表達(dá)的所述經(jīng)映射的旋轉(zhuǎn)角度β。
16.根據(jù)權(quán)利要求15所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使由以下等式表示任意旋轉(zhuǎn)角度α與所述經(jīng)映射的旋轉(zhuǎn)角度β之間的關(guān)系如果0°≤α<90°,那么β=α且sinα=sinβcosα=cosβ]]>如果90°≤α<180°,那么β=180°-α且 如果180°≤α<270°,那么β=α-180°且 如果270°≤α<360°,那么β=360°-α且
17.根據(jù)權(quán)利要求15所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使近似所述矩陣變換的正弦和余弦函數(shù)的值,以獲得精確到所需的精度閾值內(nèi)的值。
18.根據(jù)權(quán)利要求17所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使使用一個(gè)或一個(gè)以上泰勒級(jí)數(shù)項(xiàng)正弦和余弦近似來近似所述矩陣變換的所述正弦和余弦函數(shù)的值。
19.根據(jù)權(quán)利要求18所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使當(dāng)所述經(jīng)映射的旋轉(zhuǎn)角度β在閾值角度以下且所述經(jīng)映射的旋轉(zhuǎn)角度β的泰勒級(jí)數(shù)項(xiàng)的第二項(xiàng)在所述閾值角度以上時(shí),使用泰勒級(jí)數(shù)項(xiàng)的第一項(xiàng)。
20.根據(jù)權(quán)利要求12所述的媒體,其中所述數(shù)據(jù)可與機(jī)器共同操作,以促使將非整數(shù)項(xiàng)轉(zhuǎn)換為整數(shù),且以防止整數(shù)溢出的計(jì)算次序來執(zhí)行計(jì)算。
21.一種設(shè)備,其包含嵌入式裝置;所述嵌入式裝置內(nèi)的裝置,其用于界定圖像的旋轉(zhuǎn)角度;和所述嵌入式裝置內(nèi)的裝置,其用于僅使用整數(shù)算法將使用所述角度的旋轉(zhuǎn)變換應(yīng)用于所述圖像,使得所述圖像內(nèi)的像素被映射到旋轉(zhuǎn)的位置。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其進(jìn)一步包含用于將旋轉(zhuǎn)角度α映射到經(jīng)映射的旋轉(zhuǎn)角度β且在應(yīng)用所述旋轉(zhuǎn)變換時(shí)使用所述經(jīng)映射的旋轉(zhuǎn)角度的裝置。
23.根據(jù)權(quán)利要求22所述的設(shè)備,其中所述旋轉(zhuǎn)變換由矩陣變換表示xout-xoyout-yo=cosθ-sinθsinθcosθ·xin-xoyin-yo]]>其中xin和yin是所述圖像的像素的位置坐標(biāo),xout和yout是所述像素的旋轉(zhuǎn)的位置的位置坐標(biāo),x0和y0是所述旋轉(zhuǎn)變換的旋轉(zhuǎn)中心的位置坐標(biāo),且θ是以弧度為單位表達(dá)的所述經(jīng)映射的旋轉(zhuǎn)角度β。
24.根據(jù)權(quán)利要求23所述的設(shè)備,其進(jìn)一步包含用于近似等式(1)的正弦和余弦函數(shù)的值的裝置。
25.根據(jù)權(quán)利要求23所述的設(shè)備,其中所述用于近似的裝置使用第一范圍的所述經(jīng)映射的旋轉(zhuǎn)角度β的第一精度級(jí)和第二范圍的所述經(jīng)映射的旋轉(zhuǎn)角度β的第二精度級(jí)來近似等式(1)的所述正弦和余弦函數(shù)的值。
26.一種移動(dòng)電話,其包含接收器/發(fā)射器組合件;微處理器;旋轉(zhuǎn)角度界定機(jī)構(gòu),其界定圖像的旋轉(zhuǎn)角度;和旋轉(zhuǎn)機(jī)構(gòu),其僅使用整數(shù)算法將使用所述角度的旋轉(zhuǎn)變換應(yīng)用于所述圖像,使得所述圖像內(nèi)的像素被映射到旋轉(zhuǎn)的位置。
27.根據(jù)權(quán)利要求26所述的移動(dòng)電話,其中所述微處理器是整數(shù)微處理器。
28.根據(jù)權(quán)利要求27所述的移動(dòng)電話,其進(jìn)一步包含鍵區(qū)和顯示屏幕。
29.根據(jù)權(quán)利要求28所述的移動(dòng)電話,其進(jìn)一步包含數(shù)碼相機(jī)。
全文摘要
一種嵌入式裝置的一個(gè)實(shí)施例包含旋轉(zhuǎn)角度界定機(jī)構(gòu)和旋轉(zhuǎn)機(jī)構(gòu)。所述旋轉(zhuǎn)角度界定機(jī)構(gòu)適于界定圖像的任意旋轉(zhuǎn)角度。所述旋轉(zhuǎn)機(jī)構(gòu)適于使用所述任意角度且僅使用整數(shù)算法來將旋轉(zhuǎn)變換角度應(yīng)用于所述圖像,以便將所述圖像內(nèi)的像素映射到旋轉(zhuǎn)的位置。
文檔編號(hào)G06F7/548GK101061703SQ200580039276
公開日2007年10月24日 申請(qǐng)日期2005年9月29日 優(yōu)先權(quán)日2004年9月29日
發(fā)明者周孟耀 申請(qǐng)人:高通股份有限公司