讀取分析RGB檔案

2021-10-03 21:45:51 字數 2780 閱讀 5980

作業3:讀入乙個24bitrgb檔案(以down.rgb為例,其解析度為256*256),輸出該資料檔案中r、g、b三個分量(各8bit表示)的概率分布示意圖(類似下圖)和熵。

開闢3個width*height的unsigned char型陣列;開啟要讀出的rgb檔案(以「rb」方式開啟),開啟3個要輸出的資料統計檔案(以「w」方式開啟,可命名為r_sat.txt等);將rgb資料從rgb檔案中讀出,並分別儲存到3個陣列中,期間計算資料的概率分布和熵,並將這些資料寫入3個資料統計txt檔案中。txt檔案的寫入方式如下所示(每行的兩個資料用tab分開)。在excel裡將這3個txt檔案開啟即可生成統計圖。

**如下:

#include

"pch.h"

#include

intmain()

fread

(buffer,

sizeof

(unsigned

char

), width*height*

3, fp)

;//將rgb檔案中的資料讀至buffer指向的動態空間

unsigned

char b[width*height]=;

unsigned

char g[width*height]=;

unsigned

char r[width*height]=;

int i;

int j;

/*for (i = 0; i < width*height; i++)

*///用微控制器的方法寫崩了-__-||

for(i =

0; i < width*height; i++

)int numr[

256]=;

double freqr[

256]=;

for(i =

0; i <

256; i++)}

freqr[i]

=double

(numr[i])/

(width * height);}

//printf("%f", freqr[1]);

int numg[

256]=;

double freqg[

256]=;

for(i =

0; i <

256; i++)}

freqg[i]

=double

(numg[i])/

(width * height);}

int numb[

256]=;

double freqb[

256]=;

for(i =

0; i <

256; i++)}

freqb[i]

=double

(numb[i])/

(width * height);}

//計算熵

double hr=0;

for(i =

0; i <

256; i++)}

double hg=0;

for(i =

0; i <

256; i++)}

double hb=0;

for(i =

0; i <

256; i++)}

printf

("r的熵為:%f\n"

, hr)

;printf

("g的熵為:%f\n"

, hg)

;printf

("b的熵為:%f\n"

, hb)

;fprintf

(fr,

"%s\t%s\n"

,"symbol"

,"frequent");

for(i =

0; i <

256; i++

)fprintf

(fg,

"%s\t%s\n"

,"symbol"

,"frequent");

for(i =

0; i <

256; i++

)fprintf

(fb,

"%s\t%s\n"

,"symbol"

,"frequent");

for(i =

0; i <

256; i++

)free

(buffer)

;fclose

(fp)

;fclose

(fr)

;fclose

(fg)

;fclose

(fb)

;system

("pause");

return0;

}

結果:

r分量概率分布

g分量概率分布

b分量概率分布

執行結果

RGB檔案的處理與分析

所給rgb檔案是按照b,g,r順序排列的且去掉了包含檔案屬性的檔案頭,檔案解析度為256 256 256 times256 256 25 6。該段 可以實現如下功能 由於c 作圖不方便,於是圖表均為excel完成。include include include include using names...

資料壓縮 作業三(讀取RGB檔案)

1 乙個24bit的rgb檔案,每個畫素點可分為r g b三個分量,則這個檔案可分為3個8bit的檔案。2 解析度為256 256,則乙個r g b檔案資料量為256 256,設為常量size 而乙個24bit的rgb檔案資料量為256 256 3,設為常量buffsize。3 根據不同檔案的資料量...

rgb格式檔案的Python讀取 格式轉換

rgb檔案是不太常見的格式檔案,一般的影象庫 opencv pil 都無法直接讀取。網上的資料也比較少,最後無意間試出一種方法,在這裡記錄一下。c 方法類似,但是人生苦短,我用python import cv2 as cv import numpy as np f open 00000.rgb rb...