首先開闢乙個快取區。
int w=256;
int h=256;//程式初始化(開啟兩個檔案、定義變數和緩衝區等)
file* rgbfile=null;
file* yuvfile = null;
unsigned char*r,*g,*b,*pf,*y,*u,*v,*u,*v;
//開啟rgb檔案
rgbfile = fopen("d:\\dsx\\sjys\\down.rgb", "rb");
//開闢快取區
彩色空間轉換公式
(1) yuv2rgb的轉換公式
由電視原理可知,亮度和色差訊號的構成如下:
y=0.2990r+0.5870g+0.1140b
r-y=0.7010r-0.5870g-0.1140b
b-y=-0.2990r-0.5870g+0.8860b
為了使色差訊號的動態範圍控制在0.5之間,需要進行歸一化,對色差訊號引入壓縮係數。歸一化後的色差訊號為:
u=-0.1684r-0.3316g+0.5b
v=0.5r-0.4187g-0.0813b
(2) yuv2rgb空間的轉換公式
r = y+(r-y) = y+1.14075(v-128)
g = y+(g-y) = y-0.7169(v-128)-0.3455(u-128)
b = y+(b-y) = y+1.779(u-128)
pf = (unsigned char *)malloc(sizeof(char)*(w*h*3));
r = (unsigned char *)malloc(sizeof(char)*(w*h));
g = (unsigned char *)malloc(sizeof(char)*(w*h));
b = (unsigned char *)malloc(sizeof(char)*(w*h));
y = (unsigned char *)malloc(sizeof(char)*(w*h));
u = (unsigned char *)malloc(sizeof(char)*(w*h));
v = (unsigned char *)malloc(sizeof(char)*(w*h));
u=(unsigned char *)malloc(sizeof(char)*(w*h/4));
v=(unsigned char *)malloc(sizeof(char)*(w*h/4));
fread(pf,1,w*h*3,rgbfile);
int i,j,k=0;
//提取rgb分量
for(i=0,j=0;i3.碼電平分配及數字表示式
亮電平訊號量化後碼電平分配與色差訊號量化後碼電平分配:
yuv轉rgb
#include #include #include int main(int argc,char* ar**)
{ int w=256;
int h=256;
//程式初始化(開啟兩個檔案、定義變數和緩衝區等)
file* rgbfile=null;
file* yuvfile = null;
unsigned char*r,*g,*b,*pf,*y,*u,*v,*u,*v;
//開啟yuv檔案
yuvfile = fopen(ar**[1], "rb");
//開闢快取區
pf = (unsigned char *)malloc(sizeof(char)*(w*h*3));
r = (unsigned char *)malloc(sizeof(char)*(w*h));
g = (unsigned char *)malloc(sizeof(char)*(w*h));
b = (unsigned char *)malloc(sizeof(char)*(w*h));
y = (unsigned char *)malloc(sizeof(char)*(w*h));
u = (unsigned char *)malloc(sizeof(char)*(w*h));
v = (unsigned char *)malloc(sizeof(char)*(w*h));
u=(unsigned char *)malloc(sizeof(char)*(w*h/4));
v=(unsigned char *)malloc(sizeof(char)*(w*h/4));
fread(y,1,w*h,yuvfile);
fread(u,1,w*h/4,yuvfile);
fread(v,1,w*h/4,yuvfile);
int i,j,k=0;
//上取樣
目測不太明顯,但實際上下取樣和量化後碼電平分配會造成部分資料丟失。
實驗一 彩色空間轉換實驗
rgb計色系統是基於三基色原理的顏色計算系統,由紅光分量r 綠光分量g 藍光分量b可以混合出任意彩色光。在rgb檔案中,單個畫素的儲存形式為bgr順序。yuv色彩空間通過乙個亮度訊號y和兩個色差訊號u v來表示影象。yuv檔案通常是先儲存所有畫素的y分量,再儲存u分量 v分量。在4 2 0取樣格式中...
彩色空間轉換(RGB與YUV格式檔案轉換)
一 實驗原理 1.本次實驗是實現yuv格式轉換為rgb格式,這裡的yuv其實是指數字高畫質的ycbcr。根據亮度和色差計算公式,可以得到 2.為使色差訊號的動態範圍控制在 0.5 0.5之間,要對色差訊號進行歸一化處理,得到uv的計算公式 由上式得到的uv範圍在 128 127之間,為避免負數,應在...
資料壓縮實驗之彩色空間轉換
學會從計算和程式的角度分析問題通過完成本實驗,理解計算思維,即從問題出發,通過逐步分析和分解,把原問題轉化為可用程式方式解決的問題。在此過程中設計出乙個解決方案。進一步理解彩色空間的概念並掌握不同彩色空間轉換的基本方程。通過逐步設計程式,掌握程式設計細節 如查詢表的設計,記憶體分配,對 u 和 v ...