作業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,其結果又如何?解 假定連續傳送且不出錯。若...