画像を見ずにプログラムで画像の劣化を検出できる既知のアルゴリズムはありますか?
色の歪み、エッジ ノイズ、ブロックネスなど、非可逆再エンコードの明白な (目に見える) 画像アーティファクトについて考えます。
たとえば、元のソースから JPEG 品質 80 でエンコードされた画像は問題ありません。
これが質問するのに適切な場所であることを願っていますが、モデレーターが私が DSP stackexange などで質問するべきだったと思う場合は、再リンクしてください。
画像を見ずにプログラムで画像の劣化を検出できる既知のアルゴリズムはありますか?
色の歪み、エッジ ノイズ、ブロックネスなど、非可逆再エンコードの明白な (目に見える) 画像アーティファクトについて考えます。
たとえば、元のソースから JPEG 品質 80 でエンコードされた画像は問題ありません。
これが質問するのに適切な場所であることを願っていますが、モデレーターが私が DSP stackexange などで質問するべきだったと思う場合は、再リンクしてください。
CMFD (Copy-Move Forgery Detection) と呼ばれるライブラリがあり、アーティファクトの検出や画像の偽造を検出するためのその他のアルゴリズムを実行します。http://www5.cs.fau.de/research/software/copy-move-forgery-detection/から無料で入手できます。
私が行ったいくつかのテストによると、偽造はかなりうまく検出されますが、多くの誤検出があります。
定義する成果物を見つける方法を評価する必要があります。それらを特徴付けたら、それらのアーティファクトを見つけるために各メソッドをコーディングする必要があります。これらの方法は、差分画像 (元の (または中間) からエンコードされたファイルを差し引いたもの) で使用するのがおそらく最適です。おそらく、各カラー チャネルを個別に分析する必要があります。最も単純なのはしきい値です。エンコードされた画像の一部がしきい値によってずれていますか? ブロックノイズとエッジ ノイズについては、おそらくある種のハフ変換を使用して差分画像の形状/線を認識し、ウェーブレット変換または特定の周波数パターンに調整してエッジ周辺のリンギングを選択できる同様のものを使用する可能性があると思います.
編集(kloのコメントに応じて):参照がなければ、あなたが望むことを達成できるかどうかわかりません. 個々のカラー チャネルで説明したテクニックを適用することもできます。難しいのは、参照がなければ、必ずしもアーティファクトを測定するわけではなく、画像の特徴も測定することになるということです。ブロックは回転ではなく、画像フレームと正確に向き合うという事実など、いくつかの先験的な情報を引き続き使用できます。実際の画像には、フレームで完全に方向付けられた多くのブロック状の特徴が含まれている可能性は低いでしょう。また、ガウス差やキャニー エッジ検出などのエッジ検出アルゴリズムを適用し、検出されたエッジの近くにウェーブレット フィルターを適用してリンギングを探すこともできます。
既知のプログラム可能な方法については、python の scikits-image (メーリング リストへの投稿から知っている) を参照するか、Python バインディングを持つ OpenCV を参照してください。私は Matlab の機能に詳しくありませんが、おそらくそれも同様に機能するでしょう。