600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 数字图像处理学习笔记(十八)实现图像的离散余弦变换

数字图像处理学习笔记(十八)实现图像的离散余弦变换

时间:2022-12-18 05:45:53

相关推荐

数字图像处理学习笔记(十八)实现图像的离散余弦变换

实验截图:

自带函数实现的离散余弦变换:

利用公式求出的DCT和IDCT

实验代码:

代码(1):

img=imread('erciyuan.jpg');img=rgb2gray(img);figure(1)%显示原图像subplot(1,3,1);imshow(img);title('原图')%计算二维dct变换img_cos=dct2(img)subplot(1,3,2);imshow(log(abs(img_cos)));title('DCT离散余弦变换')%把变换后的矩阵中小于10的值置换为0,再用idc2重构图像img_cos(abs(img_cos)<10)=0;img_acos=idct2(img_cos)/255subplot(1,3,3),imshow(img_acos);title('IDCT反离散余弦变换(恢复原样)')

代码(2):

img = imread('erciyuan.jpg');img = rgb2gray(img);[m,n] = size(img);M = zeros(m,m);N = zeros(n,n);for i = 0 : m - 1for j = 0 : m - 1if i == 0 M(i + 1,j + 1) = sqrt(1 / m) * cos(((2 * j + 1) * i * pi) / (2 * m)); elseM(i + 1,j + 1) = sqrt(2 / m) * cos(((2 * j + 1) * i * pi) / (2 * m));end endendfor i = 0 : n - 1 for j = 0 : n - 1 if i == 0 N(i + 1,j + 1) = sqrt(1 / n) * cos(((2 * j + 1) * i * pi) / (2 * n)); elseN(i + 1,j + 1) = sqrt(2 / n) * cos(((2 * j + 1) * i * pi) / (2 * n));endendendDCT = M * double(img) * N';IDCT = M' * DCT * N;subplot(1,3,1);imshow(img);title('原图');subplot(1,3,2);imshow(DCT);title('DCT');subplot(1,3,3);imshow(uint8(IDCT));title('IDCT');

结果分析:

离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。