Steganography
DCT隱寫問題
我正在用 Java 創建 DCT 隱寫算法的實現,但遇到了一個小問題。當我將消息嵌入封面圖像時,我首先獲取特定 8*8 塊的該圖像的 DC 係數,然後根據二進制消息替換最後一個係數等於 0 或 1我嵌入。一旦它被嵌入到 8x8 塊中,然後我將它通過逆 DCT 以重新創建我的 Stego 對象。
但是,當我通過 DCT 傳遞 Stego 對象並恢復每個塊的最後一個係數時,有時係數已經改變,因此不會產生我最初嵌入其中的正確消息。
有誰知道/理解為什麼會發生這種情況以及我該如何解決?
例如嵌入消息 = 00 0 1001000 0 0111101 0 01 1 0101100101 恢復的消息 = 00 1 1001000 1 0111001 1 01 0 0101100101
這只發生在某些圖像上,但不是全部,我不確定發生了什麼。我的程序在決定是否嵌入之前檢查最後一個係數是否等於 0。
逆 DCT 用於解壓縮圖像,但您不必對圖像進行解壓縮。如果您解壓縮圖像,我想您還可以再次壓縮它以讀取 DCT 係數,並且就 JPEG 是一種有損格式而言,某些 DCT 係數可能會改變它們的值。
但是 JPEG 不能以這種方式工作。在 JPEG 中,DCT 係數被壓縮並保存到文件中。它是一種視覺化工具,可將圖像解壓縮以將其顯示給使用者。