RGB檔案的處理與分析

2021-10-03 16:34:30 字數 2617 閱讀 3976

所給rgb檔案是按照b,g,r順序排列的且去掉了包含檔案屬性的檔案頭,檔案解析度為256

×256

256\times256

256×25

6。該段**可以實現如下功能:

由於c++作圖不方便,於是圖表均為excel完成。

#include

#include

#include

#include

using

namespace std;

const

char

* inpath =

"d:\\clionprojects\\algorithm\\cmake-build-debug-mingw\\down.rgb"

;const

char

* outpath =

"d:\\clionprojects\\algorithm\\cmake-build-debug-mingw\\data.csv"

;const

char

* outfile =

"d:\\clionprojects\\algorithm\\cmake-build-debug-mingw\\data.cif"

;//這裡建議使用絕對路徑

//使用相對路徑時需要放到ide預設的路徑或手動設定

int num[6]

[256

], len =0;

double entropy[6]

;vector<

unsigned

char

> yuv[3]

;int

main()

while

(!in.

eof())

)*i = in.

get();

//計算y,u,v分量

y =((

66* r +

129* g +

25* b +

128)

>>8)

+16; u =((

-38* r -

74* g +

112* b +

128)

>>8)

+128

; v =((

112* r -

94* g -

18* b +

128)

>>8)

+128

;//統計數值出現次數

for(

auto i :

) num[pos++

][i]++;

pos =

0; len++

;//儲存y,u,v的值

for(

auto i :

) yuv[pos++].

push_back

(i);

} in.

close()

;//建立**

ofstream out

(outpath, ios::binary);if

(!out.

is_open()

)//輸出**內容

out <<

"value,r,g,b,y,u,v"

<< endl;

for(

int j =

0; j <

256;

++j)

} out << endl <<

" ,r,g,b,y,u,v"

<< endl <<

"entropy,"

;for

(int i =

0; i <6;

++i) out << entropy[i]

<<

(i ==5?

"\n"

:",");

; out.

close()

;//建立cif檔案

out.

open

(outfile, ios::binary);if

(!out.

is_open()

)//輸出內容

for(

auto

& i : yuv)

for(

auto j : i) out << j;

out.

close()

;}

生成的**如下:

各個分量的熵:

r,g,b和y,u,v取值的頻率圖:

可見yuv格式中各個分量出現的比較集中。

各個分量的熵:

可見yuv格式各個分量的熵相較於rgb較小,根據夏農第一定律可以壓縮的比率也更大。

讀取分析RGB檔案

作業3 讀入乙個24bitrgb檔案 以down.rgb為例,其解析度為256 256 輸出該資料檔案中r g b三個分量 各8bit表示 的概率分布示意圖 類似下圖 和熵。開闢3個width height的unsigned char型陣列 開啟要讀出的rgb檔案 以 rb 方式開啟 開啟3個要輸出...

常見的RGB和YUV格式分析

rgb1 rgb4 rgb8都是調色盤型別的rgb格式,在描述這些 型別的格式細節時,通常會在bitmapinfoheader資料結構後面跟著乙個調色盤 定義一系列顏色 它們的影象資料並不是真正的顏色值,而是當前畫素顏色值在調色盤中的索引。以rgb1 2色位圖 為例,比如它的調色盤中定義的兩種顏色值...

YUV 與RGB之間的變換

大多數的計算機圖形工作者熟悉 rgb,而大多數的具有影象背景的則熟悉 yuv。rgb可以認為是三個分別表示紅,綠,藍顏色的灰度影象。把它們組合在一起就可以產生各種各樣的顏色。yuv 使用rgb的資訊,但它從全彩色影象中產生乙個黑白影象,然後提取出三個主要的顏色變成兩個額外的訊號來描述顏色。把這三個訊...