主题: [MATLAB图像处理] jpeg隐写,关于imread()和imwrite()
查看单个帖子
旧 2009-05-24, 16:23   #1
signallock
初级会员
 
注册日期: 2009-05-24
年龄: 35
帖子: 1
声望力: 0
signallock 正向着好的方向发展
难过 jpeg隐写,关于imread()和imwrite()

正在学jpeg隐写,目前用的算法是Jsteg,就是把图像进行FDCT和量化之后修改LSB,之后反量化和IDCT,之后存盘。但是发现了一个挺莫名其妙的问题,如果读那个新生成的图像,再对它进行信息提取,提取出来的信息就会面目全非,但是如果不读新生成的图像,而是直接在内存里面进行提取,就一切正常。
如果这样:
imwrite(srcimg,'dst.jpg','jpg);
dstimg=imread('dst.jpg');
……
结果就不正确,但是
%dstimg=imread('dst.jpg');
dstimg=srcimg;
……
结果就是正确的……不知道Matlab7.0(R14)的imread()和imwrite()函数是不是有什么特别的要求?

用完全相同的源代码,在Octave 3.0.3 上运行,什么问题都没有,不管是读硬盘还是读内存,结果都是正确的。是不是Matlab 7.0(R14)的一个bug呀?我用的Matlab是网络上流传的盗版的,在Linux (Fedora 10)上和Windows Xp上都试过了,都会出现这个问题……
signallock 当前离线   回复时引用此帖