DCTブロック分割とヒストグラム処理を用いたグレースケール画像ステガノグラフィの実装手法

グレースケール画像への秘密情報埋め込みにおいて、空間領域への直接編集は視覚的な歪みや統計的異常検出のリスクを伴う。周波数領域変換を活用したステガノグラフィは、画像の局所的特性を利用し、情報の秘匿性と耐性を両立させる手法として実用性が高い。本アプローチでは、離散コサイン変換(DCT)による8×8ブロック分割とヒストグラム特性の最適化を組み合わせ、情報容量の拡大と視覚的不可視性の向上を同時に実現する。

アルゴリズムの構成と処理フロー

情報埋め込み処理は以下の4つの工程で構成される。

  1. ブロック分割と周波数変換: キャリア画像を重複のない8×8ピクセルブロックに分割し、各ブロックに対して2次元DCTを適用する。これにより、空間領域の輝度情報が周波数係数(DC成分およびAC成分)へマッピングされる。
  2. 係数変調による埋め込み: 人間の視覚特性が低周波成分に敏感であることを考慮し、秘密ビット列を中低周波のDCT係数に対して微小な増減として付加する。埋め込み強度はブロック内の分散値に基づき適応的に調整され、視覚的アーティファクトを抑制する。
  3. ヒストグラム分布の平坦化: 係数変調に伴う画素値分布の偏りを補正するため、処理後のブロックに対してヒストグラム均衡化処理を適用する。コントラストの均一化により、画像の統計的プロファイルが自然画像に近づき、ステガノグラフィ解析ツールによる検出を防ぐ。
  4. IDCTによる空間領域再構成: 調整済みのDCT係数に対して逆離散コサイン変換を実行し、空間領域の画像データを再構築する。ブロック境界の不連続性を低減するため、必要に応じてスムージングフィルタまたはオーバーラップ重畳処理を併用する。

MATLABによる実装例

以下は、埋め込み前後の画素統計を評価するための確率分布算出関数である。元の逐次処理をベクトル化演算に置き換え、メモリ効率と実行速度を改善している。

function prob_dist = compute_pixel_probabilities(src_img)
% 入力画像の画素値出現確率を算出する関数
% 入力: src_img - 読み込み済み画像行列
% 出力: prob_dist - 256次元の正規化確率ベクトル

if ndims(src_img) > 2
    src_img = rgb2gray(src_img);
end

pixel_stream = double(src_img(:));
total_count = numel(pixel_stream);

bin_limits = 0:256;
raw_counts = histcounts(pixel_stream, bin_limits);

prob_dist = raw_counts(:) / total_count;
prob_dist(prob_dist == 0) = eps;
end

性能評価と特性

本手法の有効性は、以下の指標に基づき定量的・定性的に検証される。

  • 埋め込み容量: 周波数係数の階調変調を利用するため、LSB置換などの空間ドメイン手法と比較してビットレートを向上させられる。量子化行列の最適化により、容量と画質のバランスを制御できる。
  • ロバスト性: JPEG圧縮、ガウシアンノイズ付加、クロッピングなどの一般的な画像編集操作に対し、低周波成分の情報保持特性によりビット抽出成功率が維持される。適応的強度制御により、攻撃耐性が強化される。
  • 不可視性: ヒストグラム調整と視覚閾値の考慮により、PSNRおよびSSIMの指標が基準値を大幅に上回る。統計的解析(ペア値解析やRS分析法)に対しても、自然画像のヒストグラム特性を模倣するため検出回避性が高い。

エンコード処理はブロック単位での並列演算に対応しており、大規模データセットやリアルタイム伝送経路への統合が容易である。係数選択ルールや誤り訂正符号の組み合わせは、対象システムの情報セキュリティ要件に応じて拡張可能である。

タグ: 画像ステガノグラフィ 離散コサイン変換 DCTブロック処理 ヒストグラム平坦化 MATLAB実装

5月14日 18:26 投稿