Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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
Java 基于DCT的隐写术_Java_Text_Jpeg_Steganography_Dct - Fatal编程技术网

Java 基于DCT的隐写术

Java 基于DCT的隐写术,java,text,jpeg,steganography,dct,Java,Text,Jpeg,Steganography,Dct,一般来说,使用DCT嵌入消息涉及4个步骤: 将图像分成8x8个块 使用DCT数学运算变换每个块 量化每个DCT块(有损压缩) 嵌入量化系数中的消息位(避免0、1、-1和AC) 没关系,但我不确定如何提取数据。您是否要通过步骤1-3对每个块进行量化,以提取每个系数的LSB 如果是这样的话,你会不会丢失(可能是嵌入的数据)数据,因为这是一种有损技术 另外,当我试图量化每个块时,我得到的是与前一幅图像相同的系数(如LSB变化没有影响) 有人能在这个问题上启发我吗 感谢消息的嵌入发生在有损压缩之后——不

一般来说,使用DCT嵌入消息涉及4个步骤:

  • 将图像分成8x8个块
  • 使用DCT数学运算变换每个块
  • 量化每个DCT块(有损压缩)
  • 嵌入量化系数中的消息位(避免0、1、-1和AC)
  • 没关系,但我不确定如何提取数据。您是否要通过步骤1-3对每个块进行量化,以提取每个系数的LSB

    如果是这样的话,你会不会丢失(可能是嵌入的数据)数据,因为这是一种有损技术

    另外,当我试图量化每个块时,我得到的是与前一幅图像相同的系数(如LSB变化没有影响)

    有人能在这个问题上启发我吗


    感谢

    消息的嵌入发生在有损压缩之后——不可能丢失消息,因为丢失数据的步骤已经执行(实际嵌入除外,它只丢失图像数据,并用消息替换)。理想情况下,您可以直接从系数本身提取消息——也就是说,提取过程中不涉及解压缩。

    当您将DCT块乘以量化矩阵时,您很可能会得到非常大的空间频率数字-图片将变得有噪。但是,您需要对系数进行规格化,以便任何像素的任何值都不超过[0..1]界限([0..255])。规格化后,您可能会丢失一些信息。

    您的意思是只变换每个块,然后提取它的LSB吗。因此,不要对它们进行量化?量化是因为JPEG压缩需要量化。在编码端没有任何LSB提取——它是LSB替换。好的,所以只需要清除它。嵌入量化系数(步骤3),然后提取DCT系数(仅到步骤2)?再次感谢(只是我没想到量化系数与去量化系数具有相同的LSB),我认为这里仍然有些混乱。步骤1-4只涉及嵌入消息,步骤1-3只是基本的JPEG压缩。也就是说,您可以进行完全标准的JPEG压缩,然后对已经进行DCT的图像进行隐写。然后,在接收端,从JPEG系数本身提取消息。也就是说,提取过程不需要做任何类型的DCT工作。它只是读取位。啊。看,我现在做的是,在所有步骤之后,我对每个块进行去量化,然后应用逆DCT恢复像素数据,然后将其存储为像素。这不是正确的方法吗?因为在接收端,隐藏图像随后被转换为DCT系数进行提取(但现在看来这是错误的)。对于所有这些混乱,很抱歉。@DouglasGrealis,将系数规格化是什么意思?@DouglasGrealis,在使用浮点数时返回图像,将所有像素规格化为边界,然后重新编码为JPEG。