彩色空間轉換(修訂之後)

2021-10-05 05:50:45 字數 3216 閱讀 7077

首先開闢乙個快取區。

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 ...