資料壓縮第三次作業

2021-10-03 17:50:58 字數 3208 閱讀 5911

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

matlab**

clc;

close all;

clear all;

file1=fopen(「down.rgb」);

x=fread(file1);%讀入檔案

l=length(x);

r=zeros(256,1);

g=zeros(256,1);

b=zeros(256,1);

for i=1:l

if mod(i,3)==0

r(x(i)+1)=r(x(i)+1)+1;

elseif mod(i,3)==2

g(x(i)+1)=g(x(i)+1)+1;

elseif mod(i,3)==1

b(x(i)+1)=b(x(i)+1)+1;

endend%用被3除取餘數的方法判斷是哪乙個分量

plot(0:255,r,『r』);

hold on;

plot(0:255,g,『g』);

hold on;

plot(0:255,b,『b』);

matlab執行結果

c++**

#include

#include

#include

using

namespace std;

const

int width =

256;

const

int height =

256;

intmain()

;unsigned

char g[width * height]=;

unsigned

char b[width * height]=;

fread

(a,sizeof

(unsigned

char

),size, p)

;int x =0;

int y =0;

int z =0;

for(

int i =

0; i < width * height *

3; i++

)else

if(i %3==

1)else

if(i %3==

2)}//用被3除求餘數的方法判斷是rgb哪個分量

int rt[

256]=;

int gt[

256]=;

int bt[

256]=;

for(

int i =

0; i <

256; i++)}

//統計各分量出現的次數

double rf[

256]=;

double gf[

256]=;

double bf[

256]=;

for(

int i =

0; i <

256; i++

)//計算各分量的頻率

file *r;

file *g;

file *b;if(

(r =

fopen

("r.txt"

,"w"))

==null

) cout<<

"file not opened."

<

else

cout<<

"flie opened."

<

(g =

fopen

("g.txt"

,"w"))

==null

) cout <<

"file not opened."

<

else

cout <<

"flie opened."

<< endl;if(

(b =

fopen

("b.txt"

,"w"))

==null

) cout <<

"file not opened."

<

else

cout <<

"flie opened."

<< endl;

//建立txt檔案用來存放各分量資料

fprintf

(r,"symbol\tfrequency\n");

for(

int i =

0; i <

256; i++

)fprintf

(g,"symbol\tfrequency\n");

for(

int i =

0; i <

256; i++

)fprintf

(b,"symbol\tfrequency\n");

for(

int i =

0; i <

256; i++

)//寫入各分量資料

double hr =0;

double hg =0;

double hb =0;

for(

int i =

0; i <

256; i++

)//計算各分量的熵值

cout <<

"h(r)="

<< hr <

cout <<

"h(g)="

<< hg << endl;

cout <<

"h(b)="

<< hb << endl;

fclose

(p);

fclose

(r);

fclose

(g);

fclose

(b);

return0;

}

c++執行結果

資料壓縮第三次作業 RGB檔案的讀取

讀入乙個24bitrgb檔案 以down.rgb為例,其解析度為256 256 輸出該資料檔案中r g b三個分量 各8bit表示 的概率分布示意圖和熵。include include include include intmain else err fopen s pbsat,b sat.txt ...

第三次作業

2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...

第三次作業

1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...