4

昨夜寝る前に、Learning Perl の Scalar Data セクションをもう一度ブラウジングしたところ、次の文に出くわしました。

文字列に任意の文字を含めることができるということは、生のバイナリ データを文字列として作成、スキャン、および操作できることを意味します。

ハードディスクに保存した画像を実際に Perl でスキャンして、Adobe という文字列が含まれているかどうかを確認できるというアイデアがすぐに浮かびました。こうすることで、どれが加工されたものか分かるようです。そこで、このアイデアを実装しようとしたところ、次のコードを思いつきました。

#!perl
use autodie;
use strict;
use warnings;

{
    local $/="\n\n";
    my $dir = 'f:/TestPix/';
    my @pix = glob "$dir/*";

    foreach my $file (@pix) {
        open  my $pic,'<',  "$file";

        while(<$pic>) {
            if (/Adobe/) {
                print "$file\n";
            }
        }
    }
}

興味深いことに、このコードは実際に機能しているようで、Photoshop で加工された写真をフィルターで除外しています。しかし問題は、多くの写真が他のユーティリティによって編集されていることです。私はそこで立ち往生していると思います。デジタル画像が編集されているかどうかを判断するための単純だが普遍的な方法はありますか?

if (!= /the origianl format/) {...}

それとも、単に条件を追加する必要がありますか? お気に入り

if (/Adobe/|/ACDSee/|/some other picture editors/)

これに関するアイデアはありますか?それとも、プログラミングの知識が非常に限られているために単純化しすぎているのでしょうか?

いつもご指導ありがとうございます。

4

10 に答える 10

8

Perl での最善の策は、おそらくExifToolです。これにより、画像に埋め込まれている画像以外の情報にアクセスできます。ただし、他の人が言ったように、もちろん、この情報を取り除くことは可能です。

于 2009-10-26T04:28:08.753 に答える
4

画像の変化を検出する方法が絶対にないと言うつもりはありませんが、問題は非常に困難です。

答えがあると主張する私が知っている唯一の人物は、画像のデジタル的に変更された部分が元の部分とは異なる圧縮エラー率を持つと主張するニールクラウェッツ博士です。彼は、さまざまな品質レベルでJPEGを再保存すると、これらの違いが浮き彫りになると主張しています。

私の調査では、これが当てはまるとは思いませんでしたが、おそらくあなたはより良い結果を得るかもしれません。

于 2009-10-26T05:37:18.653 に答える
3

画像の編集に使用されるグラフィックプログラムの名前は、画像データ自体の一部ではなく、メタデータと呼ばれるものの名​​前です。これは画像ファイルに保存できますが、他の人が指摘しているように、必須ではありません(一部のプログラムでは必要ない場合があります)。保存します。保存しないオプションが許可される場合もあります)、信頼性もありません。画像を偽造した場合は、メタデータも偽造した可能性があります。

したがって、あなたの質問に対する答えは、「いいえ、写真が編集されたかどうかを普遍的に判断する方法はありませんが、一部の画像編集ソフトウェアはその署名を画像ファイルに書き込み、編集者の不注意によってそこに残されます。 。

于 2009-10-26T04:41:56.643 に答える
3

Perl での画像処理についてさらに学びたい場合は、CPAN が提供する優れたモジュールのいくつかを参照してください。

  • Image::Magick - 多数の画像ファイル形式の読み取り、操作、および書き込み
  • GD - 多数のグラフィック プリミティブを使用してカラー図面を作成し、図面をさまざまな形式で出力します。
  • GD::Graph - チャートを作成する
  • GD::Graph3d - GD と GD::Graph で 3D グラフを作成する

ただし、さまざまな画像形式を識別するために使用できるユーティリティは他にもあります。スーパーユーザーにとってはもっと問題ですが、さまざまなUNIXディストリビューションでは、さまざまなfile種類のファイルを識別するために使用できます.MacOSXでは、Graphic Converterは私を失望させたことはありません. (獣医からディスクに入れた、私の猫の粉々になった骨盤の奇妙な複数ファイルの X 線を開くことさえできました。)

