私の仕事では、印刷マーケティング用の画像を複数のソースから扱うことが多く、最初は低解像度の画像が送られてくるのですが、高解像度の画像を要求したときに、意図的に拡大された画像が送られてきたり、知らないうちに JPEG から変換されただけの TIFF が渡されたりして、同じように疑われることがあります。
知っているオーディオファイルでもできます偽のロスレス FLAC ファイルを検出します。
では、検出するためのソフトウェアやツールはありますか?
- 解像度のアップスケーリング(中解像度から高解像度など、より微妙な場合でも)。
- JPEG などの非可逆形式から TIFF または PNG への変換。
あるいは、人間が確認する方法についてアドバイスやヒントはありますか? 私が使用しているツールの中には、もちろん Photoshop があります。
答え1
2番目の質問にお答えします。
JPEG などの非可逆形式から TIFF や PNG への変換を検出する方法
画像がJPEG圧縮されているかどうかを視覚的に確認する方法は、ズームイン画像上で、8x8 ピクセル ブロック間の不連続の兆候を探します。JPEG 圧縮率が高い (品質が低い) 場合、特に顕著になります。
低品質/高圧縮JPEGをPNGとして保存- 8x8ピクセルのブロックがはっきりと見える
しかし、JPEG 圧縮が低い (高品質) 場合は、これらのブロックが見えにくい場合があります...
高品質/低圧縮JPEGをPNGとして保存- 8x8ピクセルのブロックは識別が難しい
では、この高画質画像がどこかの時点でJPEG圧縮されているかどうかはどうやってわかるのでしょうか?JPEG圧縮では意図的に強度情報よりも色情報を多く削除しており、PhotoshopのLabカラーモードさらに調査する。
画像を Lab カラー モードに変換します ([画像] -> [モード] -> [Lab カラー])。これにより、画像が赤、緑、青のチャンネルから L、a、b のチャンネルに変換されます。
Lチャンネルは明度チャンネルで、基本的には元の画像のグレースケール版です。aチャンネルとbチャンネルはカラーチャンネルですが、従来の意味とは異なります。この回答には詳細な説明は必要ありませんが、詳細についてはウィキペディア。
a または b チャネルを検査し、8x8 ピクセルのブロック化を探します。
前の画像の「a」チャンネル- 8x8ピクセルのブロックノイズが見える、JPEG圧縮を示す
a チャネルまたは b チャネルのいずれかに 8x8 ピクセルのブロック歪みが見られる場合、それは画像が過去のある時点で JPEG 圧縮されたことを示す非常に良い兆候です。
答え2
遅れて参加しましたが、私の意見を少し述べさせていただきます。
PHP をインストールできます。Windows、Linux、OSX などで利用できます。次に、次のようなテキスト ファイルを作成します。
<?php
$url = 'http://server.com/image.png';
$data = json_decode(file_get_contents('http://api.rest7.com/v1/image_upscaled.php?url=' . $url));
if (@$data->success !== 1)
{
die('Function failed');
}
if ($data->current_width !== $data->original_width)
{
echo 'Upscaled photo';
}
else
{
echo 'Not upscaled';
}
写真が拡大されたかどうかがわかります。100% 正確ではありませんが、自動化されており、かなり高速です。