signallock
2009-05-24, 16:23
正在学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上都试过了,都会出现这个问题……
如果这样:
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上都试过了,都会出现这个问题……