# -*- coding:utf-8 -*-
# author:konmu
# dct二維變換
from numpy import array as matrix, arange,zeros,transpose,matmul,ones
from math import sqrt,cos,pi
'''作業代轉化矩陣1
a=matrix([[0,255,0,255,0,255,0,255],
[255,0,255,0,255,0,255,0],
[0,255,0,255,0,255,0,255],
[255,0,255,0,255,0,255,0],
[0,255,0,255,0,255,0,255],
[255,0,255,0,255,0,255,0],
[0,255,0,255,0,255,0,255],
[255,0,255,0,255,0,255,0]])
'''a=ones((8,8))#生成單位陣
for i in range(8):
a[i]=matrix([128]*8)
# 生成全是128的矩陣(作業代轉化矩陣2)
'''測試資料
a=matrix([[61,19,50,20],
[82,26,61,45],
[89,90,82,43],
[93,59,53,97]])
'''a=zeros((8,8))#生成0矩陣
shape=a.shape[1]#獲取維數
for i in range(8):
for j in range(8):
if(i == 0):
x=sqrt(1/shape)
else:
x=sqrt(2/shape)
a[i][j]=x*cos(pi*(j+0.5)*i/shape)#與維數相關
a_t=a.transpose()#矩陣轉置
y1=matmul(a,a)#矩陣叉乘
y=matmul(y1,a_t)
print(y)
'''想要近似值可以嘗試這樣輸出
for i in range(shape):
for j in range(shape):
print(''.format(y[i][j]),end='\n')
print()
'''
二維DCT變換
出處 dct,又叫離散預先變換,它的第二種型別,經常用於訊號和影象資料的壓縮。經過dct變換後的資料能量非常集中,一般只有左上角的數值是非零的,也就是能量都集中在離散余弦變換後的直流和低頻部分。1,一維dct變換 我們首先看著一維的dct變換,這是二維的基礎。一維的dct變換共有8種,其中最實用的是...
DCT變換及matlab實現
一維的dct變換共有8種,其中最實用的是第二種形式,公式如下 其中c u 是加上去乙個係數,為了能使dct變換矩陣成為正交矩陣,在後面二維變換將看到他的作用。n是f x 的總數。相比其他幾種形式,他的運算還是比較簡單的,因此也用的比較廣。clc clear in 1 8 n 8 for i 0 n ...
二維傅利葉變換需知
from 如下,這個 是實現灰度影象作二維傅利葉變換後的非線性變換哈 clear all i imread coins.png f fft2 im2double i f fftshift f f abs f t log f 1 subplot 1,2,1 imshow f,title 未經變換的頻譜...