專(zhuān)利名稱(chēng):一種yuv420圖像轉(zhuǎn)換成rgb565圖像的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻播放領(lǐng)域,尤其涉及一種YUV420圖像轉(zhuǎn)換成RGB565圖像的方法和系統(tǒng)。
背景技術(shù):
現(xiàn)有技術(shù)中視頻解碼器直接解碼生成的YUV420圖像文件在許多移動(dòng)終端中是不能直接顯示的,必須經(jīng)過(guò)YUV420轉(zhuǎn)換成RGB565才能顯示,另外,許多的移動(dòng)終端屏幕像素與視頻圖像的尺寸不一致,導(dǎo)致移動(dòng)終端在顯示RGB565時(shí)會(huì)出現(xiàn)很多空白區(qū)域,降低了用戶的體驗(yàn)效果,例如視頻圖像的尺寸的像素為MOxlSO,而移動(dòng)終端屏幕為M0x320, 那么導(dǎo)致移動(dòng)終端在顯示RGB565格式的視頻文件時(shí)會(huì)在上、下兩端出現(xiàn)很多空白區(qū)域, 這就需要在移動(dòng)終端顯示視頻之前做縮放、旋轉(zhuǎn)、顏色轉(zhuǎn)換(即計(jì)算rgb值)的操作步驟,因YUV420圖像在做縮放、旋轉(zhuǎn)和顏色轉(zhuǎn)換時(shí),每個(gè)操作步驟都需要經(jīng)過(guò)2次循環(huán),這樣累計(jì)下來(lái)的循環(huán)次數(shù)比較多,而且每步的循環(huán)都需要重新訪問(wèn)內(nèi)存,效率低,以像素為 240xl80YUV420圖像轉(zhuǎn)換成像素為320x240RGB565圖像為例,通常需要32(^240*5/4 = 115200字節(jié)內(nèi)存。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提出一種YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,旨在解決現(xiàn)有技術(shù)中視頻解碼器直接解碼生成的YUV420圖像文件在許多移動(dòng)終端中是不能直接顯示的,必須經(jīng)過(guò)YUV420圖像轉(zhuǎn)換成RGB565圖像,而且直接轉(zhuǎn)換成RGB565圖像后在移動(dòng)終端顯示時(shí)會(huì)有空白區(qū)域,降低了用戶的體驗(yàn)效果,必須在YUV420圖像轉(zhuǎn)換成RGB565圖像之前做縮放、旋轉(zhuǎn)、顏色轉(zhuǎn)換(即計(jì)算rgb值)的操作步驟,因YUV420圖像在做縮放、旋轉(zhuǎn)和顏色轉(zhuǎn)換時(shí),每個(gè)操作步驟都需要經(jīng)過(guò)2次循環(huán),這樣累計(jì)下來(lái)的循環(huán)次數(shù)較多,訪問(wèn)內(nèi)存量增加,資源浪費(fèi),且效率低。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,包括以下步驟將原始YUV420圖像等分為至少一個(gè)原始YUV420圖像塊;并預(yù)置所述原始YUV420 圖像的水平方向和垂直方向的縮放倍數(shù);根據(jù)所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊;根據(jù)所述縮放后的YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值,根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將所述rgb值寫(xiě)入目標(biāo)地址。本發(fā)明實(shí)施例的另一目的在于提出一種YUV420圖像轉(zhuǎn)換成RGB565圖像的系統(tǒng), 所述系統(tǒng)包括所述初始模塊與所述縮放模塊相連,用于將原始YUV420圖像等分為至少一個(gè)原始YUV420圖像塊,并預(yù)置所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù);所述縮放模塊分別與所述初始模塊和所述輸出模塊相連,用于根據(jù)所述原始 YUV420圖像的水平方向和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊;所述輸出模塊與所述縮放模塊相連,用于根據(jù)所述縮放后的YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值,根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸, 確定是否旋轉(zhuǎn)并分別將所述rgb值寫(xiě)入目標(biāo)地址。本發(fā)明的有益效果通過(guò)把原始YUV420圖像等分為原始YUV420圖像塊,對(duì)原始YUV420圖像塊進(jìn)行縮放,獲取YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值(即顏色轉(zhuǎn)換),根據(jù)YUV420 圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否旋轉(zhuǎn)分別把rgb值寫(xiě)入目標(biāo)地址,從而實(shí)現(xiàn)對(duì)每個(gè)原始YUV420圖像塊連續(xù)做縮放、計(jì)算rgb值并輸出,減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始 YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性,加速內(nèi)存訪問(wèn)速度。
圖1為本發(fā)明的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法的優(yōu)選實(shí)施例中原始 YUV420圖像的結(jié)構(gòu)圖;圖2為圖1中的原始YUV420圖像塊A縮放后的YUV420圖像塊的結(jié)構(gòu)圖;圖3為圖2中縮放后的YUV420圖像塊的前兩個(gè)像素包含的4個(gè)Y分量、1個(gè)U分量和1個(gè)V分量的結(jié)構(gòu)圖;圖4為圖3中YUV420對(duì)應(yīng)的RGB565圖像塊旋轉(zhuǎn)輸出的目標(biāo)位置的結(jié)構(gòu)圖;圖5為圖3中YUV420對(duì)應(yīng)的RGB565圖像塊非旋轉(zhuǎn)輸出的目標(biāo)位置的結(jié)構(gòu)圖;圖6為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像方法的第一優(yōu)選實(shí)施例的流程圖;圖7為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像方法的第二優(yōu)選實(shí)施例的流程圖;圖8為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像系統(tǒng)的第一優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖;圖9為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像系統(tǒng)的第二優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。應(yīng)當(dāng)理解,此處所描寫(xiě)的具體實(shí)施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。本發(fā)明通過(guò)把原始YUV420圖像等分為原始YUV420圖像塊,對(duì)原始YUV420圖像塊進(jìn)行縮放,獲取YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值(即顏色轉(zhuǎn)換),根據(jù) YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否旋轉(zhuǎn)并分別將rgb值寫(xiě)入目標(biāo)地址,從而實(shí)現(xiàn)對(duì)每個(gè)原始YUV420圖像塊連續(xù)做縮放、計(jì)算rgb值并輸出(包括旋轉(zhuǎn)),減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性,加速內(nèi)存訪問(wèn)速度。實(shí)施例一圖6為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像方法的第一優(yōu)選實(shí)施例的流程圖。 所述方法包括以下步驟S601,將原始YUV420圖像等分為至少一個(gè)原始YUV420圖像塊;并預(yù)置原始 YUV420的圖像水平方向的縮放倍數(shù)h和垂直方向的縮放倍數(shù)Fy ;所述原始YUV420圖像的水平方向縮放倍數(shù)h = Ns_x/Ds_x,所述原始YUV420圖像的垂直方向縮放倍數(shù)Fy = Ns_y/Ds_y ;其中Ns_x、Ds_x、Ns_y和Ds_y都為正整數(shù)且取值滿足條件成縮放倍數(shù)關(guān)系,且為正整數(shù),同時(shí),(2*DS_X)*(NS_X/DS_X)等于縮放后的YUV420圖像塊的寬度tx,(2*Ds_ y)*(Ns_y/Ds_y)等于縮放后的YUV420圖像塊的高度ty ;基于縮放倍數(shù)和需要縮放呈現(xiàn)的效果把YUV420圖像分成至少一個(gè)YUV420圖像塊,每個(gè)YUV420圖像塊由像素組成;為便于理解,以放大2倍為例說(shuō)明,如圖1所示為原始YUV420圖像的結(jié)構(gòu)圖,原始 YUV420圖像的高度和寬度分別為H、W,原始YUV420圖像分成至少一個(gè)原始YUV420圖像塊, 如圖1中的原始YUV420圖像塊A、B、C,預(yù)置每個(gè)原始YUV420圖像塊的像素為虹4,即原始 YUV420圖像塊的高度ty和寬度tx都為4,每個(gè)圖像塊中4個(gè)Y分量對(duì)應(yīng)1個(gè)U分量和一個(gè) V 分量;預(yù)置 Ns_x = 4,Ds_x = 2,Ns_y = 4,Ds_y = 2,F(xiàn)x 和 Fy 者為 2 ;S602,根據(jù)所述預(yù)置原始YUV420圖像水平和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊;所述的插值濾波,例如把4個(gè)點(diǎn)的圖像變成8個(gè)點(diǎn)的圖像,那么每個(gè)點(diǎn)如何取值變成8個(gè)點(diǎn)效果最佳的過(guò)程叫插值濾波;為便于理解,以放大2倍為例說(shuō)明,圖2所示為原始YUV420圖像塊A縮放后的 YUV420圖像塊的結(jié)構(gòu)圖,把原始YUV420圖像塊A放大2倍后像素為8x8,如圖2所示,包括 Y分量1-64,其中縮放后的圖像塊的寬度為tx,縮放后的圖像塊的高度ty ;S603,獲取縮放后的YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值,根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將rgb值寫(xiě)入目標(biāo)地址;如果旋轉(zhuǎn),則RGB565圖像的寬度等于原始YUV420圖像塊的高度,縮放后的YUV420 圖像的高度成為RGB565圖像的寬度;所述的rgb值可以通過(guò)外部函數(shù)做顏色轉(zhuǎn)換的值,所述的外部函數(shù)為get_rgbl6_ value_clip_rgb ()。本實(shí)施例中通過(guò)把原始YUV420圖像等分為至少一個(gè)原始YUV420圖像塊,對(duì)原始 YUV420圖像塊進(jìn)行縮放,獲取YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值,根據(jù) YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否旋轉(zhuǎn)分別將rgb值寫(xiě)入目標(biāo)地址,從而實(shí)現(xiàn)對(duì)每個(gè)原始YUV420圖像塊連續(xù)做縮放、計(jì)算rgb值并輸出(包括旋轉(zhuǎn)),減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例, 達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性,加速內(nèi)存訪問(wèn)速度。
實(shí)施例二圖7為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像方法的第二優(yōu)選實(shí)施例的流程圖。 所述方法包括以下步驟S701,預(yù)置原始YUV420圖像的Y、U、V分量,原始YUV420圖像等分為至少一個(gè)的 YUV420圖像塊;預(yù)置YUV420圖像的水平方向縮放倍數(shù)h和垂直方向縮放倍數(shù)Fy ;預(yù)置縮放緩沖區(qū),用于存放縮放后的YUV420圖像塊的Y分量、U分量和V分量,分別由變量Yt、Ut 和Vt引用;預(yù)置循環(huán)變量x、y、xl、yl、i、j,初始為0 ;預(yù)置RGB565圖像的目標(biāo)地址的首地址指針rgb和當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針P,都定義為short*類(lèi)型;預(yù)置RGB565圖像塊的輸出坐標(biāo)變量x2、y2 ;所述的YUV420圖像的水平方向縮放倍數(shù)!7X = Ns_x/Ds_x,所述的YUV420圖像的垂直方向縮放倍數(shù)Fy = Ns_y/Ds_y ;其中Ns_x、Ds_x、Ns_y和Ds_y都為正整數(shù)且取值滿足條件成縮放倍數(shù)關(guān)系,且為正整數(shù),同時(shí),(2*DS_X)*(NS_X/DS_X)等于縮放后的YUV420圖像塊的寬度tx,(2*Ds_ y)*(Ns_y/Ds_y)等于縮放后的YUV420圖像塊的高度ty ;基于縮放倍數(shù)和需要縮放呈現(xiàn)的效果把YUV420圖像分成至少一個(gè)YUV420圖像塊,每個(gè)YUV420圖像塊由像素組成;所述的首地址指針rgb記錄RGB565圖像塊需要存放的目標(biāo)地址的首地址,所述的當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針ρ記錄當(dāng)前RGB565圖像塊存放的目標(biāo)地址;為便于理解,以放大2倍為例說(shuō)明,如圖1所示為原始YUV420圖像的結(jié)構(gòu)圖,原始 YUV420圖像的高度和寬度分別為H、W,原始YUV420圖像分成一個(gè)以上的原始YUV420圖像塊,如圖1中的原始YUV420圖像塊A、B、C,預(yù)置每個(gè)原始YUV420圖像塊的像素為虹4,即原始YUV420圖像塊的高度和寬度都為4,每個(gè)圖像塊中4個(gè)Y分量對(duì)應(yīng)1個(gè)U分量和一個(gè) V分量,這里預(yù)置Ns_x = 4,Ds_x = 2,Ns_y = 4,Ds_y = 2,Fx和Fy都為2 ;圖2所示為原始YUV420圖像塊A縮放后的YUV420圖像塊的結(jié)構(gòu)圖,把原始YUV420圖像塊A放大2倍后像素為8x8,如圖2所示,包括Y分量1-64,其中縮放后的圖像塊的寬度為tx,縮放后的圖像塊的高度ty ;所述的預(yù)置縮放緩沖區(qū)的為char_YUV420_zoom_tmp[3][(2*Ns_x)*(2*Ns_y)];所述的循環(huán)變量χ、y表示原始圖像的水平方向和垂直方向的坐標(biāo),在循環(huán)過(guò)程中,x、y分別以2*Ds_X、2*Ds_y為步進(jìn)值步進(jìn);所述的循環(huán)變量xl、yl表示縮放后的YUV420 圖像的水平和垂直方向坐標(biāo),在循環(huán)過(guò)程中,xl、yl分別以2*Ns_X、2*Ns_y為步進(jìn)值步進(jìn);所述的RGB565圖像塊輸出坐標(biāo)變量x2、y2,表示的是RGB565圖像塊輸出的水平坐標(biāo)和垂直坐標(biāo);為便于理解,以放大2倍為例說(shuō)明,χ、y分別以2*Ds_x = 2*2 = 4、2*Ds_y = 2*2 =4步進(jìn),即每次處理4個(gè)像素的Y分量、1個(gè)像素的U分量和1個(gè)像素的V分量,如圖2所示,先處理前2個(gè)像素,對(duì)應(yīng)的Y分量為1、2、9、10 (其中包含1個(gè)像素的U分量和1個(gè)像素的V分量),再處理后2個(gè)像素,對(duì)應(yīng)的Y分量為3、4、11、12 (其中包含1個(gè)像素的U分量和 1個(gè)像素的V分量),第二次還是處理4個(gè)像素,即首先處理前2個(gè)像素,對(duì)應(yīng)的Y分量為5、 6、13、14 (其中包含1個(gè)像素的U分量和1個(gè)像素的V分量)和再處理后2個(gè)像素,對(duì)應(yīng)的 Y分量為7、8、15、16 (其中包含1個(gè)像素的U分量和1個(gè)像素的V分量),把4*4大小的分塊進(jìn)入縮放、rgb轉(zhuǎn)換、旋轉(zhuǎn)輸出,直到處理完畢;
進(jìn)一步還需要計(jì)算縮放后的YUV420圖像的寬度W1、高度HI、縮放后的YUV420圖像塊的高度ty和寬度tx、Y分量行距stride_t、U分量行距和V分量行距;計(jì)算RGB565圖像的寬度W2和目標(biāo)地址的首地址指針rgb ;計(jì)算RGB565圖像塊的行距stride_d、偏移量 offset和當(dāng)前RGB565圖像塊寫(xiě)入的目標(biāo)地址的指針ρ ;所述的縮放后的YUV420圖像的寬度Wl和高度Hl為W1 = ff*Fx, Hl = H*Fy ;為便于理解,以放大2倍為例說(shuō)明,如圖1所示的原始YUV420圖像的結(jié)構(gòu)圖中所述原始YUV420圖像放大2倍后,縮放后的YUV420圖像的高度和寬度分別為2H和2W ;所述縮放后的YUV420圖像的Y分量行距Stride_t是根據(jù)具體縮放倍數(shù)來(lái)確定的,即縮放后的YUV420圖像的每行像素的個(gè)數(shù);所述的縮放后的YUV420圖像的U分量行距和V分量行距為stride_t的二分之一;以放大2倍為例說(shuō)明,Y分量行距stride_t = 8,U 分量行距和V分量行距為Stride_t的二分之一,即都為4 ;所述的計(jì)算RGB565圖像的寬度W2的方法為如果旋轉(zhuǎn),則W2 = HLRGB565圖像的寬度等于原始YUV420圖像塊的高度,縮放后的YUV420圖像的高度成為RGB565圖像的寬度;如果不旋轉(zhuǎn),則W2 = Wl ;所述的RGB565圖像塊的行距stride_d的計(jì)算方法為stride_d = W2 ;所述的縮放后的YUV420圖像塊的高度ty和寬度tx為縮放后的YUV420圖像塊的垂直方向和水平方向像素的個(gè)數(shù);所述的計(jì)算RGB565圖像的當(dāng)前目標(biāo)地址相對(duì)于圖像首地址的偏移量offset具體為如果旋轉(zhuǎn),offset= 0*W2+(W2_1);如果不旋轉(zhuǎn),則0ffset = 0 ;所述的offset為當(dāng)前目標(biāo)地址相對(duì)于圖像首地址的偏移量;所述的RGB565圖像的目標(biāo)地址的首地址rgb為offset*2 (每個(gè)像素占2個(gè)字節(jié));所述的當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針p+ = offset*2 ;所述的RGB565圖像的目標(biāo)地址的首地址rgb、RGB565圖像塊地址偏移量offset 和當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針ρ這三者的關(guān)系是rgb是輸出的RGB565圖像的首地址,只需要計(jì)算一次,offset是以像素為單位做偏移,rgb+offse討2就得到了以字節(jié)為偏移的當(dāng)前RGB565圖像塊的輸出地址P。每輸出一個(gè)RGB565圖像塊,當(dāng)前RGB565 圖像塊存放的目標(biāo)地址的指針P都需要做偏移,即rgb+offse討2 ;S702,判斷是否7 <H,如果是,則進(jìn)入步驟S703,如果否,則進(jìn)入步驟S719 ;S703,判斷是否1 < W,如果是,則進(jìn)入步驟S705,如果否,則進(jìn)入步驟S704 ;S704,循環(huán)變量y和yl做步進(jìn),χ重置為0,進(jìn)入步驟S702 ;所述循環(huán)變量y和yl做步進(jìn),具體為y+ = (2*Ds_y),yl+ = (2*Ns_y);S705,根據(jù)所述預(yù)置原始YUV420圖像水平和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊,并存到縮放緩沖區(qū);其中縮放后的YUV420圖像塊的寬度為tx,縮放后的YUV420圖像塊的高度為ty ;為便于理解,以放大2倍為例說(shuō)明,如圖1,原始YUV420圖像塊A像素為虹4,如圖2所示,放大2倍后像素為8x8,y和yl以步進(jìn)值y+ = 4,yl+ = 8步進(jìn),縮放后的YUV420圖像塊存放到縮放緩沖區(qū) YUV420_zoom_tmp [3]中,Yt = YUV420_zoom_tmp
,Ut = YUV420_ zoom_tmp[l],Vt = YUV420_zoom_tmp [2],分別以Yt、Ut和Vt分別引用縮放緩沖區(qū)中的Y 分量、U分量、V分量;此時(shí)的tx和ty分別為8,預(yù)置t_Stride表示縮放緩沖區(qū)的行跨距, 在本例中t_stride即為tx ;S706,計(jì)算i為縮放后的YUV420圖像塊垂直方向每次跳轉(zhuǎn)2行共跳轉(zhuǎn)的次數(shù),計(jì)算j為縮放后的YUV420圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);即i = ty/2,j = tx/4,所述的i = ty/2,表示垂直方向一次跳轉(zhuǎn)2行,所以ty除以2,以放大2倍為例說(shuō)明,i = 4;所述的j = tx/4,表示水平方向一次處理4個(gè)像素,所以tx除以4,以放大2倍為例說(shuō)明,j = 2 ;S707,判斷是否旋轉(zhuǎn),如果是,則進(jìn)入步驟S708,如果否,則進(jìn)入步驟S713 ;所述的判斷是根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否旋轉(zhuǎn)寫(xiě)入rgb值;S708,RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)進(jìn)行交換,并將目標(biāo)地址的指針P指向目標(biāo)地址,具體為x2 = -yl, y2 = xl, ρ = &rgb [ (y2*stride_d+x2) ;因?yàn)橐D(zhuǎn),縮放后的水平方向的YUV420圖像塊計(jì)算rgb值后按照從右向左的順序輸出,所以需要交換xl、yl ;為便于理解,以放大2倍為例說(shuō)明,如圖3和圖4所示的坐標(biāo)交換過(guò)程;S709,獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1,具體為獲取所述每次處理4個(gè)像素中的前兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P ;獲取所述每次處理4個(gè)像素中的后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí) j減1 ;這里每次寫(xiě)入目標(biāo)地址的指針ρ時(shí),所述目標(biāo)地址的指針ρ和竹要做偏移,即P+ =2*stride_d,Yt+ = 2 ;為便于理解,以放大2倍為例說(shuō)明,如圖3所示,這里獲取的U分量和V分量為Y 分量Yl、Y2、Y9、YlO所對(duì)應(yīng)的Ul分量和Vl分量,寫(xiě)入目標(biāo)地址Rl和R2后,目標(biāo)地址的指針P、Yt要做偏移,寫(xiě)入目標(biāo)地址R9和RlO后,目標(biāo)地址的指針p、Yt也要做偏移,即ρ+ = 2*stride_d,Yt+ = 2 ;所述獲取所述每次處理4個(gè)像素中的前兩個(gè)像素的U分量和V分量,并計(jì)算rgb 值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P的過(guò)程具體為p
= get_rgbl6_value_clip_rgb(u, ν, Yt
);ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [1]);ρ [-1] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0]);ρ [_l+stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l]);所述的get_rgbl6_value_clip_rgb()為外部函數(shù),該外部函數(shù)完成YUV420到rgb565的轉(zhuǎn)換;為便于理解,以放大2倍為例說(shuō)明,附、1 2、1 9、1 10輸出的目標(biāo)位置如圖4所示,為圖3中YUV420對(duì)應(yīng)的RGB565圖像塊旋轉(zhuǎn)輸出的目標(biāo)位置,即,所述的ρ
= get_rgbl6_ value_clip_rgb (u, v,Yt
)表示獲取第一個(gè)Y分量Yl對(duì)應(yīng)的rgb值,寫(xiě)入Rl的位置;所述 p[stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [1])表示獲取第二個(gè) Y 分量Υ2對(duì)應(yīng)的rgb值,寫(xiě)入R2的位置;ρ [-1] = get_rgbl6_value_clip_rgb(u, ν, Yt [t_stride+0]) ^/^l^lXllH 個(gè)Y分量Y9對(duì)應(yīng)的rgb值,寫(xiě)入R9的位置;所述 p[_l+stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個(gè)Y分量YlO對(duì)應(yīng)的rgb值,寫(xiě)入RlO的位置;所述獲取所述每次處理4個(gè)像素中的后兩個(gè)像素的U分量和V分量,并計(jì)算rgb 值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P的過(guò)程為p
= get_rgbl6_value_clip_rgb(u, ν, Yt
);ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [1]);ρ [-1] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0]);ρ [_l+stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l]);為便于理解,以放大2倍為例說(shuō)明,如圖4所示R3、R4、RlU R12寫(xiě)入目標(biāo)地址的位置,即所述 P
= get_rgbl6_value_clip_rgb (u, ν, Yt
)表示獲取第一個(gè) Y 分量 Υ3 對(duì)應(yīng)的rgb值,寫(xiě)入R3的位置;所述 p[stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [1])表示獲取第二個(gè) Y 分量W對(duì)應(yīng)的rgb值,寫(xiě)入R2的位置;ρ [-1] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0]) ^^l^lXllH 個(gè)Y分量Yll對(duì)應(yīng)的rgb值,寫(xiě)入Rll的位置;所述 p[_l+stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個(gè)Y分量Y12對(duì)應(yīng)的rgb值,寫(xiě)入R12的位置;所述獲取所述每次處理4個(gè)像素中的前兩個(gè)像素的U分量和V分量和獲取所述每次處理4個(gè)像素中的后兩個(gè)像素的U分量和V分量是從縮放緩沖區(qū)中獲?。籗710,判斷j是否等于0,如果是,則進(jìn)入步驟S711,如果否,則進(jìn)入步驟S709 ;S711,繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針ρ指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4 個(gè)像素共處理的次數(shù);所述繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量是從縮放緩沖區(qū)中獲取,即 Yt+ = -tx+2*t_stride, ρ+ = -2-tx*stride_d, i = i—, j = tx/4 ;S712,判斷i是否等于0,如果是,則進(jìn)入步驟S718,如果否,則進(jìn)入步驟S709 ;S713,將所述RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)一致,并將 P 指向目標(biāo)地址,具體為:x2 = xl, y2 = yl,ρ = &rgb [ (y2*stride_d+x2) *2];因?yàn)椴恍枰D(zhuǎn),縮放后的YUV420圖像塊計(jì)算rgb值后按照從左向右的順序輸出,所以不需要交換xi、yi ;S714,獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1,具體為獲取所述每次處理4個(gè)像素中的前兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針P ;獲取所述每次處理4個(gè)像素中的后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí) j減1 ;這里每次寫(xiě)入目標(biāo)地址的指針P時(shí),所述目標(biāo)地址的指針P和竹要做偏移,即P+ =2,Yt+ = 2 ;為便于理解,以放大2倍為例說(shuō)明,如圖2所示,這里獲取的U分量和V分量為Y 分量Yl、Y2、Y9、YlO所對(duì)應(yīng)的Ul分量和Vl分量,計(jì)算rgb值,分別寫(xiě)入ρ ;圖5為圖3中 YUV420對(duì)應(yīng)的RGB565圖像塊非旋轉(zhuǎn)寫(xiě)入目標(biāo)地址位置的結(jié)構(gòu)圖;所述獲取所述每次處理4個(gè)像素中的前兩個(gè)像素的U分量和V分量,并計(jì)算rgb 值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針P的過(guò)程,具體為ρ
= get_rgbl6_value_clip_rgb (u, ν, Yt
);ρ [1] = get_rgbl6_value_clip_rgb (u, ν, Yt [1]);ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0]);ρ [stride_d+l] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l]);為便于理解,以放大2倍為例說(shuō)明,如圖5為圖3中YUV420對(duì)應(yīng)的RGB565圖像塊 R1、R2、R9、R10非旋轉(zhuǎn)寫(xiě)入目標(biāo)地址的位置,即所述p
= get_rgbl6_value_clip_rgb (u, ν, Yt
)表示獲取第一個(gè)Y分量Yl對(duì)應(yīng)的rgb值,寫(xiě)入Rl的位置;所述p[l] = get_rgbl6_value_clip_rgb (u,v,Yt[l])表示獲取第二個(gè) Y 分量 Y2 對(duì)應(yīng)的rgb值,寫(xiě)入R2的位置;所述 ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0])表示獲取第三個(gè)Y分量Y9對(duì)應(yīng)的rgb值,寫(xiě)入R9的位置;所述 ρ [stride_d+l] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個(gè)Y分量YlO對(duì)應(yīng)的rgb值,寫(xiě)入RlO的位置;所述獲取所述每次處理4個(gè)像素中的后兩個(gè)像素的U分量和V分量,并計(jì)算rgb 值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P的過(guò)程,具體為ρ
= get_rgbl6_value_clip_rgb (u, ν, Yt
);ρ [1] = get_rgbl6_value_clip_rgb (u, ν, Yt [1]);ρ [stride_d] = get—rgbl6_value_clip—rgb (u,v,Yt [t_stride+0]);ρ [stride_d+l] = get—rgbl6_value_clip—rgb (u,v,Yt [t_stride+l]);為便于理解,以放大2倍為例說(shuō)明,所述的獲取所述每次處理4個(gè)像素中的后兩個(gè)像素的U分量和V分量,如圖2所示,此時(shí)獲取的U分量和V分量為Y分量TO、Y4、Y11、Y12 所對(duì)應(yīng)的U2分量和V2分量,如圖5為圖3中YUV420對(duì)應(yīng)的RGB565圖像塊R3、R4、R11、R12 非旋轉(zhuǎn)寫(xiě)入目標(biāo)地址的位置,即,所述p
= get_rgbl6_value_clip_rgb (u, ν, Yt
)表示獲取第一個(gè) Y 分量 Y3 對(duì)應(yīng)的rgb值,寫(xiě)入R3的位置;所述p[l] = get_rgbl6_value_clip_rgb(u,v,Yt[l])表示獲取第二個(gè) Y 分量 W 對(duì)應(yīng)的rgb值,寫(xiě)入R4的位置;
所述 ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0])表示獲取第三個(gè)Y分量Yll對(duì)應(yīng)的rgb值,寫(xiě)入Rll的位置;所述 p[stride d+1] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個(gè)Y分量Y12對(duì)應(yīng)的rgb值,寫(xiě)入R12的位置;S715,判斷j = 0 ?如果是,則進(jìn)入步驟S716,如果否,則進(jìn)入步驟S714 ;S716,繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針ρ指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4 個(gè)像素共處理的次數(shù);所述繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量是從縮放緩沖區(qū)中獲取,即 Yt+ = -tx+2*t_stride, ρ+ = -tx+2*stride_d, i = i—, j = tx/4 ;S717,判斷i是否等于0,如果是,則進(jìn)入步驟S718,如果否,則進(jìn)入步驟S714 ;S718,循環(huán)變量χ和xl做步進(jìn),進(jìn)入步驟S703 ;所述循環(huán)變量χ和xl做步進(jìn)具體為x = x+(2*Ds_x),xl = xl+(2*Ns_x);S719, RGB565圖像輸出結(jié)束。本實(shí)施例中通過(guò)預(yù)置六個(gè)循環(huán)變量和計(jì)算步進(jìn)值,在一個(gè)相同的循環(huán)周期完成整個(gè)原始YUV420圖像轉(zhuǎn)換成RGB565圖像的過(guò)程,其中在轉(zhuǎn)換過(guò)程中是通過(guò)先把原始YUV420 圖像等分為原始YUV420圖像塊,對(duì)每個(gè)原始YUV420圖像塊進(jìn)行縮放、顏色轉(zhuǎn)換(即計(jì)算 rgb值),分別寫(xiě)入目標(biāo)地址(包括旋轉(zhuǎn)),減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性,加速內(nèi)存訪問(wèn)速度。實(shí)施例三圖8為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像系統(tǒng)的第一優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖。所述的系統(tǒng)包括初始模塊、縮放模塊以及輸出模塊;初始模塊,與縮放模塊相連,用于將原始的YUV420圖像等分為至少一個(gè)的原始 YUV420圖像塊;并預(yù)置原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù);所述原始YUV420圖像的水平方向縮放倍數(shù)h = Ns_x/Ds_x,所述原始YUV420圖像的垂直方向縮放倍數(shù)Fy = Ns_y/Ds_y,其中Ns_x和Ds_X、Ns_y和Ds_y的取值滿足條件 成縮放倍數(shù)關(guān)系,且為正整數(shù),同時(shí),(2*DS_X)*(NS_X/DS_X)等于縮放后的YUV420圖像塊的寬度tx,(2*Ds_y)*(Ns y/Ds_y)等于縮放后的YUV420圖像塊的高度ty ;基于縮放倍數(shù)和需要縮放呈現(xiàn)的效果把YUV420圖像分成一個(gè)或一個(gè)以上的YUV420圖像塊,每個(gè)YUV420 圖像塊由像素組成;為便于理解,以放大2倍為例說(shuō)明,如圖1所示為原始YUV420圖像的結(jié)構(gòu)圖,原始 YUV420圖像的高度和寬度分別為H、W,原始YUV420圖像分成一個(gè)以上的原始YUV420圖像塊,如圖1中的原始YUV420圖像塊A、B、C,每個(gè)原始YUV420圖像塊的像素為虹4,即原始 YUV420圖像塊的高度和寬度都為4,每個(gè)圖像塊中4個(gè)Y分量對(duì)應(yīng)1個(gè)U分量和一個(gè)V分量;預(yù)置 Ns_x = 4,Ds_x = 2,Ns_y = 4,Ds_y = 2,F(xiàn)x 禾口 Fy 者為 2 ;縮放模塊,與初始模塊和輸出模塊相連,用于根據(jù)所述預(yù)置原始YUV420圖像水平和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊;為便于理解,以放大2倍為例說(shuō)明,圖2所示為原始YUV420圖像塊A縮放后的 YUV420圖像塊的結(jié)構(gòu)圖,把原始YUV420圖像塊A放大2倍后像素為8x8,如圖2所示,包括 Y分量1-64,其中縮放后的圖像塊的寬度為tx,縮放后的圖像塊的高度ty ;輸出模塊,與縮放模塊相連,用于獲取縮放后的YUV420圖像塊的Y分量、U分量和 V分量,計(jì)算rgb值,根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將rgb值寫(xiě)入目標(biāo)地址;所述的是否旋轉(zhuǎn)是根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否需要旋轉(zhuǎn)寫(xiě)入rgb值,即RGB565圖像的寬度等于原始YUV420圖像塊的高度,縮放后的 YUV420圖像的高度成為RGB565圖像的寬度;所述的rgb值是通過(guò)外部函數(shù)做顏色轉(zhuǎn)換的值,所述的外部函數(shù)為get_rgbl6_ value_clip_rgb ();本實(shí)施例中通過(guò)初始模塊把原始YUV420圖像等分為原始YUV420圖像塊,縮放模塊對(duì)原始YUV420圖像塊進(jìn)行縮放,輸出縮放后的YUV420圖像塊,輸出模塊先顏色轉(zhuǎn)換(即計(jì)算rgb值),然后根據(jù)YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否旋轉(zhuǎn)分別將rgb 值寫(xiě)入目標(biāo)地址,從而實(shí)現(xiàn)對(duì)每個(gè)原始YUV420圖像塊連續(xù)做縮放、計(jì)算rgb值并輸出(包括旋轉(zhuǎn)),減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在各種像素移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性, 加速內(nèi)存訪問(wèn)速度。實(shí)施例四圖9為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像系統(tǒng)的第二優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖,本實(shí)施例中的需要做旋轉(zhuǎn)操作。所述系統(tǒng)包括初始模塊、第一判斷模塊、第二判斷模塊、縮放模塊、輸出模塊、第三判斷模塊、第四判斷模塊以及步進(jìn)模塊;初始模塊,與第一判斷模塊相連,用于將原始的YUV420圖像等分為至少一個(gè)的原始YUV420圖像塊;并預(yù)置原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù);還用于預(yù)置所述原始YUV420圖像的寬度W和高度H;還用于預(yù)置當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針P ;還用于預(yù)置縮放緩沖區(qū),存放所述縮放后的YUV420圖像的Y分量、U分量和V 分量,分別由變量竹、Ut和Vt引用;還用于預(yù)置循環(huán)變量x、y、xl、yl、i、j,初始為0。所述初始模塊與所述第一判斷模塊相連,還用于預(yù)置RGB565圖像的目標(biāo)地址的首地址指針rgb和當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針p,都定義為short*類(lèi)型;預(yù)置RGB565圖像塊輸出坐標(biāo)變量x2、y2 ;計(jì)算縮放后的YUV420圖像的寬度W1、高度HI、縮放后的YUV420圖像塊的高度ty和寬度tx、Y分量行距stride_t、U分量行距和V分量行距; 計(jì)算RGB565圖像的寬度W2和目標(biāo)地址的首地址rgb ;計(jì)算RGB565圖像塊的行距stride_ d、偏移量offset和當(dāng)前RGB565圖像塊寫(xiě)入的目標(biāo)地址ρ ;所述的YUV420圖像的水平方向縮放倍數(shù)!7X = Ns_x/Ds_x,所述的YUV420圖像的垂直方向縮放倍數(shù)Fy = Ns_y/Ds_y,其中Ns_x和Ds_x、Ns_y和Ds_y的取值滿足條件成縮放倍數(shù)關(guān)系,且為正整數(shù),同時(shí),(2*DS_X)*(NS_X/DS_X)等于縮放后的YUV420圖像塊的寬度tx,(2*DS_y)*(NS_y/DS_y)等于縮放后的YUV420圖像塊的高度ty?;诳s放倍數(shù)和需要縮放呈現(xiàn)的效果把YUV420圖像分成至少一個(gè)YUV420圖像塊,每個(gè)YUV420圖像塊由像素組成;所述的首地址指針rgb記錄RGB565圖像塊需要存放的目標(biāo)地址的首地址,所述的當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針ρ記錄當(dāng)前RGB565圖像塊存放的目標(biāo)地址;所述的循環(huán)變量x、y表示原始圖像的水平和垂直方向的坐標(biāo),在循環(huán)過(guò)程中,x、y 分別以2*Ds_X、2*Ds_y為步進(jìn)值步進(jìn);所述的循環(huán)變量xl、yl表示縮放后的YUV420圖像的水平和垂直方向坐標(biāo),在循環(huán)過(guò)程中,xl、yl分別以2*Ns_X、2*Ns_y為步進(jìn)值步進(jìn);所述的RGB565圖像塊輸出坐標(biāo)變量x2、y2,表示的是RGB565圖像塊輸出的水平坐標(biāo)和垂直坐標(biāo);所述的縮放后的YUV420圖像的寬度Wl和高度Hl為W1 = ff*Fx, Hl = H*Fy ;所述的縮放后的YUV420圖像的Y分量行距Stride_t是根據(jù)具體縮放倍數(shù)來(lái),即每行像素的個(gè)數(shù);所述的縮放后的YUV420圖像的U分量行距和V分量行距為Stride_t的二分之一;以放大2倍為例說(shuō)明,Y分量行距Stride_t = 8,U分量行距和V分量行距為 stridet的二分之一,即都為4 ;所述的RGB565圖像的寬度W2 = Hl,RGB565圖像的寬度等于原始YUV420圖像塊的高度,縮放后的YUV420圖像的高度成為RGB565圖像的寬度;所述的縮放后的YUV420圖像塊的高度ty和寬度tx為縮放后的YUV420圖像塊的垂直方向和水平方向像素的個(gè)數(shù);所述的RGB565圖像塊的當(dāng)前目標(biāo)地址相對(duì)于RGB565圖像首地址的偏移量offset =0*W2+(W2-1);所述的offset為當(dāng)前目標(biāo)地址相對(duì)于RGB565圖像首地址的偏移量;所述的RGB565圖像的目標(biāo)地址的首地址rgb為offsets ;所述的當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針p+ = offset*2 ;所述的RGB565圖像的目標(biāo)地址的首地址rgb、RGB565圖像塊的地址偏移量offset 和當(dāng)前RGB圖像塊存放的目標(biāo)地址的指針ρ這三者的關(guān)系是rgb是輸出的RGB565圖像的首地址,只需要計(jì)算一次,offset是以像素為單位做偏移,rgb+offse討2就得到了以字節(jié)為偏移的當(dāng)前RGB565圖像塊的輸出地址P。每輸出一個(gè)RGB565圖像塊,當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針P都需要做偏移,即rgb+offse討2 ;第一判斷模塊分別與所述初始模塊、所述第二判斷模塊和所述步進(jìn)模塊相連,用于判斷是否y < H,如果是,則通知第二判斷模塊,如果否,則RGB565圖像輸出結(jié)束;第二判斷模塊所述與所述第一判斷模塊、所述步進(jìn)模塊和所述縮放模塊相連,用于判斷是否χ < W,如果是,則通知縮放模塊進(jìn)行縮放,如果否,則通知步進(jìn)模塊;縮放模塊分別與所述第二判斷模塊和所述輸出模塊相連,用于根據(jù)所述預(yù)置原始 YUV420圖像水平和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊,并存到縮放緩沖區(qū);還用于計(jì)算i為縮放后的YUV420圖像塊垂直方向每次跳轉(zhuǎn)2行共跳轉(zhuǎn)的次數(shù),計(jì)算j為縮放后的YUV420圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);還用于將 RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)進(jìn)行交換,并將目標(biāo)地址的指針P指向目標(biāo)地址,并通知輸出模塊;
其中縮放后的YUV420圖像塊的寬度為tx,縮放后的YUV420圖像塊的高度為ty ;輸出模塊分別與所述縮放模塊、所述第三判斷模塊和所述第四判斷模塊相連,用于接收縮放模塊發(fā)送的通知、第三判斷模塊發(fā)送的通知和第四判斷模塊發(fā)送的通知,還用于如果旋轉(zhuǎn),則獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1 ;所述按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針p,即RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)進(jìn)行交換,即x2 = -yl,y2 = xl,同時(shí)將目標(biāo)地址的指針 P 指向目標(biāo)地址,即 P = &rgb[(y2*stride_d+x2)*2];因?yàn)橐D(zhuǎn),縮放后的水平方向的YUV420圖像塊計(jì)算rgb值后按照從右向左的順序輸出,所以需要交換xl、yi ;為便于理解,以放大2倍為例說(shuō)明,如圖3和圖4所示的坐標(biāo)交換過(guò)程;第三判斷模塊分別與所述輸出模塊和所述第四判斷模塊相連,用于判斷j是否等于0,如果是,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針P指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理 4個(gè)像素共處理的次數(shù);并通知第四判斷模塊;如果否,則通知輸出模塊;第四判斷模塊分別與所述第三判斷模塊、所述輸出模塊和所述步進(jìn)模塊相連,用于判斷i是否等于0,如果是,則通知所述步進(jìn)模塊,并通知所述第二判斷模塊;如果否,則通知所述輸出模塊;步進(jìn)模塊分別與所述第一判斷模塊、所述第二判斷模塊和所述第四判斷模塊相連,用于接收第二判斷模塊的通知,并將循環(huán)變量y、yl做步進(jìn),循環(huán)變量χ重置為0,并通知所述第一判斷模塊;還用于接收所述第四判斷模塊發(fā)送的通知,并將循環(huán)變量χ和xl做步進(jìn)。本實(shí)施例中通過(guò)第二判斷模塊和第四判斷模塊的判斷結(jié)果,通知步進(jìn)模塊對(duì)循環(huán)變量X、XI、1、yl進(jìn)行步進(jìn),從而獲取下一個(gè)原始YUV420圖像塊;通過(guò)第三判斷模塊和第四判斷模塊的判斷結(jié)果,通知輸出模塊計(jì)算當(dāng)前兩行的RGB圖像塊的rgb值并輸出(包括旋轉(zhuǎn));實(shí)現(xiàn)了在需要旋轉(zhuǎn)的情況下,在同一個(gè)循環(huán)周期內(nèi)完成整個(gè)YUV420圖像到RGB565 圖像的轉(zhuǎn)換,減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始 YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性,加速內(nèi)存訪問(wèn)速度。實(shí)施例五圖9為本發(fā)明YUV420圖像轉(zhuǎn)換成RGB565圖像系統(tǒng)的第二優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖,本實(shí)施例中的不需要做旋轉(zhuǎn)操作。所述系統(tǒng)包括初始模塊、第一判斷模塊、第二判斷模塊、縮放模塊、輸出模塊、第三判斷模塊、第四判斷模塊以及步進(jìn)模塊;初始模塊與所述第一判斷模塊相連,還用于預(yù)置所述原始YUV420圖像的寬度W和高度H ;還用于預(yù)置當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針ρ ;還用于預(yù)置縮放緩沖區(qū), 存放所述縮放后的YUV420圖像的Y分量、U分量和V分量,分別由變量Yt、Ut和Vt引用; 還用于預(yù)置循環(huán)變量χ、y、xl、yl、i、j,初始為0 ;
所述初始模塊還預(yù)置RGB565圖像的目標(biāo)地址的首地址指針rgb和當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針P,都定義為short*類(lèi)型;預(yù)置RGB565圖像塊輸出坐標(biāo)變量 x2、y2 ;計(jì)算縮放后的YUV420圖像的寬度W1、高度HI、縮放后的YUV420圖像塊的高度ty和寬度tx、Y分量行距stride_t、U分量行距和V分量行距;計(jì)算RGB565圖像的寬度W2和目標(biāo)地址的首地址rgb ;計(jì)算RGB565圖像塊的行距stride_d、偏移量offset和當(dāng)前RGB565 圖像塊寫(xiě)入的目標(biāo)地址P;所述的縮放后的YUV420圖像的寬度Wl和高度Hl為W1 = ff*Fx, Hl = H*Fy ;所述的縮放后的YUV420圖像的Y分量行距Stride_t是根據(jù)具體縮放倍數(shù)確定, 即每行像素的個(gè)數(shù);所述的縮放后的YUV420圖像的U分量行距和V分量行距為Stride_t 的二分之一;所述的RGB565圖像的寬度W2 = Wl ;所述的RGB565圖像的目標(biāo)地址的首地址rgb為offsets ;所述的RGB565圖像塊的行距stride_d = W2 ;所述的縮放后的YUV420圖像塊的高度ty和寬度tx為縮放后的YUV420圖像塊的垂直方向和水平方向像素的個(gè)數(shù);所述的RGB565圖像塊的當(dāng)前目標(biāo)地址相對(duì)于圖像首地址的偏移量offset = 0 ;所述的當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針p+ = offset*2 ;所述第一判斷模塊分別與初始模塊、所述第二判斷模塊和所述步進(jìn)模塊相連,用于判斷是否y < H,如果是,則通知第二判斷模塊,如果否,則RGB565圖像輸出結(jié)束;所述第二判斷模塊分別與所述第一判斷模塊、所述步進(jìn)模塊和所述縮放模塊相連,用于判斷是否χ < W,如果是,則通知縮放模塊進(jìn)行縮放,如果否,則通知步進(jìn)模塊;所述縮放模塊分別與所述第二判斷模塊和所述輸出模塊相連,還用于計(jì)算i為縮放后的YUV420圖像塊垂直方向每次跳轉(zhuǎn)2行共跳轉(zhuǎn)的次數(shù),計(jì)算j為縮放后的YUV420圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);還用于將RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)進(jìn)行交換,并將目標(biāo)地址的指針ρ指向目標(biāo)地址,并通知輸出模塊;所述輸出模塊分別與所述縮放模塊、所述第三判斷模塊和所述第四判斷模塊相連,用于接收所述縮放模塊發(fā)送的通知、所述第三判斷模塊發(fā)送的通知和所述第四判斷模塊發(fā)送的通知,還用于如果不旋轉(zhuǎn),則獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針p, 同時(shí)j減1,并通知第三判斷模塊進(jìn)行判斷;因?yàn)椴恍枰D(zhuǎn),縮放后的YUV420圖像塊計(jì)算rgb值后按照從左向右的順序輸出,所以不需要交換xi、yi ;所述第三判斷模塊分別與所述輸出模塊和所述第四判斷模塊相連,用于判斷j是否等于0,如果是,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針P指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);并通知第四判斷模塊;如果否,則通知輸出模塊;所述第四判斷模塊分別與所述第三判斷模塊、所述輸出模塊和所述步進(jìn)模塊相連,用于判斷i是否等于0,如果是,則通知所述步進(jìn)模塊,并通知所述第二判斷模塊;如果否,則通知所述輸出模塊;所述步進(jìn)模塊分別與所述第一判斷模塊、所述第二判斷模塊和所述第四判斷模塊相連,用于接收所述第二判斷模塊的通知并y+ = (2*Ds_y),并將循環(huán)變量y、yl做步進(jìn),循環(huán)變量χ重置為0,并通知所述第一判斷模塊;還用于接收所述第四判斷模塊發(fā)送的通知, 并將循環(huán)變量Χ和Xl做步進(jìn)。本實(shí)施例中通過(guò)第二判斷模塊和第四判斷模塊的判斷結(jié)果,通知步進(jìn)模塊對(duì)循環(huán)變量x、xl、y、yl進(jìn)行步進(jìn),從而獲取下一個(gè)原始YUV420圖像塊;通過(guò)第三判斷模塊和第四判斷模塊的判斷結(jié)果,通知輸出模塊計(jì)算當(dāng)前兩行的RGB圖像塊的rgb值并輸出;實(shí)現(xiàn)了在不需要旋轉(zhuǎn)的情況下,在同一個(gè)循環(huán)周期內(nèi)完成整個(gè)YUV420圖像到RGB565圖像的轉(zhuǎn)換,減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,減少內(nèi)存使用量,同時(shí)保持?jǐn)?shù)據(jù)的局部性,加速內(nèi)存訪問(wèn)速度。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述方法包括以下步驟 將原始YUV420圖像等分為至少一個(gè)原始YUV420圖像塊;并預(yù)置所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù);根據(jù)所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊;根據(jù)所述縮放后的YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值,根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將所述rgb值寫(xiě)入目標(biāo)地址。
2.如權(quán)利要求1所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于, 所述的步驟“根據(jù)所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊”之前還包括步驟 預(yù)置所述原始YUV420圖像的寬度W和高度H ; 預(yù)置當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針ρ ;預(yù)置縮放緩沖區(qū),用于存放所述縮放后的YUV420圖像的Y分量、U分量和V分量; 預(yù)置循環(huán)變量X、y、XI、yi、i、j,初始為0 ;如果y < H且χ < W,則進(jìn)入步驟“根據(jù)所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊”;所述的步驟“根據(jù)所述縮放后的YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值, 根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將所述rgb值寫(xiě)入目標(biāo)地址”中旋轉(zhuǎn)時(shí)寫(xiě)入目標(biāo)地址的過(guò)程包括步驟計(jì)算i為縮放后的YUV420圖像塊垂直方向每次跳轉(zhuǎn)2行共跳轉(zhuǎn)的次數(shù),計(jì)算j為縮放后的YUV420圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);將RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)進(jìn)行交換,并將目標(biāo)地址的指針P指向目標(biāo)地址;獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算 rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1。
3.如權(quán)利要求2所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述步驟“獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí)j減1”之后還包括如果j等于0,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針ρ 指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);如果i等于0,則循環(huán)變量χ和xl做步進(jìn);如果χ不小于W,則循環(huán)變量y和yl做步進(jìn),χ重置為0 ;如果y不小于H,則RGB565圖像輸出結(jié)束。
4.如權(quán)利要求3所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述的步驟“如果j等于0,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針P指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù)”之后還包括步驟如果j不等于0,則進(jìn)入步驟“獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí) j 減 1”;所述的步驟“如果i等于0,則循環(huán)變量χ和xl做步進(jìn)”還包括步驟 如果i不等于0,則進(jìn)入步驟“獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí) j 減 1”。
5.如權(quán)利要求2所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述的步驟“根據(jù)所述縮放后的YUV420圖像塊的Y分量、U分量和V分量,計(jì)算rgb值, 根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將所述rgb值寫(xiě)入目標(biāo)地址”中不需要旋轉(zhuǎn)時(shí)寫(xiě)入目標(biāo)地址的過(guò)程包括步驟計(jì)算i為縮放后的YUV420圖像塊垂直方向每次跳轉(zhuǎn)2行共跳轉(zhuǎn)的次數(shù),計(jì)算j為縮放后的YUV420圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);將所述RGB565圖像塊輸出的坐標(biāo)等于所述縮放后的YUV420圖像塊的坐標(biāo),并將目標(biāo)地址的指針P指向目標(biāo)地址;獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算 rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1。
6.如權(quán)利要求5所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述步驟“獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1”之后還包括如果j等于0,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針ρ 指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);如果i等于0,則循環(huán)變量χ和xl做步進(jìn);如果χ不小于W,則循環(huán)變量y和yl做步進(jìn),χ重置為0 ;如果y不小于H,則RGB565圖像輸出結(jié)束。
7.如權(quán)利要求6所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述的步驟“如果j等于0,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針P指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù)”之后還包括步驟如果j不等于0,則進(jìn)入步驟“獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí) j 減 1”;所述的步驟“如果i等于0,則χ和xl做步進(jìn)”還包括步驟如果i不等于0,則進(jìn)入步驟“獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針p,同時(shí) j 減 1”。
8.如權(quán)利要求2或5所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述原始YUV420圖像的水平方向縮放倍數(shù)等于Ns_x與Ds_x的比值,所述原始YUV420 圖像的垂直方向縮放倍數(shù)等于Ns_y與Ds_y的比值;其中所述Ns_x、所述Ds_x、所述Ns_y以及所述Ds_y都為正整數(shù)且取值滿足條件成為正整數(shù)的縮放倍數(shù)關(guān)系,同時(shí),(2*Ds_x)*(Ns_x/Ds_x)等于所述縮放后的YUV420圖像塊的寬度,(2*DS_y)*(NS_y/DS_y)等于所述縮放后的YUV420圖像塊的高度。
9.如權(quán)利要求3或6所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的方法,其特征在于,所述循環(huán)變量χ和xl做步進(jìn),具體為在循環(huán)過(guò)程中,χ、xl分別以2*Ds_x、2*Ns_x為步進(jìn)值步進(jìn);所述循環(huán)變量y和yl做步進(jìn),具體為在循環(huán)過(guò)程中,y、yl分別以2*Ds_y、2*Ns_y為步進(jìn)值步進(jìn);其中所述Ns_x、所述Ds_x、所述Ns_y以及所述Ds_y都為正整數(shù)且取值滿足條件成為正整數(shù)的縮放倍數(shù)關(guān)系,同時(shí),(2*Ds_x)*(Ns_x/Ds_x)等于所述縮放后的YUV420圖像塊的寬度,(2*Ds_y)*(Ns y/Ds_y)等于所述縮放后的YUV420圖像塊的高度。
10.一種YUV420圖像轉(zhuǎn)換成RGB565圖像的系統(tǒng),其特征在于,所述系統(tǒng)包括初始模塊、縮放模塊以及輸出模塊;所述初始模塊與所述縮放模塊相連,用于將原始YUV420圖像等分為至少一個(gè)原始 YUV420圖像塊,并預(yù)置所述原始YUV420圖像的水平方向和垂直方向的縮放倍數(shù);所述縮放模塊分別與所述初始模塊和所述輸出模塊相連,用于根據(jù)所述原始YUV420 圖像的水平方向和垂直方向的縮放倍數(shù),插值濾波生成縮放后的YUV420圖像塊;所述輸出模塊與所述縮放模塊相連,用于根據(jù)所述縮放后的YUV420圖像塊的Y分量、 U分量和V分量,計(jì)算rgb值,根據(jù)縮放后的YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸,確定是否旋轉(zhuǎn)并分別將所述rgb值寫(xiě)入目標(biāo)地址。
11.如權(quán)利要求10所述的YUV420圖像轉(zhuǎn)換成RGB565圖像的系統(tǒng),其特征在于,所述系統(tǒng)還包括第一判斷模塊、第二判斷模塊、第三判斷模塊、第四判斷模塊和步進(jìn)模塊;所述初始模塊與所述第一判斷模塊相連,還用于預(yù)置所述原始YUV420圖像的寬度W和高度H ;還用于預(yù)置當(dāng)前RGB565圖像塊存放的目標(biāo)地址的指針ρ ;還用于預(yù)置縮放緩沖區(qū), 存放所述縮放后的YUV420圖像的Y分量、U分量和V分量;還用于預(yù)置循環(huán)變量χ、y、xl、 yl、i、j,初始為0 ;所述第一判斷模塊分別與所述初始模塊、所述第二判斷模塊和所述步進(jìn)模塊相連,用于判斷是否y < H,如果是,則通知第二判斷模塊,如果否,則RGB565圖像輸出結(jié)束;所述第二判斷模塊分別與所述第一判斷模塊、所述步進(jìn)模塊和所述縮放模塊相連,用于判斷是否χ < W,如果是,則通知縮放模塊進(jìn)行縮放,如果否,則通知步進(jìn)模塊;所述縮放模塊分別與所述第二判斷模塊和所述輸出模塊相連,還用于計(jì)算i為縮放后的YUV420圖像塊垂直方向每次跳轉(zhuǎn)2行共跳轉(zhuǎn)的次數(shù),計(jì)算j為縮放后的YUV420圖像塊水平方向每次處理4個(gè)像素共處理的次數(shù);還用于當(dāng)需要旋轉(zhuǎn)時(shí),則將RGB565圖像塊輸出的坐標(biāo)與縮放后的YUV420圖像塊的坐標(biāo)進(jìn)行交換,并將目標(biāo)地址的指針ρ指向目標(biāo)地址, 并通知輸出模塊;還用于不需要旋轉(zhuǎn)時(shí),則將所述RGB565圖像塊輸出的坐標(biāo)等于所述縮放后的YUV420圖像塊的坐標(biāo),并將目標(biāo)地址的指針ρ指向目標(biāo)地址,并通知輸出模塊;所述輸出模塊分別與所述縮放模塊、所述第三判斷模塊和所述第四判斷模塊相連,用于接收所述縮放模塊發(fā)送的通知、所述第三判斷模塊發(fā)送的通知和所述第四判斷模塊發(fā)送的通知;還用于如果旋轉(zhuǎn),則獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U 分量和V分量,并計(jì)算rgb值,按照從右向左的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減 1 ;所述的輸出模塊還用于如果不旋轉(zhuǎn),則獲取所述每次處理4個(gè)像素中的前兩個(gè)像素和后兩個(gè)像素的U分量和V分量,并計(jì)算rgb值,按照從左向右的順序分別寫(xiě)入目標(biāo)地址的指針P,同時(shí)j減1 ;所述第三判斷模塊分別與所述輸出模塊和所述第四判斷模塊相連,用于判斷j是否等于0,如果是,則繼續(xù)獲取縮放后的YUV圖像塊的下一個(gè)Y分量,將目標(biāo)地址的指針ρ指向所述Y分量將要寫(xiě)入的目標(biāo)地址,i減1,計(jì)算j為縮放后的YUV圖像塊水平方向每次處理 4個(gè)像素共處理的次數(shù);并通知所述第四判斷模塊;如果否,則通知所述輸出模塊;所述第四判斷模塊分別與所述第三判斷模塊、所述輸出模塊和所述步進(jìn)模塊相連,用于判斷i是否等于0,如果是,則通知所述步進(jìn)模塊,并通知所述第二判斷模塊;如果否,則通知所述輸出模塊;所述步進(jìn)模塊分別與所述第一判斷模塊、所述第二判斷模塊和所述第四判斷模塊相連,用于接收所述第二判斷模塊的通知,并將循環(huán)變量y、yi做步進(jìn),循環(huán)變量X重置為0,并通知所述第一判斷模塊;還用于接收所述第四判斷模塊發(fā)送的通知,并將循環(huán)變量X和Xl 做步進(jìn)。
全文摘要
本發(fā)明公開(kāi)一種YUV420圖像轉(zhuǎn)換成RGB565圖像的方法和系統(tǒng),通過(guò)把原始YUV420圖像等分為原始YUV420圖像塊并進(jìn)行縮放,獲取縮放后的YUV420圖像塊的U分量和V分量,計(jì)算rgb值,根據(jù)YUV420圖像的尺寸與移動(dòng)終端屏幕尺寸確定是否旋轉(zhuǎn)分別將rgb值寫(xiě)入目標(biāo)地址,從而實(shí)現(xiàn)對(duì)每個(gè)原始YUV420圖像塊連續(xù)做縮放、計(jì)算rgb值并旋轉(zhuǎn)或非旋轉(zhuǎn)后輸出,減少了循環(huán)的次數(shù)和訪問(wèn)內(nèi)存的數(shù)量,提高了轉(zhuǎn)換效率,輸出的RGB565圖像可以在不同像素的移動(dòng)終端顯示,通過(guò)把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達(dá)到最佳的顯示效果,加速內(nèi)存訪問(wèn)速度。
文檔編號(hào)H04N9/64GK102281382SQ20111027829
公開(kāi)日2011年12月14日 申請(qǐng)日期2011年9月19日 優(yōu)先權(quán)日2010年12月30日
發(fā)明者張磊, 鄧鄒平 申請(qǐng)人:深圳市融創(chuàng)天下科技股份有限公司