下面matlab程序是书上的,但是我运行就是会出错求解释求更正
I = imread('ceshi.jpg'); % 读取图片
I = im2double(I) ;%图片存储类型转换
T = dctmtx(8);%离散余弦变换矩阵
B = blkproc(I,[8 8],'P1*x*P2',T,T'); %对源图像进行DCT变换
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);%数据压缩,丢弃右下角高频数据
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);%进行反DCT变换
subplot(1, 2, 1); imshow(I, []);
subplot(1, 2, 2); imshow(I2, []);
答案:你的文件ceshi.jpg不是书上的文件,你自己随便用一个彩图的话,读出来的数据可能是3维的,blkproc这个函数是处理2维数据,所以会报错,你在第一句后面加上这一句 I=rgb2gray(I);就能运行了 ,就是把彩图变成灰度图
其他:是否缺少ceshi.jpg这个文件
上一个:利用matlab将一张图片分割成10×10的小图片,求程序!
下一个:关于matlab 的,为什么这个程序运行出来只有三条曲线,应该要四条啊,求高手帮忙啊