為什麼隱寫術不增加未壓縮圖像的大小?
所以我有這個問題。由於 .BMP 未被壓縮,我從Google下載了一個 .BMP。只是一個 1024x768 .BMP 圖像,其大小為 2.25Mb。我將圖像放入隱寫術應用程序中。在其中插入隱藏文本,加密和所有內容。為什么生成的圖像(隱寫圖像)仍然是 2.25Mb 大小?不應該變大嗎?
如果您考慮以最簡單的形式嵌入圖像的機制,那麼您所做的就是重新利用一些現有位。以下是來自一篇關於隱寫術的文章的維基百科摘錄:-
例如,24 位點陣圖使用 8 位來表示每個像素的三個顏色值(紅色、綠色和藍色)中的每一個。只有藍色有 $ 2^8{}{} $ 不同級別的藍色強度。11111111 和 11111110 之間藍色強度值的差異可能無法被人眼檢測到。因此,最低有效位可以或多或少不可檢測地用於除顏色資訊之外的其他內容。如果對每個像素的綠色和紅色元素也重複此操作,則可以為每三個像素編碼一個 ASCII 文本字母。
有點像這樣:-
除了你的資訊是加密的。所以圖像保持完全相同的大小。
您(和您的軟體)面臨的問題是您可以更改多少位而不被注意到?一個肯定。上面的範例使用了兩個,更改後的圖像看起來很相似。那你能用三個嗎?很明顯,7 位會完全破壞圖像並提示攻擊者。這是利用圖像數字化過程引入的不可避免的噪音、藝術場景以及您喜歡生活的危險程度之間的平衡。
一般來說,從 CMOS/CCD 感測器的角度來看,藍色通道是最嘈雜的。您可能能夠在沒有明顯人類檢測的情況下向該通道注入額外的位。
注意:有更高級的嵌入方法可以改變 JPEG 文件中的離散餘弦變換係數。這允許 JPEG 隱藏在這種有損格式中原本不可能的消息。在 JPEG 圖像中的數據隱藏介紹中對高級方法進行了很好的總結,該方法使用一種新技術:DCT-M3 對隱寫分析具有很高的抵抗力。
我想你需要明白,隱寫術不會給圖像添加數據,而是替換圖像中的一些原始數據。在您的情況下,替換的數據是特定顏色通道的 LSB(最低有效位)。這些通道中 LSB 的原始值失去了,而您要隱藏的數據進來替換它。因此,它不會為處理後的圖像引入任何額外的大小(忽略可能受到影響的壓縮,但對於 BMP 是一些未經壓縮的原始數據)。