1

Java を使用して、ステガノグラフィ プログラムを PNG ファイルにコーディングしました。私のプログラムは、PNG ファイルと BMP ファイルの両方で非常にうまく機能します。しかし、私のプログラムを JPG ファイルで実行しようとすると、明らかになったデータは元のデータと同じではありません。確かに、各ファイル タイプのヘッダーは同じではありません。そして今、私は疑問に思います。PNG ファイルと JPG ファイルのデータ構造は同じではありませんか? ヘッダーとフッターに影響を与えずに JPG ファイルのバイトを操作する方法を正確に知る必要があります。

ありがとう。

4

1 に答える 1

3

まず、画像ステガノグラフィーに使用している正確な方法を伝える必要があります。たとえば、秘密データを画像のピクセルの lsb に隠したり、バイナリ形式でファイルを読み取ったりします。

lsb での作業があなたの手順である場合、次の回答があなたの質問を満たしていることを願っています-

「PNG」と「BMP」は実際には可逆ファイル形式です。新しい画像を作成するときにこれらの形式のピクセルのビットを操作した後、データは失われません。これが、すべての非表示データを取得できる理由です。

ただし、'JPG' 形式では非可逆圧縮技術が使用されているため、ピクセルに隠されているデータが失われます。私もこの問題に直面しましたが、これに対する解決策は変換ドメインで画像を処理することにあります。その実装には、Direct Cosine Transform メソッドを使用する必要があります。

変換ドメインには、アルゴリズムの操作と、離散コサイン変換 (DCT) やウェーブレット変換などの画像変換が含まれます。これらのメソッドは、画像のより重要な領域の情報を隠すことができ、輝度などの画像のプロパティを操作することもできます。これらの種類の手法は、イメージ ドメインのビット単位のステガノグラフィ手法よりも効果的です。トランスフォーム ドメイン技術は、あらゆる形式の画像に適用できます。また、無損失形式と無損失形式の間の変換は存続する可能性があります。

DCTはステガノグラフィーでどのように機能しますか?

画像は 8x8 のピクセル ブロックに分割されます。DCT は、左から右、上から下の各ブロックに適用されます。量子化テーブルは各ブロックを圧縮して DCT 係数をスケーリングし、メッセージはスケーリングされた DCT 係数に埋め込まれます。

この方法にはまだ多くの研究が必要です。私はそのコードに取り組んでおり、できるだけ早く投稿します。

他の開発者からの他の方法や異なる効率的なテクニックについて聞くのは喜ばしいことです。

于 2012-07-20T05:06:20.303 に答える