本發(fā)明涉及圖像格式轉(zhuǎn)換技術(shù)領(lǐng)域,更具體的,涉及一種rgb格式圖像轉(zhuǎn)yuv420格式的方法及裝置。
背景技術(shù):
隨著服務(wù)器和網(wǎng)絡(luò)的發(fā)展,桌面虛擬化技術(shù)的應(yīng)用越來越廣泛,但是,在推廣過程中,虛擬化技術(shù)也帶來了一些新的問題,尤其是在對計(jì)算機(jī)輔助設(shè)計(jì)軟件的支持方面表現(xiàn)的尤為明顯。
眾所周知,計(jì)算機(jī)輔助設(shè)計(jì)軟件涉及大量計(jì)算、渲染等復(fù)雜工作,一般需要專業(yè)顯卡支持,如nvidia(中文名稱:英偉達(dá))的m4000等。vdi(英文全稱:virtualdesktopinfrastructure)是一種基于服務(wù)器的計(jì)算模型,為企業(yè)級的實(shí)現(xiàn)桌面系統(tǒng)的遠(yuǎn)程動態(tài)訪問與數(shù)據(jù)中心托管技術(shù),vdi支持計(jì)算機(jī)輔助設(shè)計(jì)軟件一般采用顯卡虛擬化的方案,目前主流的顯卡虛擬化方案分為硬件虛擬化和gpu共享。
無論是采用gpu共享還是gpu硬件虛擬化的方案,都要解決gpu渲染后的圖像如何傳輸出來的問題,計(jì)算機(jī)渲染出來的圖像,大多采用srgb標(biāo)準(zhǔn),而rgb24和rgb32又是其主流的渲染后圖像的存儲格式,當(dāng)前vmware、華為、citrix基本上采用基于h264的編碼方案,在進(jìn)行h264編碼時,首先要把rgb格式轉(zhuǎn)換為yuv420格式。
現(xiàn)有的rgb格式轉(zhuǎn)換為yuv420格式的方法,在vdi環(huán)境下,計(jì)算機(jī)輔助設(shè)計(jì)場景中畫面關(guān)鍵細(xì)節(jié)易丟失,顯示效果差。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種rgb格式圖像轉(zhuǎn)yuv420格式的方法及裝置,將各個像素分塊中每個像素的各個顏色分量,映射到線性空間,再求平均,并將平均值逆映射到相應(yīng)的顏色分量的0~255范圍內(nèi),得到各個像素分塊的各個修正顏色分量,避免了計(jì)算機(jī)輔助設(shè)計(jì)場景中畫面關(guān)鍵細(xì)節(jié)丟失的問題,改善了顯示效果。
具體技術(shù)方案如下:
一種rgb格式圖像轉(zhuǎn)yuv420格式的方法,包括:
將待處理的rgb格式圖像分割為多個2*2的像素分塊;
根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b顏色分量,計(jì)算各個所述像素的y分量;
分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,并把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量;
根據(jù)所述預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及各個所述像素分塊的r、g、b修正顏色分量,分別計(jì)算各個所述像素分塊的u分量和v分量,結(jié)合各個所述像素的y分量,得到y(tǒng)uv420格式的圖像。
優(yōu)選的,當(dāng)所述待處理的rgb格式圖像為rgb32格式時,在所述將待處理的rgb格式圖像分割為多個2*2的像素分塊,之前還包括:
將待處理的rgb32格式圖像轉(zhuǎn)化為rgb24格式圖像。
優(yōu)選的,所述分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,包括:
分別將每一個所述像素分塊中每個像素的r、g、b顏色分量除以255,得到范圍為0~1的浮點(diǎn)數(shù);
將各個所述浮點(diǎn)數(shù)分別作冪為gamma的冪運(yùn)算,得到每一個所述像素分塊中每個像素的r、g、b顏色分量的線性值。
優(yōu)選的,所述在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,包括:
當(dāng)每個所述像素的各個顏色分量的線性值分別為r′、g′和b′時,每個所述像素分塊中每個顏色分量的平均值分別為:ravg=(r1′+r2′+r3′+r4′)/4、gavg=(g1′+g2′+g3′+g4′)/4和bavg=(b1′+b2′+b3′+b4′)/4,所述r1′、r2′、r3′和r4′分別為每個所述像素分塊中各個像素的r顏色分量線性值,所述g1′、g2′、g3′和g4′分別為每個所述像素分塊中各個像素的g顏色分量線性值,所述b1′、b2′、b3′和b4′分別每個所述像素分塊中各個像素的b顏色分量線性值。
優(yōu)選的,所述把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量,包括:
定義表linear_2_gamma,表linear_2_gamma中有t_size+1個索引項(xiàng),t_size為正整數(shù),xt_pos=xavg/(1/t_size),xt_pos的計(jì)算結(jié)果向下取整,使xt_pos與表linear_2_gamma中的一個索引項(xiàng)相對應(yīng),其中,x為r顏色分量、g顏色分量或b顏色分量,xavg為所述像素分塊x顏色分量的平均值;
定義linear_2_gamma[xt_pos]=pow(xt_pos/t_size,1/gamma)*255,分別將各個所述像素分塊中每個顏色分量的平均值映射到相應(yīng)的顏色分量的0~255范圍內(nèi),得到各個所述像素分塊中每個顏色分量的映射值;
對各個所述像素分塊中每個顏色分量的映射值進(jìn)行修正,
優(yōu)選的,所述把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量,包括:
將各個所述平均值分別作冪為1/gamma的冪運(yùn)算,分別得到每一個所述像素分塊中r、g、b顏色分量的映射值;
分別將每一個所述像素分塊中r、g、b顏色分量的映射值乘以255,并將計(jì)算結(jié)果取整得到各個所述像素分塊的r、g、b修正顏色分量。
優(yōu)選的,上述gamma的值為2.2。
一種rgb格式圖像轉(zhuǎn)yuv420格式的裝置,包括:
分割單元,用于將待處理的rgb格式圖像分割為多個2*2的像素分塊;
第一計(jì)算單元,用于根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b顏色分量,計(jì)算各個所述像素的y分量;
修正單元,用于分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,并把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量;
第二計(jì)算單元,用于根據(jù)所述預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及各個所述像素分塊的r、g、b修正顏色分量,分別計(jì)算各個所述像素分塊的u分量和v分量,結(jié)合各個所述像素的y分量,得到y(tǒng)uv420格式的圖像。
優(yōu)選的,當(dāng)所述待處理的rgb格式圖像為rgb32格式時,所述裝置還包括:
轉(zhuǎn)化單元,用于將待處理的rgb32格式圖像轉(zhuǎn)化為rgb24格式圖像。
優(yōu)選的,所述修正單元包括映射子單元;
所述映射子單元,用于分別將每一個所述像素分塊中每個像素的r、g、b顏色分量除以255,得到范圍為0~1的浮點(diǎn)數(shù);將各個所述浮點(diǎn)數(shù)分別作冪為gamma的冪運(yùn)算,得到每一個所述像素分塊中每個像素的r、g、b顏色分量的線性值。
優(yōu)選的,所述修正單元包括計(jì)算子單元;
所述計(jì)算子單元,用于當(dāng)每個所述像素的各個顏色分量的線性值分別為r′、g′和b′時,每個所述像素分塊中每個顏色分量的平均值分別為:ravg=(r1′+r2′+r3′+r4′)/4、gavg=(g1′+g2′+g3′+g4′)/4和bavg=(b1′+b2′+b3′+b4′)/4,所述r1′、r2′、r3′和r4′分別為每個所述像素分塊中各個像素的r顏色分量線性值,所述g1′、g2′、g3′和g4′分別為每個所述像素分塊中各個像素的g顏色分量線性值,所述b1′、b2′、b3′和b4′分別每個所述像素分塊中各個像素的b顏色分量線性值。
優(yōu)選的,所述修正單元包括第一逆映射子單元,
所述第一逆映射子單元,用于定義表linear_2_gamma,表linear_2_gamma中有t_size+1個索引項(xiàng),t_size為正整數(shù),xt_pos=xavg/(1/t_size),xt_pos的計(jì)算結(jié)果向下取整,使xt_pos與表linear_2_gamma中的一個索引項(xiàng)相對應(yīng),其中,x為r顏色分量、g顏色分量或b顏色分量,xavg為所述像素分塊x顏色分量的平均值;定義linear_2_gamma[xt_pos]=pow(xt_pos/t_size,1/gamma)*255,分別將各個所述像素分塊中每個顏色分量的平均值映射到相應(yīng)的顏色分量的0~255范圍內(nèi),得到各個所述像素分塊中每個顏色分量的映射值;對各個所述像素分塊中每個顏色分量的映射值進(jìn)行修正,
優(yōu)選的,所述修正單元包括第二逆映射子單元;
所述第二逆映射子單元,用于將各個所述平均值分別作冪為1/gamma的冪運(yùn)算,分別得到每一個所述像素分塊中r、g、b顏色分量的映射值;分別將每一個所述像素分塊中r、g、b顏色分量的映射值乘以255,并將計(jì)算結(jié)果取整得到各個所述像素分塊的r、g、b修正顏色分量。
相對于現(xiàn)有技術(shù),本發(fā)明的有益效果如下:
本發(fā)明提供的rgb格式圖像轉(zhuǎn)yuv420格式的方法及裝置,將待處理的rgb格式圖像分割為多個2*2的像素分塊;根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b顏色分量,計(jì)算各個所述像素的y分量;分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,并把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量;避免了現(xiàn)有技術(shù)中,由于沒有將各個顏色分量的值轉(zhuǎn)換到線性空間,而是直接對像素分塊中各個像素的顏色分量相加求平均或固定選擇某個像素做采樣點(diǎn),造成vdi環(huán)境下計(jì)算機(jī)輔助設(shè)計(jì)場景中畫面關(guān)鍵細(xì)節(jié)易丟失的問題。然后再根據(jù)r、g、b修正顏色分量分別計(jì)算各個像素分塊的u分量和v分量,最后結(jié)合y分量,得到y(tǒng)uv420格式的圖像,改善了圖像的顯示效果。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例公開的一種rgb格式圖像轉(zhuǎn)yuv420格式的方法流程圖;
圖2為本發(fā)明實(shí)施例公開的一種rgb格式圖像轉(zhuǎn)yuv420格式的裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
發(fā)明人經(jīng)研究發(fā)現(xiàn),現(xiàn)有技術(shù)中存在的兩種rgb格式圖像轉(zhuǎn)yuv420格式的方法,均存在在vdi環(huán)境下計(jì)算機(jī)輔助設(shè)計(jì)場景中畫面關(guān)鍵細(xì)節(jié)易丟失的問題。
其中,一種現(xiàn)有技術(shù)為將待處理的rgb格式圖像分割為多個2*2的像素分塊,分別將各個像素分塊中各個像素的每個顏色分量進(jìn)行加和求平均,將平均值分別作為各個像素分塊每個顏色分量的值,這種方法不符合人類視覺的感知特性,轉(zhuǎn)換后的圖像顏色失真嚴(yán)重。
另一種現(xiàn)有技術(shù)為將待處理的rgb格式圖像分割為多個2*2的像素分塊,在各個像素分塊中的各個像素中進(jìn)行下采樣選擇采樣點(diǎn),將采樣點(diǎn)的每個顏色分量的值分別作為各個像素分塊每個個顏色分量的值,這種實(shí)現(xiàn)方法在自然圖像的處理中不存在明顯的視覺差別,是因?yàn)樽匀唤绲膱D像大都在視覺上連續(xù),而在vdi環(huán)境下顯示計(jì)算機(jī)輔助設(shè)計(jì)圖像時,這種方法并不適合,轉(zhuǎn)換后圖像顏色失真嚴(yán)重。
有鑒于此,本實(shí)施例公開了一種rgb格式圖像轉(zhuǎn)yuv420格式的方法,請參閱圖1,所述方法包括以下步驟:
s101:將待處理的rgb格式圖像分割為多個2*2的像素分塊;
具體的,待處理的rgb格式圖像可以為rgb32格式或rgb24格式。
rgb24采用r、g、b三原色,即紅、綠、藍(lán)三原色,每個顏色分量用8位表示,三個分量加在一起是24位。rgb32除了rgb24包含的24位三原色之外,還增加了8位的alpha位,rgb32可以與rgb等價轉(zhuǎn)換。
需要說明的是,當(dāng)所述待處理的rgb格式圖像為rgb32格式時,在s101之前還包括:
將待處理的rgb32格式圖像轉(zhuǎn)化為rgb24格式圖像。
可以理解的是,每個2*2的像素分塊中都包括4個像素。
s102:根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b顏色分量,計(jì)算各個所述像素的y分量;
需要說明的是,所述預(yù)設(shè)標(biāo)準(zhǔn)可以為itu-rrecommendationbt.601和itu-rrecommendationbt.709等標(biāo)準(zhǔn),預(yù)設(shè)標(biāo)準(zhǔn)分別規(guī)定y、u、v分量的系數(shù),每個像素都包括r、g、b三個顏色分量,根據(jù)itu-rrecommendationbt.601和itu-rrecommendationbt.709等標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b三個顏色分量,計(jì)算各個所述像素的y分量,由于y分量不涉及下采樣,所以不對y分量做過多處理,直接取值。
s103:分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,并把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量;
具體的,所述分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,優(yōu)選的一種實(shí)施方式為:
分別將每一個所述像素分塊中每個像素的r、g、b顏色分量除以255,得到范圍為0~1的浮點(diǎn)數(shù);
將各個所述浮點(diǎn)數(shù)分別作冪為gamma的冪運(yùn)算,得到每一個所述像素分塊中每個像素的r、g、b顏色分量的線性值。
需要說明的是,每個像素的r、g、b分量分別對應(yīng)0~255級亮度中的某一個值;gamma的值可以根據(jù)實(shí)際需要進(jìn)行調(diào)整,優(yōu)選的,gamma的取值范圍為(0,5),經(jīng)過多次實(shí)驗(yàn)驗(yàn)證,2.2為gamma的最佳取值,也可以根據(jù)實(shí)際場景選擇(0,5)范圍內(nèi)的其它值。
還需要說明的是,根據(jù)實(shí)際對圖像格式的轉(zhuǎn)換過程中,對于浮點(diǎn)數(shù)為0時的處理可以根據(jù)實(shí)際情況進(jìn)行調(diào)整,在可能的一種情況下,將浮點(diǎn)數(shù)0加上一個比較小的數(shù)值,這個數(shù)值的取值范圍為(0,1),一般取0.01,再將浮點(diǎn)數(shù)0.01作冪為gamma的冪運(yùn)算,圖像轉(zhuǎn)換后的顯示效果可能更理想。用戶可以根據(jù)實(shí)際測試決定是否需要將浮點(diǎn)數(shù)0加上一個比較小的數(shù)值再進(jìn)行處理。
具體的,每個所述像素包括r顏色分量、g顏色分量和b顏色分量,所述在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值可以有多種方法,其中,一種方法為:
當(dāng)每個所述像素的各個顏色分量的線性值分別為r′、g′和b′時,每個所述像素分塊中每個顏色分量的平均值分別為:ravg=(r1′+r2′+r3′+r4′)/4、gavg=(g1′+g2′+g3′+g4′)/4和bavg=(b1′+b2′+b3′+b4′)/4,所述r1′、r2′、r3′和r4′分別為每個所述像素分塊中各個像素的r顏色分量線性值,所述g1′、g2′、g3′和g4′分別為每個所述像素分塊中各個像素的g顏色分量線性值,所述b1′、b2′、b3′和b4′分別每個所述像素分塊中各個像素的b顏色分量線性值。
另外一種方法為:
當(dāng)每個所述像素的各個顏色分量的線性值分別為r′、g′和b′時,每個所述像素分塊中每個顏色分量的平均值分別為:
具體的,所述把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量,可以有多種方法,優(yōu)選的一種方法的具體執(zhí)行步驟如下:
定義表linear_2_gamma,表linear_2_gamma中有t_size+1個索引項(xiàng),t_size為正整數(shù),xt_pos=xavg/(1/t_size),xt_pos的計(jì)算結(jié)果向下取整,使xt_pos與表linear_2_gamma中的一個索引項(xiàng)相對應(yīng),其中,x為r顏色分量、g顏色分量或b顏色分量,xavg為所述像素分塊x顏色分量的平均值;
定義linear_2_gamma[xt_pos]=pow(xt_pos/t_size,1/gamma)*255,分別將各個所述像素分塊中每個顏色分量的平均值映射到相應(yīng)的顏色分量的0~255范圍內(nèi),得到各個所述像素分塊中每個顏色分量的映射值;
對各個所述像素分塊中每個顏色分量的映射值進(jìn)行修正,
以t_size為5為例進(jìn)行說明,表linear_2_gamma中有6個索引項(xiàng),r、g、b顏色分量的平均值在[0,1],對應(yīng)到表linear_2_gamma中,r、g、b顏色分量的平均值分別對應(yīng)0,0.2,0.4,0.6,0.8,1.0,再將r、g、b顏色分量的平均值在表linear_2_gamma中的對應(yīng)值分別作冪為1/gamma的冪運(yùn)算,再乘以255,分別得到每一個所述像素分塊中r、g、b顏色分量的映射值,即:
linear_2_gamma[0]=pow(0,1/gamma)*255;
linear_2_gamma[1]=pow(0.2,1/gamma)*255;
linear_2_gamma[2]=pow(0.4,1/gamma)*255;
linear_2_gamma[3]=pow(0.6,1/gamma)*255;
linear_2_gamma[4]=pow(0.8,1/gamma)*255;
linear_2_gamma[5]=pow(1.0,1/gamma)*255。
需要說明的是,每個像素的r、g、b分量分別對應(yīng)0~255級亮度中的某一個值;gamma的值可以根據(jù)實(shí)際需要進(jìn)行調(diào)整,優(yōu)選的,gamma的取值范圍為(0,5),經(jīng)過多次實(shí)驗(yàn)驗(yàn)證,2.2為gamma的最佳取值,也可以根據(jù)實(shí)際場景選擇(0,5)范圍內(nèi)的其它值。
最后,利用線性差值法對每一個所述像素分塊中r、g、b顏色分量的映射值進(jìn)行修正。這種修正方法準(zhǔn)確率高,使圖像的顯示效果更理想。
另外一種“把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量”可選的一種具體執(zhí)行過程如下:
將各個所述平均值分別作冪為1/gamma的冪運(yùn)算,分別得到每一個所述像素分塊中r、g、b顏色分量的映射值;
分別將每一個所述像素分塊中r、g、b顏色分量的映射值乘以255,并將計(jì)算結(jié)果取整得到各個所述像素分塊的r、g、b修正顏色分量。
需要說明的是,每個像素的r、g、b分量分別對應(yīng)0~255級亮度中的某一個值;gamma的值可以根據(jù)實(shí)際需要進(jìn)行調(diào)整,優(yōu)選的,gamma的取值范圍為(0,5),經(jīng)過多次實(shí)驗(yàn)驗(yàn)證,2.2為gamma的最佳取值,也可以根據(jù)實(shí)際場景選擇(0,5)范圍內(nèi)的其它值。
還需要說明的是,可采用四舍五入的取整方式,向上取整或向下取整都可以。例如:計(jì)算結(jié)果為1.6,可以將計(jì)算結(jié)果向上取整為2,或向下取整為1。
s104:根據(jù)所述預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及各個所述像素分塊的r、g、b修正顏色分量,分別計(jì)算各個所述像素分塊的u分量和v分量,結(jié)合各個所述像素的y分量,得到y(tǒng)uv420格式的圖像。
需要說明的是,步驟s104中的預(yù)設(shè)標(biāo)準(zhǔn)也可以為itu-rrecommendationbt.601和itu-rrecommendationbt.709等標(biāo)準(zhǔn)。
本實(shí)施例提供的rgb格式圖像轉(zhuǎn)yuv420格式的方法,將待處理的rgb格式圖像分割為多個2*2的像素分塊;根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b顏色分量,計(jì)算各個所述像素的y分量;分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,并把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量;避免了現(xiàn)有技術(shù)中,由于沒有將各個顏色分量的值轉(zhuǎn)換到線性空間,而是直接對像素分塊中各個像素的顏色分量相加求平均或固定選擇某個像素做采樣點(diǎn),造成vdi環(huán)境下計(jì)算機(jī)輔助設(shè)計(jì)場景中畫面關(guān)鍵細(xì)節(jié)易丟失的問題。然后再根據(jù)r、g、b修正顏色分量分別計(jì)算各個像素分塊的u分量和v分量,最后結(jié)合y分量,得到y(tǒng)uv420格式的圖像,改善了圖像的顯示效果。
請參閱圖2,基于上述實(shí)施例公開的rgb格式圖像轉(zhuǎn)yuv420格式的方法,本實(shí)施例對應(yīng)公開了一種rgb格式圖像轉(zhuǎn)yuv420格式的裝置,包括:
需要說明的是,當(dāng)所述待處理的rgb格式圖像為rgb32格式時,所述裝置還包括:
轉(zhuǎn)化單元,用于將待處理的rgb32格式圖像轉(zhuǎn)化為rgb24格式圖像。
若待處理的rgb格式圖像為rgb24格式時,直接進(jìn)行以下單元的操作:
分割單元101,用于將待處理的rgb格式圖像分割為多個2*2的像素分塊;
第一計(jì)算單元102,用于根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b顏色分量,計(jì)算各個所述像素的y分量;
需要說明的是,所述預(yù)設(shè)標(biāo)準(zhǔn)可以為itu-rrecommendationbt.601和itu-rrecommendationbt.709等標(biāo)準(zhǔn),預(yù)設(shè)標(biāo)準(zhǔn)分別規(guī)定y、u、v分量的系數(shù),每個像素都包括r、g、b三個顏色分量,根據(jù)itu-rrecommendationbt.601和itu-rrecommendationbt.709等標(biāo)準(zhǔn)規(guī)定的系數(shù),以及所述待處理的rgb格式圖像中的各個像素的r、g、b三個顏色分量,計(jì)算各個所述像素的y分量,由于y分量不涉及下采樣,所以不對y分量做過多處理,直接取值。
修正單元103,用于分別將每一個所述像素分塊中每個像素的r、g、b顏色分量映射到線性空間,在線性空間分別求取每個所述像素分塊中每個顏色分量的平均值,并把各個所述平均值映射到相應(yīng)顏色分量的0~255范圍內(nèi),分別得到各個所述像素分塊的r、g、b修正顏色分量;
第二計(jì)算單元104,用于根據(jù)所述預(yù)設(shè)標(biāo)準(zhǔn)規(guī)定的系數(shù),以及各個所述像素分塊的r、g、b修正顏色分量,分別計(jì)算各個所述像素分塊的u分量和v分量,結(jié)合各個所述像素的y分量,得到y(tǒng)uv420格式的圖像。
具體的,所述修正單元103包括映射子單元、計(jì)算子單元和逆映射子單元,其中,計(jì)算子單元和逆映射子單元分別有兩種實(shí)現(xiàn)方式。
所述映射子單元,用于分別將每一個所述像素分塊中每個像素的r、g、b顏色分量除以255,得到范圍為0~1的浮點(diǎn)數(shù);將各個所述浮點(diǎn)數(shù)分別作冪為gamma的冪運(yùn)算,得到每一個所述像素分塊中每個像素的r、g、b顏色分量的線性值。
所述計(jì)算子單元,用于當(dāng)每個所述像素的各個顏色分量的線性值分別為r′、g′和b′時,每個所述像素分塊中每個顏色分量的平均值分別為:ravg=(r1′+r2′+r3′+r4′)/4、gavg=(g1′+g2′+g3′+g4′)/4和bavg=(b1′+b2′+b3′+b4′)/4,所述r1′、r2′、r3′和r4′分別為每個所述像素分塊中各個像素的r顏色分量線性值,所述g1′、g2′、g3′和g4′分別為每個所述像素分塊中各個像素的g顏色分量線性值,所述b1′、b2′、b3′和b4′分別每個所述像素分塊中各個像素的b顏色分量線性值。
另一種計(jì)算子單元的實(shí)現(xiàn)方式為:
當(dāng)每個所述像素的各個顏色分量的線性值分別為r′、g′和b′時,每個所述像素分塊中每個顏色分量的平均值分別為:
逆映射子單元的兩種實(shí)現(xiàn)方式分別用第一逆映射子單元和第二逆映射子單元進(jìn)行說明。
第一逆映射子單元,用于定義表linear_2_gamma,表linear_2_gamma中有t_size+1個索引項(xiàng),t_size為正整數(shù),xt_pos=xavg/(1/t_size),xt_pos的計(jì)算結(jié)果向下取整,使xt_pos與表linear_2_gamma中的一個索引項(xiàng)相對應(yīng),其中,x為r顏色分量、g顏色分量或b顏色分量,xavg為所述像素分塊x顏色分量的平均值;定義linear_2_gamma[xt_pos]=pow(xt_pos/t_size,1/gamma)*255,分別將各個所述像素分塊中每個顏色分量的平均值映射到相應(yīng)的顏色分量的0~255范圍內(nèi),得到各個所述像素分塊中每個顏色分量的映射值;對各個所述像素分塊中每個顏色分量的映射值進(jìn)行修正,
第二逆映射子單元,用于將各個所述平均值分別作冪為1/gamma的冪運(yùn)算,分別得到每一個所述像素分塊中r、g、b顏色分量的映射值;分別將每一個所述像素分塊中r、g、b顏色分量的映射值乘以255,并將計(jì)算結(jié)果取整得到各個所述像素分塊的r、g、b修正顏色分量。
需要說明的是,每個像素的r、g、b分量分別對應(yīng)0~255級亮度中的某一個值;gamma的值可以根據(jù)實(shí)際需要進(jìn)行調(diào)整,優(yōu)選的,gamma的取值范圍為(0,5),經(jīng)過多次實(shí)驗(yàn)驗(yàn)證,2.2為gamma的最佳取值,也可以根據(jù)實(shí)際場景選擇(0,5)范圍內(nèi)的其它值。
本實(shí)施例公開的rgb格式圖像轉(zhuǎn)yuv420格式的裝置,修正單元103將各個像素分塊中每個像素的各個顏色分量,映射到線性空間,再求平均,并將平均值逆映射到相應(yīng)的顏色分量的0~255范圍內(nèi),得到各個像素分塊的各個修正顏色分量,避免了計(jì)算機(jī)輔助設(shè)計(jì)場景中畫面關(guān)鍵細(xì)節(jié)丟失的問題,改善了顯示效果。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。