DCT 變換(幾個簡單的MATLAB的例子)

2021-06-18 06:51:07 字數 1975 閱讀 7691

example 1(use real image):

a=imread('class_f.png');

imshow(a) %a is unit8(0,255)

c=dct2(a); %進行余弦變換

figure;

b=log(abs(c));

imshow(b)

colormap(jet(64)); %顯示為64級灰度

colorbar; %顯示顏色條,顯示變換後的係數分布

c(abs(c)<10)=0; %將dct變換後的系數值小於10的元素設為0

%e=idct2(c);

d=idct2(c)./255; %對dct變換值歸一化,進行余弦反變換???

figure;

imshow(d) ;

% imshow(uint8(e)); is the same as d=idct2(c)./255

% imshow(e,); is the same as d=idct2(c)./255

ff=abs(c)<10; %compute the number of elements which are smaller than 10

sum(sum(ff)) %result:56632

gg=abs(c)>10; %compute the number of elements which are larger than 10

sum(sum(gg)) %result:16025

example 2(use artifical image):

constant image(low frequency image)

a=ones(5);

b=dct2(a)

a =1     1     1     1     1

1     1     1     1     1

1     1     1     1     1

1     1     1     1     1

1     1     1     1     1

after dct transformation

5     0     0     0     0

0     0     0     0     0

0     0     0     0     0

0     0     0     0     0

0     0     0     0     0

c=idct2(b) %reconstruction according to b

random image(high frequency image)

a=randn(5)

b=dct2(a)

a =-0.4326    1.1909   -0.1867    0.1139    0.2944

-1.6656    1.1892    0.7258    1.0668   -1.3362

0.1253   -0.0376   -0.5883    0.0593    0.7143

0.2877    0.3273    2.1832   -0.0956    1.6236

-1.1465    0.1746   -0.1364   -0.8323   -0.6918

ans =

0.5853   -0.5033   -1.3505   -1.2524   -0.3519

0.2492    0.1007   -0.4273    0.1201   -1.5079

-0.8317    0.4357   -0.4183   -0.5794   -0.4022

1.7697   -0.3482    1.3882   -0.3871    1.4934

-1.0525    0.1744    1.7976    0.0521   -0.4997

b(abs(b)<0.1)=0; is threshold

c=idct2(b);//reconstruction

關於DCT變換的理解 0

首先,dct變換是jpeg用的壓縮方式,學習的時候以jpeg影象壓縮流程為展開來學,脈絡比較清晰。1.jpeg影象壓縮流程,dct演算法 和 編碼 是兩個難點。這篇文章介紹了每個步驟 2.dct部分 分塊 dct變換 量化 比較難理解的知識點 基函式 1個二維變換 2個一維變換 用矩陣表示二維變換 ...

DCT變換的一些知識

dct將運動補償誤差或原畫面資訊塊轉換成代表不同頻率分量的係數集,這有兩個優點 其一,訊號常將其能量的大部分集中於頻率域的1個小範圍內,這樣一來,描述不重要的分量只需要很少的位元數 其二,頻率域分解映 人類視覺系統的處理過程,並允許後繼的 量化過程滿足其靈敏度的要求。關於這一點在我手頭的教程中有詳盡...

幾個簡單的排序演算法

排序演算法 include using namespace std void insertsort int r,int n 直接插入 void shellsort int r,int n shell排序 void selectsort int r,int n 直接選擇排序 void bubbleso...