「Windows Photo Viewer」の回転は無損失ですか?


58

圧縮により多くの情報を失うことを心配せずに、Windowsフォトビューアーで表示する非可逆圧縮写真を回転できますか?


1
私の知る限り、90度の回転(および180、270)は、x座標とy座標のスワップであるため、それ自体でロスレスです(他の角度は補間が必要です)。したがって、変換に起因する損失は、再圧縮によるものです。あなたは、ロスレス形式で変換された画像を保存することによって、この再計算を避けることができますが、それは明らかにあなたの質問の一部ではないので、私はそれを示唆しています
ホレイショ

5
@ horatio、90度の倍数はJPG圧縮の特殊なケースです。圧縮データを「単純に」再配置することで、圧縮サイクルなしで画像を回転させることが技術的に可能です。可逆圧縮のレイヤーを削除して適用する必要があるため、ファイルサイズが変更される可能性がありますが、不可逆な操作は必要ありません。
RBerteig

1
私はあなたを理解していると思いますが、私のポイントは、jpegはディスクストレージ形式であり、変換自体の品質には何の関係もないということです。つまり、多くの場合、JPEGなどの操作について話しますが、ファイルは画面に表示され、操作されますが、JPEGではありません。
ホレイショ

1
私はいつもこの質問への答えを知りたいと思っている人。IMOはそうすべきです。しかし、おそらくJPEG標準によるものです...この操作をロスレスにすることは技術的に可能だとは思いません。
トレバーボイドスミス

2
Google Picasa画像ビューアーはロスレスです。しかし、それはごまかす。画像は回転しません。メタデータで「この画像を回転して表示」するだけです。
トレバーボイドスミス

回答:


64

画像の次元が8の倍数(またはクロマサブサンプリングが使用される場合は16)の場合、回転はロスレスです。そうしないと、ブロックを再計算せずに画像を回転させること、つまり画像を再圧縮することができなくなります。

これは、jpegイメージが一連の8x8または16x16ブロックに分割され、個別に圧縮されるためです。不完全なブロックは、右端と下端でのみ許可されます。したがって、イメージは8/16の正確な倍数ではなく、不完全なブロックが含まれ、回転後に間違ったエッジになります。

Windows 7に同梱されているWindows Photo Viewerのバージョンを使用して、上記の主張を検証しました。色ノイズの2つの画像を使用しました。1つの画像は256x256、つまり両方のサイズが8の倍数でした。他の画像は同じですが、253x253にトリミングされました。つまり、どちらのサイズも8の倍数ではありません。

256x256

253x253

次に、反時計回りに4回回転し、各回転後に写真ビューアーを閉じて、画像が回転した状態で保存されるようにしました。

256x256

253x253

253ピクセルの画像との差を確認するために減算を実行する必要はありません。著しく暗くて濁っています!

他の画像の差分は次のようになります。

すなわち、画像は同一であり、回転はロスレスでした。


1
過去に回転を行ったときに、回転が損失になることを警告していたことを知っています。これは、警告が表示されない場合、変換が無損失であることを意味しますが、チェックしませんでした また、MSがコードベースを変更した可能性を排除せずに、使用していたWPVのバージョンを覚えていないので、わかりません。
マットグラム

1
@Tim純粋なノイズの画像は、定義上、jpeg(または任意の圧縮アルゴリズム)の最悪のケースであるため、私はそれを選択しました!実際の画像の結果はより良く見えるでしょう。
マットグラム

1
@MattGrum、非常にクールなデモ。すべてのデジタルカメラメーカーの画像サイズが8の整数倍であることを願っています!
トレバーボイドスミス

1
@MattGrum私はかつてWPVチームで働いていました。私の知る限り、あなたの答えは正解です。また、あなたの仮説を証明する非常に徹底的な方法のために+1:)
トリスタン

@TrevorBoydSmith私が見たすべてのカメラの画像寸法は8または16の倍数です。回転は必ずしも理由ではなく、JPEGパイプラインの最適化を許可するだけです。
マークランサム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.