新四季網

一種yuv420圖像轉換成rgb565圖像的方法和系統的製作方法

2023-12-06 12:27:26 1

專利名稱:一種yuv420圖像轉換成rgb565圖像的方法和系統的製作方法
技術領域:
本發明涉及視頻播放領域,尤其涉及一種YUV420圖像轉換成RGB565圖像的方法和系統。
背景技術:
現有技術中視頻解碼器直接解碼生成的YUV420圖像文件在許多移動終端中是不能直接顯示的,必須經過YUV420轉換成RGB565才能顯示,另外,許多的移動終端屏幕像素與視頻圖像的尺寸不一致,導致移動終端在顯示RGB565時會出現很多空白區域,降低了用戶的體驗效果,例如視頻圖像的尺寸的像素為MOxlSO,而移動終端屏幕為M0x320, 那麼導致移動終端在顯示RGB565格式的視頻文件時會在上、下兩端出現很多空白區域, 這就需要在移動終端顯示視頻之前做縮放、旋轉、顏色轉換(即計算rgb值)的操作步驟,因YUV420圖像在做縮放、旋轉和顏色轉換時,每個操作步驟都需要經過2次循環,這樣累計下來的循環次數比較多,而且每步的循環都需要重新訪問內存,效率低,以像素為 240xl80YUV420圖像轉換成像素為320x240RGB565圖像為例,通常需要32(^240*5/4 = 115200位元組內存。

發明內容
本發明實施例的目的在於提出一種YUV420圖像轉換成RGB565圖像的方法,旨在解決現有技術中視頻解碼器直接解碼生成的YUV420圖像文件在許多移動終端中是不能直接顯示的,必須經過YUV420圖像轉換成RGB565圖像,而且直接轉換成RGB565圖像後在移動終端顯示時會有空白區域,降低了用戶的體驗效果,必須在YUV420圖像轉換成RGB565圖像之前做縮放、旋轉、顏色轉換(即計算rgb值)的操作步驟,因YUV420圖像在做縮放、旋轉和顏色轉換時,每個操作步驟都需要經過2次循環,這樣累計下來的循環次數較多,訪問內存量增加,資源浪費,且效率低。本發明實施例是這樣實現的,一種YUV420圖像轉換成RGB565圖像的方法,包括以下步驟將原始YUV420圖像等分為至少一個原始YUV420圖像塊;並預置所述原始YUV420 圖像的水平方向和垂直方向的縮放倍數;根據所述原始YUV420圖像的水平方向和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊;根據所述縮放後的YUV420圖像塊的Y分量、U分量和V分量,計算rgb值,根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將所述rgb值寫入目標地址。本發明實施例的另一目的在於提出一種YUV420圖像轉換成RGB565圖像的系統, 所述系統包括所述初始模塊與所述縮放模塊相連,用於將原始YUV420圖像等分為至少一個原始YUV420圖像塊,並預置所述原始YUV420圖像的水平方向和垂直方向的縮放倍數;所述縮放模塊分別與所述初始模塊和所述輸出模塊相連,用於根據所述原始 YUV420圖像的水平方向和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊;所述輸出模塊與所述縮放模塊相連,用於根據所述縮放後的YUV420圖像塊的Y分量、U分量和V分量,計算rgb值,根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸, 確定是否旋轉並分別將所述rgb值寫入目標地址。本發明的有益效果通過把原始YUV420圖像等分為原始YUV420圖像塊,對原始YUV420圖像塊進行縮放,獲取YUV420圖像塊的Y分量、U分量和V分量,計算rgb值(即顏色轉換),根據YUV420 圖像的尺寸與移動終端屏幕尺寸確定是否旋轉分別把rgb值寫入目標地址,從而實現對每個原始YUV420圖像塊連續做縮放、計算rgb值並輸出,減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始 YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性,加速內存訪問速度。


圖1為本發明的YUV420圖像轉換成RGB565圖像的方法的優選實施例中原始 YUV420圖像的結構圖;圖2為圖1中的原始YUV420圖像塊A縮放後的YUV420圖像塊的結構圖;圖3為圖2中縮放後的YUV420圖像塊的前兩個像素包含的4個Y分量、1個U分量和1個V分量的結構圖;圖4為圖3中YUV420對應的RGB565圖像塊旋轉輸出的目標位置的結構圖;圖5為圖3中YUV420對應的RGB565圖像塊非旋轉輸出的目標位置的結構圖;圖6為本發明YUV420圖像轉換成RGB565圖像方法的第一優選實施例的流程圖;圖7為本發明YUV420圖像轉換成RGB565圖像方法的第二優選實施例的流程圖;圖8為本發明YUV420圖像轉換成RGB565圖像系統的第一優選實施例的結構示意圖;圖9為本發明YUV420圖像轉換成RGB565圖像系統的第二優選實施例的結構示意圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖和實施例,對本發明進行進一步詳細說明,為了便於說明,僅示出了與本發明實施例相關的部分。應當理解,此處所描寫的具體實施例,僅僅用於解釋本發明,並不用以限制本發明。本發明通過把原始YUV420圖像等分為原始YUV420圖像塊,對原始YUV420圖像塊進行縮放,獲取YUV420圖像塊的Y分量、U分量和V分量,計算rgb值(即顏色轉換),根據 YUV420圖像的尺寸與移動終端屏幕尺寸確定是否旋轉並分別將rgb值寫入目標地址,從而實現對每個原始YUV420圖像塊連續做縮放、計算rgb值並輸出(包括旋轉),減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性,加速內存訪問速度。實施例一圖6為本發明YUV420圖像轉換成RGB565圖像方法的第一優選實施例的流程圖。 所述方法包括以下步驟S601,將原始YUV420圖像等分為至少一個原始YUV420圖像塊;並預置原始 YUV420的圖像水平方向的縮放倍數h和垂直方向的縮放倍數Fy ;所述原始YUV420圖像的水平方向縮放倍數h = Ns_x/Ds_x,所述原始YUV420圖像的垂直方向縮放倍數Fy = Ns_y/Ds_y ;其中Ns_x、Ds_x、Ns_y和Ds_y都為正整數且取值滿足條件成縮放倍數關係,且為正整數,同時,(2*DS_X)*(NS_X/DS_X)等於縮放後的YUV420圖像塊的寬度tx,(2*Ds_ y)*(Ns_y/Ds_y)等於縮放後的YUV420圖像塊的高度ty ;基於縮放倍數和需要縮放呈現的效果把YUV420圖像分成至少一個YUV420圖像塊,每個YUV420圖像塊由像素組成;為便於理解,以放大2倍為例說明,如圖1所示為原始YUV420圖像的結構圖,原始 YUV420圖像的高度和寬度分別為H、W,原始YUV420圖像分成至少一個原始YUV420圖像塊, 如圖1中的原始YUV420圖像塊A、B、C,預置每個原始YUV420圖像塊的像素為虹4,即原始 YUV420圖像塊的高度ty和寬度tx都為4,每個圖像塊中4個Y分量對應1個U分量和一個 V 分量;預置 Ns_x = 4,Ds_x = 2,Ns_y = 4,Ds_y = 2,Fx 和 Fy 者為 2 ;S602,根據所述預置原始YUV420圖像水平和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊;所述的插值濾波,例如把4個點的圖像變成8個點的圖像,那麼每個點如何取值變成8個點效果最佳的過程叫插值濾波;為便於理解,以放大2倍為例說明,圖2所示為原始YUV420圖像塊A縮放後的 YUV420圖像塊的結構圖,把原始YUV420圖像塊A放大2倍後像素為8x8,如圖2所示,包括 Y分量1-64,其中縮放後的圖像塊的寬度為tx,縮放後的圖像塊的高度ty ;S603,獲取縮放後的YUV420圖像塊的Y分量、U分量和V分量,計算rgb值,根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將rgb值寫入目標地址;如果旋轉,則RGB565圖像的寬度等於原始YUV420圖像塊的高度,縮放後的YUV420 圖像的高度成為RGB565圖像的寬度;所述的rgb值可以通過外部函數做顏色轉換的值,所述的外部函數為get_rgbl6_ value_clip_rgb 。本實施例中通過把原始YUV420圖像等分為至少一個原始YUV420圖像塊,對原始 YUV420圖像塊進行縮放,獲取YUV420圖像塊的Y分量、U分量和V分量,計算rgb值,根據 YUV420圖像的尺寸與移動終端屏幕尺寸確定是否旋轉分別將rgb值寫入目標地址,從而實現對每個原始YUV420圖像塊連續做縮放、計算rgb值並輸出(包括旋轉),減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例, 達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性,加速內存訪問速度。
實施例二圖7為本發明YUV420圖像轉換成RGB565圖像方法的第二優選實施例的流程圖。 所述方法包括以下步驟S701,預置原始YUV420圖像的Y、U、V分量,原始YUV420圖像等分為至少一個的 YUV420圖像塊;預置YUV420圖像的水平方向縮放倍數h和垂直方向縮放倍數Fy ;預置縮放緩衝區,用於存放縮放後的YUV420圖像塊的Y分量、U分量和V分量,分別由變量Yt、Ut 和Vt引用;預置循環變量x、y、xl、yl、i、j,初始為0 ;預置RGB565圖像的目標地址的首地址指針rgb和當前RGB565圖像塊存放的目標地址的指針P,都定義為short*類型;預置RGB565圖像塊的輸出坐標變量x2、y2 ;所述的YUV420圖像的水平方向縮放倍數!7X = Ns_x/Ds_x,所述的YUV420圖像的垂直方向縮放倍數Fy = Ns_y/Ds_y ;其中Ns_x、Ds_x、Ns_y和Ds_y都為正整數且取值滿足條件成縮放倍數關係,且為正整數,同時,(2*DS_X)*(NS_X/DS_X)等於縮放後的YUV420圖像塊的寬度tx,(2*Ds_ y)*(Ns_y/Ds_y)等於縮放後的YUV420圖像塊的高度ty ;基於縮放倍數和需要縮放呈現的效果把YUV420圖像分成至少一個YUV420圖像塊,每個YUV420圖像塊由像素組成;所述的首地址指針rgb記錄RGB565圖像塊需要存放的目標地址的首地址,所述的當前RGB565圖像塊存放的目標地址的指針ρ記錄當前RGB565圖像塊存放的目標地址;為便於理解,以放大2倍為例說明,如圖1所示為原始YUV420圖像的結構圖,原始 YUV420圖像的高度和寬度分別為H、W,原始YUV420圖像分成一個以上的原始YUV420圖像塊,如圖1中的原始YUV420圖像塊A、B、C,預置每個原始YUV420圖像塊的像素為虹4,即原始YUV420圖像塊的高度和寬度都為4,每個圖像塊中4個Y分量對應1個U分量和一個 V分量,這裡預置Ns_x = 4,Ds_x = 2,Ns_y = 4,Ds_y = 2,Fx和Fy都為2 ;圖2所示為原始YUV420圖像塊A縮放後的YUV420圖像塊的結構圖,把原始YUV420圖像塊A放大2倍後像素為8x8,如圖2所示,包括Y分量1-64,其中縮放後的圖像塊的寬度為tx,縮放後的圖像塊的高度ty ;所述的預置縮放緩衝區的為char_YUV420_zoom_tmp[3][(2*Ns_x)*(2*Ns_y)];所述的循環變量χ、y表示原始圖像的水平方向和垂直方向的坐標,在循環過程中,x、y分別以2*Ds_X、2*Ds_y為步進值步進;所述的循環變量xl、yl表示縮放後的YUV420 圖像的水平和垂直方向坐標,在循環過程中,xl、yl分別以2*Ns_X、2*Ns_y為步進值步進;所述的RGB565圖像塊輸出坐標變量x2、y2,表示的是RGB565圖像塊輸出的水平坐標和垂直坐標;為便於理解,以放大2倍為例說明,χ、y分別以2*Ds_x = 2*2 = 4、2*Ds_y = 2*2 =4步進,即每次處理4個像素的Y分量、1個像素的U分量和1個像素的V分量,如圖2所示,先處理前2個像素,對應的Y分量為1、2、9、10 (其中包含1個像素的U分量和1個像素的V分量),再處理後2個像素,對應的Y分量為3、4、11、12 (其中包含1個像素的U分量和 1個像素的V分量),第二次還是處理4個像素,即首先處理前2個像素,對應的Y分量為5、 6、13、14 (其中包含1個像素的U分量和1個像素的V分量)和再處理後2個像素,對應的 Y分量為7、8、15、16 (其中包含1個像素的U分量和1個像素的V分量),把4*4大小的分塊進入縮放、rgb轉換、旋轉輸出,直到處理完畢;
進一步還需要計算縮放後的YUV420圖像的寬度W1、高度HI、縮放後的YUV420圖像塊的高度ty和寬度tx、Y分量行距stride_t、U分量行距和V分量行距;計算RGB565圖像的寬度W2和目標地址的首地址指針rgb ;計算RGB565圖像塊的行距stride_d、偏移量 offset和當前RGB565圖像塊寫入的目標地址的指針ρ ;所述的縮放後的YUV420圖像的寬度Wl和高度Hl為W1 = ff*Fx, Hl = H*Fy ;為便於理解,以放大2倍為例說明,如圖1所示的原始YUV420圖像的結構圖中所述原始YUV420圖像放大2倍後,縮放後的YUV420圖像的高度和寬度分別為2H和2W ;所述縮放後的YUV420圖像的Y分量行距Stride_t是根據具體縮放倍數來確定的,即縮放後的YUV420圖像的每行像素的個數;所述的縮放後的YUV420圖像的U分量行距和V分量行距為stride_t的二分之一;以放大2倍為例說明,Y分量行距stride_t = 8,U 分量行距和V分量行距為Stride_t的二分之一,即都為4 ;所述的計算RGB565圖像的寬度W2的方法為如果旋轉,則W2 = HLRGB565圖像的寬度等於原始YUV420圖像塊的高度,縮放後的YUV420圖像的高度成為RGB565圖像的寬度;如果不旋轉,則W2 = Wl ;所述的RGB565圖像塊的行距stride_d的計算方法為stride_d = W2 ;所述的縮放後的YUV420圖像塊的高度ty和寬度tx為縮放後的YUV420圖像塊的垂直方向和水平方向像素的個數;所述的計算RGB565圖像的當前目標地址相對於圖像首地址的偏移量offset具體為如果旋轉,offset= 0*W2+(W2_1);如果不旋轉,則0ffset = 0 ;所述的offset為當前目標地址相對於圖像首地址的偏移量;所述的RGB565圖像的目標地址的首地址rgb為offset*2 (每個像素佔2個字節);所述的當前RGB565圖像塊存放的目標地址的指針p+ = offset*2 ;所述的RGB565圖像的目標地址的首地址rgb、RGB565圖像塊地址偏移量offset 和當前RGB565圖像塊存放的目標地址的指針ρ這三者的關係是rgb是輸出的RGB565圖像的首地址,只需要計算一次,offset是以像素為單位做偏移,rgb+offse討2就得到了以字節為偏移的當前RGB565圖像塊的輸出地址P。每輸出一個RGB565圖像塊,當前RGB565 圖像塊存放的目標地址的指針P都需要做偏移,即rgb+offse討2 ;S702,判斷是否7 <H,如果是,則進入步驟S703,如果否,則進入步驟S719 ;S703,判斷是否1 < W,如果是,則進入步驟S705,如果否,則進入步驟S704 ;S704,循環變量y和yl做步進,χ重置為0,進入步驟S702 ;所述循環變量y和yl做步進,具體為y+ = (2*Ds_y),yl+ = (2*Ns_y);S705,根據所述預置原始YUV420圖像水平和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊,並存到縮放緩衝區;其中縮放後的YUV420圖像塊的寬度為tx,縮放後的YUV420圖像塊的高度為ty ;為便於理解,以放大2倍為例說明,如圖1,原始YUV420圖像塊A像素為虹4,如圖2所示,放大2倍後像素為8x8,y和yl以步進值y+ = 4,yl+ = 8步進,縮放後的YUV420圖像塊存放到縮放緩衝區 YUV420_zoom_tmp [3]中,Yt = YUV420_zoom_tmp
,Ut = YUV420_ zoom_tmp[l],Vt = YUV420_zoom_tmp [2],分別以Yt、Ut和Vt分別引用縮放緩衝區中的Y 分量、U分量、V分量;此時的tx和ty分別為8,預置t_Stride表示縮放緩衝區的行跨距, 在本例中t_stride即為tx ;S706,計算i為縮放後的YUV420圖像塊垂直方向每次跳轉2行共跳轉的次數,計算j為縮放後的YUV420圖像塊水平方向每次處理4個像素共處理的次數;即i = ty/2,j = tx/4,所述的i = ty/2,表示垂直方向一次跳轉2行,所以ty除以2,以放大2倍為例說明,i = 4;所述的j = tx/4,表示水平方向一次處理4個像素,所以tx除以4,以放大2倍為例說明,j = 2 ;S707,判斷是否旋轉,如果是,則進入步驟S708,如果否,則進入步驟S713 ;所述的判斷是根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸確定是否旋轉寫入rgb值;S708,RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標進行交換,並將目標地址的指針P指向目標地址,具體為x2 = -yl, y2 = xl, ρ = &rgb [ (y2*stride_d+x2) ;因為要旋轉,縮放後的水平方向的YUV420圖像塊計算rgb值後按照從右向左的順序輸出,所以需要交換xl、yl ;為便於理解,以放大2倍為例說明,如圖3和圖4所示的坐標交換過程;S709,獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針P,同時j減1,具體為獲取所述每次處理4個像素中的前兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針P ;獲取所述每次處理4個像素中的後兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針p,同時 j減1 ;這裡每次寫入目標地址的指針ρ時,所述目標地址的指針ρ和竹要做偏移,即P+ =2*stride_d,Yt+ = 2 ;為便於理解,以放大2倍為例說明,如圖3所示,這裡獲取的U分量和V分量為Y 分量Yl、Y2、Y9、YlO所對應的Ul分量和Vl分量,寫入目標地址Rl和R2後,目標地址的指針P、Yt要做偏移,寫入目標地址R9和RlO後,目標地址的指針p、Yt也要做偏移,即ρ+ = 2*stride_d,Yt+ = 2 ;所述獲取所述每次處理4個像素中的前兩個像素的U分量和V分量,並計算rgb 值,按照從右向左的順序分別寫入目標地址的指針P的過程具體為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為外部函數,該外部函數完成YUV420到rgb565的轉換;為便於理解,以放大2倍為例說明,附、1 2、1 9、1 10輸出的目標位置如圖4所示,為圖3中YUV420對應的RGB565圖像塊旋轉輸出的目標位置,即,所述的ρ
= get_rgbl6_ value_clip_rgb (u, v,Yt
)表示獲取第一個Y分量Yl對應的rgb值,寫入Rl的位置;所述 p[stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [1])表示獲取第二個 Y 分量Υ2對應的rgb值,寫入R2的位置;ρ [-1] = get_rgbl6_value_clip_rgb(u, ν, Yt [t_stride+0]) ^/^l^lXllH 個Y分量Y9對應的rgb值,寫入R9的位置;所述 p[_l+stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個Y分量YlO對應的rgb值,寫入RlO的位置;所述獲取所述每次處理4個像素中的後兩個像素的U分量和V分量,並計算rgb 值,按照從右向左的順序分別寫入目標地址的指針P的過程為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倍為例說明,如圖4所示R3、R4、RlU R12寫入目標地址的位置,即所述 P
= get_rgbl6_value_clip_rgb (u, ν, Yt
)表示獲取第一個 Y 分量 Υ3 對應的rgb值,寫入R3的位置;所述 p[stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [1])表示獲取第二個 Y 分量W對應的rgb值,寫入R2的位置;ρ [-1] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0]) ^^l^lXllH 個Y分量Yll對應的rgb值,寫入Rll的位置;所述 p[_l+stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個Y分量Y12對應的rgb值,寫入R12的位置;所述獲取所述每次處理4個像素中的前兩個像素的U分量和V分量和獲取所述每次處理4個像素中的後兩個像素的U分量和V分量是從縮放緩衝區中獲取;S710,判斷j是否等於0,如果是,則進入步驟S711,如果否,則進入步驟S709 ;S711,繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針ρ指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4 個像素共處理的次數;所述繼續獲取縮放後的YUV圖像塊的下一個Y分量是從縮放緩衝區中獲取,即 Yt+ = -tx+2*t_stride, ρ+ = -2-tx*stride_d, i = i—, j = tx/4 ;S712,判斷i是否等於0,如果是,則進入步驟S718,如果否,則進入步驟S709 ;S713,將所述RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標一致,並將 P 指向目標地址,具體為:x2 = xl, y2 = yl,ρ = &rgb [ (y2*stride_d+x2) *2];因為不需要旋轉,縮放後的YUV420圖像塊計算rgb值後按照從左向右的順序輸出,所以不需要交換xi、yi ;S714,獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針P,同時j減1,具體為獲取所述每次處理4個像素中的前兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針P ;獲取所述每次處理4個像素中的後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針p,同時 j減1 ;這裡每次寫入目標地址的指針P時,所述目標地址的指針P和竹要做偏移,即P+ =2,Yt+ = 2 ;為便於理解,以放大2倍為例說明,如圖2所示,這裡獲取的U分量和V分量為Y 分量Yl、Y2、Y9、YlO所對應的Ul分量和Vl分量,計算rgb值,分別寫入ρ ;圖5為圖3中 YUV420對應的RGB565圖像塊非旋轉寫入目標地址位置的結構圖;所述獲取所述每次處理4個像素中的前兩個像素的U分量和V分量,並計算rgb 值,按照從左向右的順序分別寫入目標地址的指針P的過程,具體為ρ
= 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倍為例說明,如圖5為圖3中YUV420對應的RGB565圖像塊 R1、R2、R9、R10非旋轉寫入目標地址的位置,即所述p
= get_rgbl6_value_clip_rgb (u, ν, Yt
)表示獲取第一個Y分量Yl對應的rgb值,寫入Rl的位置;所述p[l] = get_rgbl6_value_clip_rgb (u,v,Yt[l])表示獲取第二個 Y 分量 Y2 對應的rgb值,寫入R2的位置;所述 ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0])表示獲取第三個Y分量Y9對應的rgb值,寫入R9的位置;所述 ρ [stride_d+l] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個Y分量YlO對應的rgb值,寫入RlO的位置;所述獲取所述每次處理4個像素中的後兩個像素的U分量和V分量,並計算rgb 值,按照從右向左的順序分別寫入目標地址的指針P的過程,具體為ρ
= 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倍為例說明,所述的獲取所述每次處理4個像素中的後兩個像素的U分量和V分量,如圖2所示,此時獲取的U分量和V分量為Y分量TO、Y4、Y11、Y12 所對應的U2分量和V2分量,如圖5為圖3中YUV420對應的RGB565圖像塊R3、R4、R11、R12 非旋轉寫入目標地址的位置,即,所述p
= get_rgbl6_value_clip_rgb (u, ν, Yt
)表示獲取第一個 Y 分量 Y3 對應的rgb值,寫入R3的位置;所述p[l] = get_rgbl6_value_clip_rgb(u,v,Yt[l])表示獲取第二個 Y 分量 W 對應的rgb值,寫入R4的位置;
所述 ρ [stride_d] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+0])表示獲取第三個Y分量Yll對應的rgb值,寫入Rll的位置;所述 p[stride d+1] = get_rgbl6_value_clip_rgb (u, ν, Yt [t_stride+l])表示獲取第四個Y分量Y12對應的rgb值,寫入R12的位置;S715,判斷j = 0 ?如果是,則進入步驟S716,如果否,則進入步驟S714 ;S716,繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針ρ指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4 個像素共處理的次數;所述繼續獲取縮放後的YUV圖像塊的下一個Y分量是從縮放緩衝區中獲取,即 Yt+ = -tx+2*t_stride, ρ+ = -tx+2*stride_d, i = i—, j = tx/4 ;S717,判斷i是否等於0,如果是,則進入步驟S718,如果否,則進入步驟S714 ;S718,循環變量χ和xl做步進,進入步驟S703 ;所述循環變量χ和xl做步進具體為x = x+(2*Ds_x),xl = xl+(2*Ns_x);S719, RGB565圖像輸出結束。本實施例中通過預置六個循環變量和計算步進值,在一個相同的循環周期完成整個原始YUV420圖像轉換成RGB565圖像的過程,其中在轉換過程中是通過先把原始YUV420 圖像等分為原始YUV420圖像塊,對每個原始YUV420圖像塊進行縮放、顏色轉換(即計算 rgb值),分別寫入目標地址(包括旋轉),減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性,加速內存訪問速度。實施例三圖8為本發明YUV420圖像轉換成RGB565圖像系統的第一優選實施例的結構示意圖。所述的系統包括初始模塊、縮放模塊以及輸出模塊;初始模塊,與縮放模塊相連,用於將原始的YUV420圖像等分為至少一個的原始 YUV420圖像塊;並預置原始YUV420圖像的水平方向和垂直方向的縮放倍數;所述原始YUV420圖像的水平方向縮放倍數h = Ns_x/Ds_x,所述原始YUV420圖像的垂直方向縮放倍數Fy = Ns_y/Ds_y,其中Ns_x和Ds_X、Ns_y和Ds_y的取值滿足條件 成縮放倍數關係,且為正整數,同時,(2*DS_X)*(NS_X/DS_X)等於縮放後的YUV420圖像塊的寬度tx,(2*Ds_y)*(Ns y/Ds_y)等於縮放後的YUV420圖像塊的高度ty ;基於縮放倍數和需要縮放呈現的效果把YUV420圖像分成一個或一個以上的YUV420圖像塊,每個YUV420 圖像塊由像素組成;為便於理解,以放大2倍為例說明,如圖1所示為原始YUV420圖像的結構圖,原始 YUV420圖像的高度和寬度分別為H、W,原始YUV420圖像分成一個以上的原始YUV420圖像塊,如圖1中的原始YUV420圖像塊A、B、C,每個原始YUV420圖像塊的像素為虹4,即原始 YUV420圖像塊的高度和寬度都為4,每個圖像塊中4個Y分量對應1個U分量和一個V分量;預置 Ns_x = 4,Ds_x = 2,Ns_y = 4,Ds_y = 2,Fx 禾口 Fy 者為 2 ;縮放模塊,與初始模塊和輸出模塊相連,用於根據所述預置原始YUV420圖像水平和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊;為便於理解,以放大2倍為例說明,圖2所示為原始YUV420圖像塊A縮放後的 YUV420圖像塊的結構圖,把原始YUV420圖像塊A放大2倍後像素為8x8,如圖2所示,包括 Y分量1-64,其中縮放後的圖像塊的寬度為tx,縮放後的圖像塊的高度ty ;輸出模塊,與縮放模塊相連,用於獲取縮放後的YUV420圖像塊的Y分量、U分量和 V分量,計算rgb值,根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將rgb值寫入目標地址;所述的是否旋轉是根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸確定是否需要旋轉寫入rgb值,即RGB565圖像的寬度等於原始YUV420圖像塊的高度,縮放後的 YUV420圖像的高度成為RGB565圖像的寬度;所述的rgb值是通過外部函數做顏色轉換的值,所述的外部函數為get_rgbl6_ value_clip_rgb ;本實施例中通過初始模塊把原始YUV420圖像等分為原始YUV420圖像塊,縮放模塊對原始YUV420圖像塊進行縮放,輸出縮放後的YUV420圖像塊,輸出模塊先顏色轉換(即計算rgb值),然後根據YUV420圖像的尺寸與移動終端屏幕尺寸確定是否旋轉分別將rgb 值寫入目標地址,從而實現對每個原始YUV420圖像塊連續做縮放、計算rgb值並輸出(包括旋轉),減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在各種像素移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性, 加速內存訪問速度。實施例四圖9為本發明YUV420圖像轉換成RGB565圖像系統的第二優選實施例的結構示意圖,本實施例中的需要做旋轉操作。所述系統包括初始模塊、第一判斷模塊、第二判斷模塊、縮放模塊、輸出模塊、第三判斷模塊、第四判斷模塊以及步進模塊;初始模塊,與第一判斷模塊相連,用於將原始的YUV420圖像等分為至少一個的原始YUV420圖像塊;並預置原始YUV420圖像的水平方向和垂直方向的縮放倍數;還用於預置所述原始YUV420圖像的寬度W和高度H;還用於預置當前RGB565圖像塊存放的目標地址的指針P ;還用於預置縮放緩衝區,存放所述縮放後的YUV420圖像的Y分量、U分量和V 分量,分別由變量竹、Ut和Vt引用;還用於預置循環變量x、y、xl、yl、i、j,初始為0。所述初始模塊與所述第一判斷模塊相連,還用於預置RGB565圖像的目標地址的首地址指針rgb和當前RGB565圖像塊存放的目標地址的指針p,都定義為short*類型;預置RGB565圖像塊輸出坐標變量x2、y2 ;計算縮放後的YUV420圖像的寬度W1、高度HI、縮放後的YUV420圖像塊的高度ty和寬度tx、Y分量行距stride_t、U分量行距和V分量行距; 計算RGB565圖像的寬度W2和目標地址的首地址rgb ;計算RGB565圖像塊的行距stride_ d、偏移量offset和當前RGB565圖像塊寫入的目標地址ρ ;所述的YUV420圖像的水平方向縮放倍數!7X = Ns_x/Ds_x,所述的YUV420圖像的垂直方向縮放倍數Fy = Ns_y/Ds_y,其中Ns_x和Ds_x、Ns_y和Ds_y的取值滿足條件成縮放倍數關係,且為正整數,同時,(2*DS_X)*(NS_X/DS_X)等於縮放後的YUV420圖像塊的寬度tx,(2*DS_y)*(NS_y/DS_y)等於縮放後的YUV420圖像塊的高度ty。基於縮放倍數和需要縮放呈現的效果把YUV420圖像分成至少一個YUV420圖像塊,每個YUV420圖像塊由像素組成;所述的首地址指針rgb記錄RGB565圖像塊需要存放的目標地址的首地址,所述的當前RGB565圖像塊存放的目標地址的指針ρ記錄當前RGB565圖像塊存放的目標地址;所述的循環變量x、y表示原始圖像的水平和垂直方向的坐標,在循環過程中,x、y 分別以2*Ds_X、2*Ds_y為步進值步進;所述的循環變量xl、yl表示縮放後的YUV420圖像的水平和垂直方向坐標,在循環過程中,xl、yl分別以2*Ns_X、2*Ns_y為步進值步進;所述的RGB565圖像塊輸出坐標變量x2、y2,表示的是RGB565圖像塊輸出的水平坐標和垂直坐標;所述的縮放後的YUV420圖像的寬度Wl和高度Hl為W1 = ff*Fx, Hl = H*Fy ;所述的縮放後的YUV420圖像的Y分量行距Stride_t是根據具體縮放倍數來,即每行像素的個數;所述的縮放後的YUV420圖像的U分量行距和V分量行距為Stride_t的二分之一;以放大2倍為例說明,Y分量行距Stride_t = 8,U分量行距和V分量行距為 stridet的二分之一,即都為4 ;所述的RGB565圖像的寬度W2 = Hl,RGB565圖像的寬度等於原始YUV420圖像塊的高度,縮放後的YUV420圖像的高度成為RGB565圖像的寬度;所述的縮放後的YUV420圖像塊的高度ty和寬度tx為縮放後的YUV420圖像塊的垂直方向和水平方向像素的個數;所述的RGB565圖像塊的當前目標地址相對於RGB565圖像首地址的偏移量offset =0*W2+(W2-1);所述的offset為當前目標地址相對於RGB565圖像首地址的偏移量;所述的RGB565圖像的目標地址的首地址rgb為offsets ;所述的當前RGB565圖像塊存放的目標地址的指針p+ = offset*2 ;所述的RGB565圖像的目標地址的首地址rgb、RGB565圖像塊的地址偏移量offset 和當前RGB圖像塊存放的目標地址的指針ρ這三者的關係是rgb是輸出的RGB565圖像的首地址,只需要計算一次,offset是以像素為單位做偏移,rgb+offse討2就得到了以字節為偏移的當前RGB565圖像塊的輸出地址P。每輸出一個RGB565圖像塊,當前RGB565圖像塊存放的目標地址的指針P都需要做偏移,即rgb+offse討2 ;第一判斷模塊分別與所述初始模塊、所述第二判斷模塊和所述步進模塊相連,用於判斷是否y < H,如果是,則通知第二判斷模塊,如果否,則RGB565圖像輸出結束;第二判斷模塊所述與所述第一判斷模塊、所述步進模塊和所述縮放模塊相連,用於判斷是否χ < W,如果是,則通知縮放模塊進行縮放,如果否,則通知步進模塊;縮放模塊分別與所述第二判斷模塊和所述輸出模塊相連,用於根據所述預置原始 YUV420圖像水平和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊,並存到縮放緩衝區;還用於計算i為縮放後的YUV420圖像塊垂直方向每次跳轉2行共跳轉的次數,計算j為縮放後的YUV420圖像塊水平方向每次處理4個像素共處理的次數;還用於將 RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標進行交換,並將目標地址的指針P指向目標地址,並通知輸出模塊;
其中縮放後的YUV420圖像塊的寬度為tx,縮放後的YUV420圖像塊的高度為ty ;輸出模塊分別與所述縮放模塊、所述第三判斷模塊和所述第四判斷模塊相連,用於接收縮放模塊發送的通知、第三判斷模塊發送的通知和第四判斷模塊發送的通知,還用於如果旋轉,則獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針P,同時j減1 ;所述按照從右向左的順序分別寫入目標地址的指針p,即RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標進行交換,即x2 = -yl,y2 = xl,同時將目標地址的指針 P 指向目標地址,即 P = &rgb[(y2*stride_d+x2)*2];因為要旋轉,縮放後的水平方向的YUV420圖像塊計算rgb值後按照從右向左的順序輸出,所以需要交換xl、yi ;為便於理解,以放大2倍為例說明,如圖3和圖4所示的坐標交換過程;第三判斷模塊分別與所述輸出模塊和所述第四判斷模塊相連,用於判斷j是否等於0,如果是,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針P指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理 4個像素共處理的次數;並通知第四判斷模塊;如果否,則通知輸出模塊;第四判斷模塊分別與所述第三判斷模塊、所述輸出模塊和所述步進模塊相連,用於判斷i是否等於0,如果是,則通知所述步進模塊,並通知所述第二判斷模塊;如果否,則通知所述輸出模塊;步進模塊分別與所述第一判斷模塊、所述第二判斷模塊和所述第四判斷模塊相連,用於接收第二判斷模塊的通知,並將循環變量y、yl做步進,循環變量χ重置為0,並通知所述第一判斷模塊;還用於接收所述第四判斷模塊發送的通知,並將循環變量χ和xl做步進。本實施例中通過第二判斷模塊和第四判斷模塊的判斷結果,通知步進模塊對循環變量X、XI、1、yl進行步進,從而獲取下一個原始YUV420圖像塊;通過第三判斷模塊和第四判斷模塊的判斷結果,通知輸出模塊計算當前兩行的RGB圖像塊的rgb值並輸出(包括旋轉);實現了在需要旋轉的情況下,在同一個循環周期內完成整個YUV420圖像到RGB565 圖像的轉換,減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始 YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性,加速內存訪問速度。實施例五圖9為本發明YUV420圖像轉換成RGB565圖像系統的第二優選實施例的結構示意圖,本實施例中的不需要做旋轉操作。所述系統包括初始模塊、第一判斷模塊、第二判斷模塊、縮放模塊、輸出模塊、第三判斷模塊、第四判斷模塊以及步進模塊;初始模塊與所述第一判斷模塊相連,還用於預置所述原始YUV420圖像的寬度W和高度H ;還用於預置當前RGB565圖像塊存放的目標地址的指針ρ ;還用於預置縮放緩衝區, 存放所述縮放後的YUV420圖像的Y分量、U分量和V分量,分別由變量Yt、Ut和Vt引用; 還用於預置循環變量χ、y、xl、yl、i、j,初始為0 ;
所述初始模塊還預置RGB565圖像的目標地址的首地址指針rgb和當前RGB565圖像塊存放的目標地址的指針P,都定義為short*類型;預置RGB565圖像塊輸出坐標變量 x2、y2 ;計算縮放後的YUV420圖像的寬度W1、高度HI、縮放後的YUV420圖像塊的高度ty和寬度tx、Y分量行距stride_t、U分量行距和V分量行距;計算RGB565圖像的寬度W2和目標地址的首地址rgb ;計算RGB565圖像塊的行距stride_d、偏移量offset和當前RGB565 圖像塊寫入的目標地址P;所述的縮放後的YUV420圖像的寬度Wl和高度Hl為W1 = ff*Fx, Hl = H*Fy ;所述的縮放後的YUV420圖像的Y分量行距Stride_t是根據具體縮放倍數確定, 即每行像素的個數;所述的縮放後的YUV420圖像的U分量行距和V分量行距為Stride_t 的二分之一;所述的RGB565圖像的寬度W2 = Wl ;所述的RGB565圖像的目標地址的首地址rgb為offsets ;所述的RGB565圖像塊的行距stride_d = W2 ;所述的縮放後的YUV420圖像塊的高度ty和寬度tx為縮放後的YUV420圖像塊的垂直方向和水平方向像素的個數;所述的RGB565圖像塊的當前目標地址相對於圖像首地址的偏移量offset = 0 ;所述的當前RGB565圖像塊存放的目標地址的指針p+ = offset*2 ;所述第一判斷模塊分別與初始模塊、所述第二判斷模塊和所述步進模塊相連,用於判斷是否y < H,如果是,則通知第二判斷模塊,如果否,則RGB565圖像輸出結束;所述第二判斷模塊分別與所述第一判斷模塊、所述步進模塊和所述縮放模塊相連,用於判斷是否χ < W,如果是,則通知縮放模塊進行縮放,如果否,則通知步進模塊;所述縮放模塊分別與所述第二判斷模塊和所述輸出模塊相連,還用於計算i為縮放後的YUV420圖像塊垂直方向每次跳轉2行共跳轉的次數,計算j為縮放後的YUV420圖像塊水平方向每次處理4個像素共處理的次數;還用於將RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標進行交換,並將目標地址的指針ρ指向目標地址,並通知輸出模塊;所述輸出模塊分別與所述縮放模塊、所述第三判斷模塊和所述第四判斷模塊相連,用於接收所述縮放模塊發送的通知、所述第三判斷模塊發送的通知和所述第四判斷模塊發送的通知,還用於如果不旋轉,則獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針p, 同時j減1,並通知第三判斷模塊進行判斷;因為不需要旋轉,縮放後的YUV420圖像塊計算rgb值後按照從左向右的順序輸出,所以不需要交換xi、yi ;所述第三判斷模塊分別與所述輸出模塊和所述第四判斷模塊相連,用於判斷j是否等於0,如果是,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針P指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4個像素共處理的次數;並通知第四判斷模塊;如果否,則通知輸出模塊;所述第四判斷模塊分別與所述第三判斷模塊、所述輸出模塊和所述步進模塊相連,用於判斷i是否等於0,如果是,則通知所述步進模塊,並通知所述第二判斷模塊;如果否,則通知所述輸出模塊;所述步進模塊分別與所述第一判斷模塊、所述第二判斷模塊和所述第四判斷模塊相連,用於接收所述第二判斷模塊的通知並y+ = (2*Ds_y),並將循環變量y、yl做步進,循環變量χ重置為0,並通知所述第一判斷模塊;還用於接收所述第四判斷模塊發送的通知, 並將循環變量Χ和Xl做步進。本實施例中通過第二判斷模塊和第四判斷模塊的判斷結果,通知步進模塊對循環變量x、xl、y、yl進行步進,從而獲取下一個原始YUV420圖像塊;通過第三判斷模塊和第四判斷模塊的判斷結果,通知輸出模塊計算當前兩行的RGB圖像塊的rgb值並輸出;實現了在不需要旋轉的情況下,在同一個循環周期內完成整個YUV420圖像到RGB565圖像的轉換,減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,減少內存使用量,同時保持數據的局部性,加速內存訪問速度。以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述方法包括以下步驟 將原始YUV420圖像等分為至少一個原始YUV420圖像塊;並預置所述原始YUV420圖像的水平方向和垂直方向的縮放倍數;根據所述原始YUV420圖像的水平方向和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊;根據所述縮放後的YUV420圖像塊的Y分量、U分量和V分量,計算rgb值,根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將所述rgb值寫入目標地址。
2.如權利要求1所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於, 所述的步驟「根據所述原始YUV420圖像的水平方向和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊」之前還包括步驟 預置所述原始YUV420圖像的寬度W和高度H ; 預置當前RGB565圖像塊存放的目標地址的指針ρ ;預置縮放緩衝區,用於存放所述縮放後的YUV420圖像的Y分量、U分量和V分量; 預置循環變量X、y、XI、yi、i、j,初始為0 ;如果y < H且χ < W,則進入步驟「根據所述原始YUV420圖像的水平方向和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊」;所述的步驟「根據所述縮放後的YUV420圖像塊的Y分量、U分量和V分量,計算rgb值, 根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將所述rgb值寫入目標地址」中旋轉時寫入目標地址的過程包括步驟計算i為縮放後的YUV420圖像塊垂直方向每次跳轉2行共跳轉的次數,計算j為縮放後的YUV420圖像塊水平方向每次處理4個像素共處理的次數;將RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標進行交換,並將目標地址的指針P指向目標地址;獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算 rgb值,按照從右向左的順序分別寫入目標地址的指針P,同時j減1。
3.如權利要求2所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述步驟「獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針p,同時j減1」之後還包括如果j等於0,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針ρ 指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4個像素共處理的次數;如果i等於0,則循環變量χ和xl做步進;如果χ不小於W,則循環變量y和yl做步進,χ重置為0 ;如果y不小於H,則RGB565圖像輸出結束。
4.如權利要求3所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述的步驟「如果j等於0,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針P指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4個像素共處理的次數」之後還包括步驟如果j不等於0,則進入步驟「獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針p,同時 j 減 1」;所述的步驟「如果i等於0,則循環變量χ和xl做步進」還包括步驟 如果i不等於0,則進入步驟「獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針p,同時 j 減 1」。
5.如權利要求2所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述的步驟「根據所述縮放後的YUV420圖像塊的Y分量、U分量和V分量,計算rgb值, 根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將所述rgb值寫入目標地址」中不需要旋轉時寫入目標地址的過程包括步驟計算i為縮放後的YUV420圖像塊垂直方向每次跳轉2行共跳轉的次數,計算j為縮放後的YUV420圖像塊水平方向每次處理4個像素共處理的次數;將所述RGB565圖像塊輸出的坐標等於所述縮放後的YUV420圖像塊的坐標,並將目標地址的指針P指向目標地址;獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算 rgb值,按照從左向右的順序分別寫入目標地址的指針P,同時j減1。
6.如權利要求5所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述步驟「獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針P,同時j減1」之後還包括如果j等於0,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針ρ 指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4個像素共處理的次數;如果i等於0,則循環變量χ和xl做步進;如果χ不小於W,則循環變量y和yl做步進,χ重置為0 ;如果y不小於H,則RGB565圖像輸出結束。
7.如權利要求6所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述的步驟「如果j等於0,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針P指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理4個像素共處理的次數」之後還包括步驟如果j不等於0,則進入步驟「獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針p,同時 j 減 1」;所述的步驟「如果i等於0,則χ和xl做步進」還包括步驟如果i不等於0,則進入步驟「獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針p,同時 j 減 1」。
8.如權利要求2或5所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述原始YUV420圖像的水平方向縮放倍數等於Ns_x與Ds_x的比值,所述原始YUV420 圖像的垂直方向縮放倍數等於Ns_y與Ds_y的比值;其中所述Ns_x、所述Ds_x、所述Ns_y以及所述Ds_y都為正整數且取值滿足條件成為正整數的縮放倍數關係,同時,(2*Ds_x)*(Ns_x/Ds_x)等於所述縮放後的YUV420圖像塊的寬度,(2*DS_y)*(NS_y/DS_y)等於所述縮放後的YUV420圖像塊的高度。
9.如權利要求3或6所述的YUV420圖像轉換成RGB565圖像的方法,其特徵在於,所述循環變量χ和xl做步進,具體為在循環過程中,χ、xl分別以2*Ds_x、2*Ns_x為步進值步進;所述循環變量y和yl做步進,具體為在循環過程中,y、yl分別以2*Ds_y、2*Ns_y為步進值步進;其中所述Ns_x、所述Ds_x、所述Ns_y以及所述Ds_y都為正整數且取值滿足條件成為正整數的縮放倍數關係,同時,(2*Ds_x)*(Ns_x/Ds_x)等於所述縮放後的YUV420圖像塊的寬度,(2*Ds_y)*(Ns y/Ds_y)等於所述縮放後的YUV420圖像塊的高度。
10.一種YUV420圖像轉換成RGB565圖像的系統,其特徵在於,所述系統包括初始模塊、縮放模塊以及輸出模塊;所述初始模塊與所述縮放模塊相連,用於將原始YUV420圖像等分為至少一個原始 YUV420圖像塊,並預置所述原始YUV420圖像的水平方向和垂直方向的縮放倍數;所述縮放模塊分別與所述初始模塊和所述輸出模塊相連,用於根據所述原始YUV420 圖像的水平方向和垂直方向的縮放倍數,插值濾波生成縮放後的YUV420圖像塊;所述輸出模塊與所述縮放模塊相連,用於根據所述縮放後的YUV420圖像塊的Y分量、 U分量和V分量,計算rgb值,根據縮放後的YUV420圖像的尺寸與移動終端屏幕尺寸,確定是否旋轉並分別將所述rgb值寫入目標地址。
11.如權利要求10所述的YUV420圖像轉換成RGB565圖像的系統,其特徵在於,所述系統還包括第一判斷模塊、第二判斷模塊、第三判斷模塊、第四判斷模塊和步進模塊;所述初始模塊與所述第一判斷模塊相連,還用於預置所述原始YUV420圖像的寬度W和高度H ;還用於預置當前RGB565圖像塊存放的目標地址的指針ρ ;還用於預置縮放緩衝區, 存放所述縮放後的YUV420圖像的Y分量、U分量和V分量;還用於預置循環變量χ、y、xl、 yl、i、j,初始為0 ;所述第一判斷模塊分別與所述初始模塊、所述第二判斷模塊和所述步進模塊相連,用於判斷是否y < H,如果是,則通知第二判斷模塊,如果否,則RGB565圖像輸出結束;所述第二判斷模塊分別與所述第一判斷模塊、所述步進模塊和所述縮放模塊相連,用於判斷是否χ < W,如果是,則通知縮放模塊進行縮放,如果否,則通知步進模塊;所述縮放模塊分別與所述第二判斷模塊和所述輸出模塊相連,還用於計算i為縮放後的YUV420圖像塊垂直方向每次跳轉2行共跳轉的次數,計算j為縮放後的YUV420圖像塊水平方向每次處理4個像素共處理的次數;還用於當需要旋轉時,則將RGB565圖像塊輸出的坐標與縮放後的YUV420圖像塊的坐標進行交換,並將目標地址的指針ρ指向目標地址, 並通知輸出模塊;還用於不需要旋轉時,則將所述RGB565圖像塊輸出的坐標等於所述縮放後的YUV420圖像塊的坐標,並將目標地址的指針ρ指向目標地址,並通知輸出模塊;所述輸出模塊分別與所述縮放模塊、所述第三判斷模塊和所述第四判斷模塊相連,用於接收所述縮放模塊發送的通知、所述第三判斷模塊發送的通知和所述第四判斷模塊發送的通知;還用於如果旋轉,則獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U 分量和V分量,並計算rgb值,按照從右向左的順序分別寫入目標地址的指針P,同時j減 1 ;所述的輸出模塊還用於如果不旋轉,則獲取所述每次處理4個像素中的前兩個像素和後兩個像素的U分量和V分量,並計算rgb值,按照從左向右的順序分別寫入目標地址的指針P,同時j減1 ;所述第三判斷模塊分別與所述輸出模塊和所述第四判斷模塊相連,用於判斷j是否等於0,如果是,則繼續獲取縮放後的YUV圖像塊的下一個Y分量,將目標地址的指針ρ指向所述Y分量將要寫入的目標地址,i減1,計算j為縮放後的YUV圖像塊水平方向每次處理 4個像素共處理的次數;並通知所述第四判斷模塊;如果否,則通知所述輸出模塊;所述第四判斷模塊分別與所述第三判斷模塊、所述輸出模塊和所述步進模塊相連,用於判斷i是否等於0,如果是,則通知所述步進模塊,並通知所述第二判斷模塊;如果否,則通知所述輸出模塊;所述步進模塊分別與所述第一判斷模塊、所述第二判斷模塊和所述第四判斷模塊相連,用於接收所述第二判斷模塊的通知,並將循環變量y、yi做步進,循環變量X重置為0,並通知所述第一判斷模塊;還用於接收所述第四判斷模塊發送的通知,並將循環變量X和Xl 做步進。
全文摘要
本發明公開一種YUV420圖像轉換成RGB565圖像的方法和系統,通過把原始YUV420圖像等分為原始YUV420圖像塊並進行縮放,獲取縮放後的YUV420圖像塊的U分量和V分量,計算rgb值,根據YUV420圖像的尺寸與移動終端屏幕尺寸確定是否旋轉分別將rgb值寫入目標地址,從而實現對每個原始YUV420圖像塊連續做縮放、計算rgb值並旋轉或非旋轉後輸出,減少了循環的次數和訪問內存的數量,提高了轉換效率,輸出的RGB565圖像可以在不同像素的移動終端顯示,通過把原始YUV420圖像等分為不同等分比例的原始YUV420圖像塊和不同的縮放比例,達到最佳的顯示效果,加速內存訪問速度。
文檔編號H04N9/64GK102281382SQ20111027829
公開日2011年12月14日 申請日期2011年9月19日 優先權日2010年12月30日
發明者張磊, 鄧鄒平 申請人:深圳市融創天下科技股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