目录
参考博客
https://blog.csdn.net/weixin_44132627/article/details/105560989
dft变换
close all;
clear all;
I=imread('1.jpg')
J=rgb2gray(I);
K_1=fft2(J);
L_1=abs(K_1/256)
K_2=fftshift(K_1)
L_2=abs(K_2/256)
% 运行一次可以打印多个figure
figure;
%将figure分割成2行2列4块
subplot(2,2,1);
imshow(I);title('原始图像');
subplot(2,2,2)
imshow(J);title('灰度图像');
subplot(2,2,3)
imshow(uint8(L_1));title('灰度图像傅里叶频率')
subplot(2,2,4);
imshow(uint8(L_2));title('平移后的频谱')
代码调试
运行结果
dct变换
简介
简单的DCT
DCT除了上述介绍的几条特点,即:实数变换、确定的变换矩阵、准最佳变换性能外,二维DCT还是一种可分离的变换,可以用两次一维变换得到二维变换结果。是一种实数域变换,对图像进行离散余弦变换之后,许多有关图像的重要可视信息都集中在DCT变换的一小部分系数中(低频部分)
dct 的matlab实现是使用函数dct2,是一个基于FFT的快速算法来提高当前输入较大的输入方阵的计算速度,对于较小的方阵使用dctmtx(N),N 是DCT变换矩阵的维数,DCT 的系数是原始图像信号在频率不断增大的余弦函数上的投影,一个图像的DCT低频系数分布在系数矩阵的左上角,高频分布在右下角。低频系数的绝对值大于高频系数的绝对值。
分块dct
B=blkproc(A,[m,n],fun,P1,P2,…),其中A为原始信号矩阵,[m,n]为分块的大小,fun 为对每一个分块x的操作规则,P1是fun中调用的参数,响应的DCT系数矩阵也被分块。
图片来自
https://wenku.baidu.com/view/fab37c4952e2524de518964bcf84b9d529ea2c10.html
DCT变换特点
系数值全部集中在0值附近,不为0的集中在系数矩阵的左上角,没有保留原图像的边缘,轮廓信息,DCT缺乏时局性。
整体DCT变换和分块DCT变换的区别
分块DCT变换是反应了图像某一部分的信息,而整体DCT变换是对整副图像,但是运算速度比分块DCT慢。
图片来自
https://blog.csdn.net/WilsonSong1024/article/details/80318006
代码
close all;
clear all;
clc;
I=imread('1.jpg')
J=dct2(rgb2gray(I));
figure('Name','离散余弦变换');
subplot(1,2,1);
imshow(I