于 2009-10-26T06:21:35.233 に答える
3

いいえ。完全に編集された画像と、最初からそのままの画像との間に機能上の違いはありません。最終的にはすべてピクセルの袋に過ぎず、その他のメタデータは削除または偽造できます。欲しいです。

于 2009-10-26T04:25:51.990 に答える
1

他の人が述べているように、画像がドクターされたかどうかを知る方法はありません。基本的に知りたいのは、リアルな写真と、強化または修正された写真の違いだと思います。

画像内のすべてのピクセルを分析し、非常に複雑な処理を実行して画像がドクターされているかどうかを判断する、非常に複雑な画像認識アルゴリズムを実行するオプションが常にあります。このソリューションには、おそらくAIが含まれ、医師のいる写真とそうでない写真の両方を調べて、そこから学ぶことができます。ただし、これは理論的な解決策であり、あまり実用的ではありません...おそらく映画でしか見られないでしょう。開発は非常に複雑で、おそらく何年もかかります。そして、あなたがこのようなものを機能させたとしても、それはおそらく常に100%正しいとは限りません。AIテクノロジーはまだそのレベルに達していないので、そうなるまでしばらく時間がかかると思います。

于 2009-10-26T05:24:58.890 に答える
1

exiftool のあまり知られていない機能により、JPEG 量子化テーブルの分析を通じて元のソフトウェアを認識できます (画像メタデータに依存しません)。多くのアプリケーションで作成されたテーブルを認識します。一部のカメラは一部のアプリケーションと同じ量子化テーブルを使用する場合があるため、これは 100% の解決策ではありませんが、検討する価値はあることに注意してください。以下は、2 つの画像に対して exiftool を実行した例です。最初の画像は Photoshop で編集されたものです。

> exiftool -jpegdigest a.jpg b.jpg
======== a.jpg
JPEG Digest                     : Adobe Photoshop, Quality 10
======== b.jpg
JPEG Digest                     : Canon EOS 30D/40D/50D/300D, Normal
    2 image files read

これは、メタデータが削除されていても機能します。

于 2009-10-28T14:05:51.150 に答える
1

元のフォーマットが何であったかをどうやって知ることができますか? 画像が変更されたかどうかを確認する保証された方法はないと確信しています。

ファイルを (お気に入りのプログラミング言語とファイルシステム API を使用して) 開くだけで、好きなようにそのファイルに好きなように書き込むことができます。私がファイル形式を台無しにしない限り、あなたはそれが起こったことを知ることはありません.

画像を印刷してからスキャンして戻すこともできます。オリジナルからどのようにそれを伝えますか?

于 2009-10-26T04:25:40.870 に答える
0

さまざまな手法(圧縮アーティファクト、カメラのデータベース内の署名プロファイルとの比較など)を使用して、実際の画像データを分析して変更の証拠を探す既存のソフトウェアがあります。そのようなソフトウェアにアクセスでき、利用可能なソフトウェアがこれらの分析機能への外部アクセス用のAPIを提供する場合、そのAPIとインターフェイスするPerlモジュールが存在する可能性が高く、そのようなモジュールが存在しない場合は、おそらくかなり迅速に作成されます。

理論的には、ネイティブPerlで直接画像解析コードを実装することも可能ですが、誰かがそうしていることを私は知りません。低レベルでプロセッサを集中的に使用するものを作成したほうがよいと思います。 Perlではなく、完全にコンパイルされた言語(C / C ++など)で。

于 2009-10-26T12:56:52.997 に答える
0

http://www.impulseadventure.com/photo/jpeg-snoop.html は、ほとんどうまく機能するツールです

クローンが作成された場合、ピクセル密度に変動があります..または時々現れる濃度..手動検査では、Photoshopのクローン領域はピクセル密度が均一になります(私の意味は、スキャンされた画像に対するピクセルの変動です)

于 2010-01-05T22:43:28.817 に答える