鏡の次元に現れた猫
(lcamtuf.substack.com)Sir, there's a cat in your mirror dimension
-
以前、周波数領域について話したことがある。
- 日常的な信号を、構成波形の振幅へ変換する手法だ。
- 最も一般的な基礎は、周波数が増加していく正弦波である。
- そのほかにも無数の波形が、さまざまな周波数領域を作り出せる。
-
周波数領域変換の重要な特性は2つある。
- 可逆性: 周波数画像から元のデータを復元できる。
- 入出力対称性: 同じ数学的演算を使って双方向に変換できる。
-
実際には、この区別は重要だ。
- とりわけ圧縮で重要になる。
- 画像を周波数領域に変換し、高周波成分の精度を落とすと、データ量を減らせる。
- それでも結果の画像は、見た目にはほぼ同じままだ。
MS Paintを最先端の圧縮ツールとして使う
-
周波数領域の画像は、広がったノイズのように見える。
- その大部分は視覚的には重要ではない。
- 変換とは、機能的に同等な2つの次元を行き来するためのレバーだ。
- この鏡の次元を住処にして、そこへデータの一部を移せないかと思えてくる。
-
それを試すため、猫の写真を持ってきて、離散コサイン変換(DCT)で周波数領域の形を計算した。
- 時間領域の猫、周波数領域の猫。
-
前の例で使った女性の写真を使い、鏡の次元の「猫ノイズ」パターンを重ねて不透明度を下げた。
- 時間領域の女性と周波数領域の猫。
-
合成作業には必然的に損失が生じる。
- 理論上、合成画像にDCTをかけて周波数領域表現を計算すると、女性の写真は均一なノイズへと分解されるはずだ。
- 注入した「猫ノイズ」は、認識可能な猫の画像へと凝集するはずである。
-
実際にその通りになった。
- 周波数領域の猫と時間領域の女性。
-
自分で確かめたいなら、合成画像をダウンロードしてMATLABで次を実行すればよい。
woman = imread("woman-with-cat.png"); colormap('gray'); imagesc(woman, [0 255]); pause(1); cat = dct2(woman); imagesc(imgaussfilt(cat, 1), [-4 4]); -
興味深いことに、この猫はホスト文書のリサイズにも生き残る。
- アップスケーリングでは画像がタイル状に並ぶ。
- ダウンスケーリングでは画像が切り取られる。
-
非可逆圧縮が猫をどれだけ損なうのかも気になった。
- 影響は予想より小さかった。
- JPEGの高品質設定では、画像はかなり良好に見える。
- 品質設定を下げると、右下の象限がひどく量子化される。
- 周波数領域で見たJPEG圧縮の混乱。
-
この可視化は、JPEGアルゴリズムがどれほど多くの情報を破壊しているかを示している。
- とはいえ、その大半には私たちは気づかない。
-
音声スペクトログラムを隠しメッセージとして使う例は、以前から数多くある。
- JPEGのDCT係数を使ったテキスト・ステガノグラフィーについての議論もある。
- この技術が特別に有用だというより、周波数領域と時間領域が面白い形でつながっていることを強調している。
GN⁺の見解
- 周波数領域変換の理解: 周波数領域変換は、データ圧縮や信号処理で重要な役割を果たす。これを理解すれば、画像や音声データを効率的に扱える。
- MATLABの活用: MATLABはデータ分析と可視化に強力なツールだ。この記事を通じて、MATLABの実用的な活用例を学べる。
- JPEG圧縮の限界: JPEG圧縮の限界を視覚的に理解できる。これは、画質を保ちながらファイルサイズを減らす方法を探す助けになる。
- ステガノグラフィー: 周波数領域を使ったステガノグラフィーは、データセキュリティに関わる興味深いテーマだ。これによって、隠しメッセージを伝える方法を学べる。
- 技術の面白い応用: この記事は、技術を面白く創造的に応用する方法を示している。技術への興味を高め、新しいアイデアを思いつくきっかけになる。
1件のコメント
Hacker Newsの意見
Hacker Newsコメントまとめ要約
写真の主題とスペクトルエネルギー:
デジタル透かしの基礎:
フーリエ変換の時間-周波数双対性:
手順確認の依頼:
ステガノグラフィーへの応用:
Aphex Twinのオーディオスペクトログラムのトリック:
DCTでの位置の重要性:
画像圧縮の理解:
DCTの具体的な方法:
音楽と画像エンコーディング: