求:将压缩图像的还原程序,用我这个对么?
利用离散余弦变换对图像进行压缩后,将压缩图像还原的程序,急需!!谢谢***** 使用编辑合并一贴是好习惯, 但别人若已回覆, 建议不宜再修改! by ChaChing *****
[ 本帖最后由 ChaChing 于 2009-5-18 09:33 编辑 ] 不鼓励直接求程序,建议楼主自己编写,遇到问题再来求助。
回复 沙发 friendchj 的帖子
菜鸟太菜了, 不懂……====== wmx_1919 于 2009-5-17 19:17 ======
I=imread('G:\lena.bmp'); I=im2double(I); T=dctmtx(8);
B=blkproc(I,,'P1*x*P2',T,T');
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,,'P1.*x',Mask);
I2=blkproc(B2,,'P1*x*P2',T',T);
subplot(121),imshow(I); subplot(122),imshow(I2)
B2=blkproc(B,,'P1.*x',Mask); I2=blkproc(B2,,'P1*x*P2',T',T);
这两句程序 有什么区别????分别是什么意思呢?谢谢
这个程序不是我的%
====== wmx_1919 于 2009-5-17 19:17 ======
[ 本帖最后由 ChaChing 于 2009-5-18 09:24 编辑 ] 看看idct函数行不行
回复 楼主 wmx_1919 的帖子
BLKPROC调用形式:B = blkproc(A,,,fun,...)
B = blkproc(A,'indexed',...)
B = blkproc(A,,fun, parameter1, parameter2, ...)
前两个help里有,就不说了。对于B = blkproc(A,,fun, parameter1, parameter2, ...),parameter1, parameter2是要传给fun函数的参数。例如对于B2=blkproc(B,,'P1.*x',Mask);,是将参数mask传给函数'P1.x'中的P1,x是B的一块(8*8)。
回复 5楼 friendchj 的帖子
我就是不怎么懂“p1.*x”和"p1*x*p2"这两个参数分别是什么意思,有什么差别,为什么用就能实现不同的功能呢、。?回复 5楼 friendchj 的帖子
一开始很好奇, 怎会有调用形式help里头没有写到的!找下blkproc.m瞄了下, 还真是如此, 参数调用形式未来可能淘汰的
表示旧版可能有此形式, 将来新版就没有了, 目前算过渡吧!
个人理解对吗?
回复 6楼 wmx_1919 的帖子
p1.*x”和"p1*x*p2"这两个参数分别是代表什么意思?好像已非编程问题, 而是专业问题了!
回复 7楼 ChaChing 的帖子
不懂:@( ···回复 7楼 ChaChing 的帖子
不太清楚,不过感觉这种形式挺好的,不知将来会演变成哪种更好的形式回复 10楼 friendchj 的帖子
谢谢回覆! 多些功能当然是不错!image是来此边看边学的, 可说完全不懂!
喔, LZ怎知道有那种形式? help都没有的
回复 11楼 ChaChing 的帖子
也不是完全不懂,似懂非懂的,不过图像处理出来了…… 这个用法肯定是没有错的,是书上的例程。只要理解以下几点,就容易了:(1)Mask矩阵是用来压缩dct系数的
(2)有些指令是可以等效替换的,那个程序并不是最简洁的,只是告诉dct和逆dct的计算步骤
blkproc是分块处理函数,用法得等效形式如下:
fun = @dct2;
J = blkproc(I,,fun);
这2条语句可以等效为J = blkproc(I,,‘dct2’);
B=blkproc(I,,'P1*x*P2',T,T');%进行二维dct变换,可以换为B=blkproc(I,,'dct2');
B2=blkproc(B,,'P1.*x',Mask); %系数压缩
I2=blkproc(B2,,'P1*x*P2',T',T);%进行二维dct逆变换,可以换为I2=blkproc(B2,,'idct2');
对于不分块的情形,可以进行简单验证:
>> a=magic(3);b=blkproc(a,,'P1*x*P2',t,t');c=blkproc(a,,'dct2');d=dct2(a);
>> b,c,d
b =
15.0000 0 0.0000
0.0000 -0.0000 6.9282
0.0000 3.4641 0.0000
c =
15.0000 0 0
0 0 6.9282
0 3.4641 0
d =
15.0000 0 0
0 0 6.9282
0 3.4641 0
结果基本一致
回复 13楼 花如月 的帖子
非常感谢!!
页:
[1]