次のシナリオの解決策があるかどうかを知りたいです。
ファイルをスキャンしてトランスコードした後、ファイルをサーバーにアップロードするアプリケーションがあります。いくつかの追加コンテンツで改ざんされた画像ファイルがアップロードされているとします。さて、アップロードされたファイルは違法なので、追加の改ざんされたコンテンツを削除し、この画像ファイルの元の部分だけをアップロードしたいと思います。Javaでそれを行うことは可能ですか?
ありがとう。
一般的なケースで検出することはできませんが、画像が編集されたかどうかを判断するために使用できるヒューリスティックな方法がいくつかあります。http://imageedited.com/にあるツールを使用して、何が可能かを理解してください。
編集を削除することは、はるかに難しい問題であり、現在の方法ではおそらく不可能です。
ここでは推測しているだけで、実際にどれだけうまく機能するかはわかりませんが、改ざんの特定のソースに限定すれば可能です。たとえば、memegenerator.net によって画像に追加されたロゴを削除したいとします。
テキストがどのように表示され、どこにあるかが事前にわかります。テキストに一致する透明な png テンプレートを作成します。次に、画像とテンプレート ピクセルの色の差を合計し、それぞれにテンプレート ピクセルのアルファを掛けます。この特定のロゴの場合、基本的には白なので (薄い黒い影があるように見えますが)、そこに白い部分がある画像では誤検出が発生するため、周囲のピクセルが (範囲内にあることも確認する必要があります)公差)白ではありません。巧妙ではありませんが、特定のサイトでは機能する可能性があります。
より柔軟なもの (たとえば、後でサイズ変更された画像上のロゴ) については、OCR と TinEye のような画像マッチングの領域に入ります。これらは、私がアドバイスできるよりも高度です。
あらゆる種類の「改ざん」を正しく検出し、一般に「正当」から「非合法」を除外するには、見ているものの意味と文脈を理解できる人工知能が必要です。簡単に言えば、できません。それが人間の目的です。
これが Web サイトの場合、おそらく最善の方法は、サイトのユーザーがサイトのルールに合わない画像を報告できるようにするレポート ボタンです。