当前位置:首页 » 操作系统 » dct算法matlab

dct算法matlab

发布时间: 2024-08-15 13:41:33

① dct2是什么,在matlab里

函数dct2:是MATLAB图像处理工具箱实现离散余弦变的一种方法,用一个基于FFT的算法来提高当输入较大的方阵时的计算速度。

语法
B=dct2(A)
B=dct2(A,m,n)
B=dct2(A,[m,n])
描述
B=dct2(A)返回A的二维离散余弦变换。矩阵B和A的大小一样,并包含离散余弦变换系数
B=dct2(A,m,n)是在变换以前用0对矩阵A进行填充,填充到m*n的大小。如果m或者n比A相应的小,dct2会将A缩短。
B=dct2(A,[m,n])同上面一样。
支持多类
A既可以是数字型的,也可以是逻辑型的,返回的矩阵B是双精度的。

② matlab 计算 DCT

Matlab自带这个函数,使用方法:

y = dct(x)
y = dct(x,n)

举例:

x = (1:100) + 50*cos((1:100)*2*pi/40);
X = dct(x);
[XX,ind] = sort(abs(X)); ind = fliplr(ind);
i = 1;
while (norm([X(ind(1:i)) zeros(1,100-i)])/norm(X)<.99)
i = i + 1;
end
i =
3

③ MATLAB“错误使用dct2 输入参数太多”怎么解决

MATLAB“错误使用dct2 输入参数太多”,应该这样处理:

由于dct2(I),要求I为(m×n)二维矩阵,而题主得到的I为(m×n×k)三维矩阵,所以使用dct2()函数前,必须将图像转换为灰度图像,即

I = rgb2gray(RGB);

因此,题主的代码应这样来改:

RGB = imread('p1.jpg');

I = rgb2gray(RGB);

D = dct2(I); %DCT变换

D1 = idct2(D); %逆变换

subplot(1,2,1);imshow(I);

subplot(1,2,2);imshow(uint8(D1));

④ MATLAB编写基于离散正弦变换(DCT)的图像压缩程序

I=imread('cameraman.tif')
I=im2double(I) %转换图像矩阵为双精度型。
T=dctmtx(8) %产生二维DCT变换矩阵
%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数
B=blkproc(I,[8,8],'P1*x*P2',T,T') %二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ]
B2=blkproc(B,[8 8],'P1.*x',mask) %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1*x*P2',T',T) %重构图像
subplot(1,2,1)
imshow(I)
title('原始图像');
subplot(1,2,2)
imshow(I2);
title('压缩图像');
我这个程序也是改了后的,不过我运行过了,图片压缩效果都能出来,就是压缩比没有变小,我也不知道为什么,如果有人给决绝了麻烦通知一下,我邮箱[email protected]

热点内容
韩国新建文件夹1 发布:2025-09-13 05:49:31 浏览:222
androidbar 发布:2025-09-13 05:44:26 浏览:986
安卓如何设置多媒体 发布:2025-09-13 05:30:47 浏览:889
存储卡降价了 发布:2025-09-13 05:09:33 浏览:844
tomcat只能内网访问 发布:2025-09-13 05:02:24 浏览:952
sdk怎么加载到安卓 发布:2025-09-13 04:52:21 浏览:872
解压文件快慢涉及哪个配置 发布:2025-09-13 04:47:09 浏览:688
极塞之城ftp 发布:2025-09-13 04:36:59 浏览:414
网络密码在哪里呀 发布:2025-09-13 04:33:31 浏览:447
神话永恒手机游戏脚本 发布:2025-09-13 04:27:48 浏览:279