Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image LSB隐写术中PNG文件大小的增加_Image_Compression_Png_Pixel_Steganography - Fatal编程技术网

Image LSB隐写术中PNG文件大小的增加

Image LSB隐写术中PNG文件大小的增加,image,compression,png,pixel,steganography,Image,Compression,Png,Pixel,Steganography,我正在研究图像隐写问题,其中我必须在png图像文件中隐藏一些文本信息。成功的隐写操作后,生成的结果图像比原始文件大。由于我使用的是LSB隐写术(1位、2位、3位),它不应该增加文件大小,因为存储的数据位于图像的现有位内。不会向原始图像添加其他字节。所以我无法理解为什么会发生这种情况。从概念上讲,它不应该增加结果文件的大小 例如 原始文件大小:88 KB 文本文件大小:382KB 生成的PNG文件大小:487KB 我读到PNG采用“无损数据压缩”。所以我假设PNG可能以压缩格式存储图像,所以当我从

我正在研究图像隐写问题,其中我必须在png图像文件中隐藏一些文本信息。成功的隐写操作后,生成的结果图像比原始文件大。由于我使用的是LSB隐写术(1位、2位、3位),它不应该增加文件大小,因为存储的数据位于图像的现有位内。不会向原始图像添加其他字节。所以我无法理解为什么会发生这种情况。从概念上讲,它不应该增加结果文件的大小

例如

原始文件大小:88 KB 文本文件大小:382KB 生成的PNG文件大小:487KB

我读到PNG采用“无损数据压缩”。所以我假设PNG可能以压缩格式存储图像,所以当我从图像中读取图像字节时,它们会被扩展,因此图像大小会增加。如果我错了,请纠正我。任何形式的帮助都将不胜感激。

从概念上讲,它应该增加或至少更改生成的文件大小。压缩取决于图像中的相关性,特别是像素值中的相关性。您正在更改像素值,因此正在消除压缩所依赖的一些相关性。压缩时说“存储的数据在图像的现有位中”毫无意义。不仅存在现有位,而且存在您正在改变的现有相关性

实际上,您是在低位添加噪声,这将始终增加无损压缩数据的大小


简单示例:如果从图像中的线性渐变开始,相邻像素值为200、201、202、203、204、205、206和207。PNG应用的过滤器将采用差异,这将导致(假设您位于一行的开头)200、1、1、1、1、1、1、1、1。一个序列压缩得很好。然后在低位添加噪声,并将其更改为207、202、205、206、204、209、210和210。现在的差异是:207,-5,3,1,2,5,4,0。这样的序列压缩效果不如一堆序列好。

这是一个格式问题,因为您打开图像文件,例如JPG格式文件,然后打开原始图像,对于此原始图像应用LSB,然后将此原始图像保存为PNG格式,原始图像的数据比JPG文件字节大。

对不起,我没弄清楚你的意思。你是想说压缩数据在这里丢失了,这就是图像大小增加的原因吗?你能详细说明一下吗?那么我需要写一个算法来压缩这个字节,以得到尽可能小的大小吗?+1是概念上正确的答案。但在你的例子中,区别应该是
200,1,1,1,1,1,1
@ankur.trapasiya:你不必写任何算法,你必须接受它。你要么需要一种不同形式的隐写术(请注意,LSB是一种非常弱的隐写术,无论是在隐藏还是在图像转换后的持久性方面)或者使用其他文件格式进行实验,例如未压缩的BMP。您的问题已经在下面得到了回答,如果无法理解,那么您需要更好地理解。它不是特定于JPG输入的。这是一个PNG文件被压缩。为了添加到每个像素的LSB,您必须拉出PNG文件的原始位图。然后修改该数据并创建一个新的PNG文件,尝试压缩修改后的数据。修改后的位图数据可能不像旧的原始位图那样容易压缩。