私は画像の「十分な」変化を検出する最も簡単な方法を見つけようとしています。私はこれがひどい制限であることを知っているので、この問題を解決するためにこれを2つの異なる修飾子に分割しました。つまり、実質的な変更(ピクセルの80%が変更)とモーションの変更(ピクセルの10%が変更)です。この画像はtimelapse
ラズベリーパイカメラのモードで撮影されたが、質問の目的に応じてこれらのファイルはデフォルトで静的ビューからインポートできます。。
私はファイルサイズを使用して多くの変更を観察できることを発見しました。
user@host-bb:/tmp$ ls -la investigating/
total 134604
drwxr-xr-x 2 user group 4096 Oct 20 00:05 .
drwxr-xr-x 5 user group 4096 Oct 20 00:04 ..
-rw-r--r-- 1 user group 4580181 Oct 20 00:05 image1018223300.jpg
-rw-r--r-- 1 user group 4573449 Oct 20 00:05 image1018223301.jpg
-rw-r--r-- 1 user group 4573024 Oct 20 00:05 image1018223304.jpg
...snip...
-rw-r--r-- 1 user group 4455867 Oct 20 00:05 image1018223320.jpg
-rw-r--r-- 1 user group 4447607 Oct 20 00:05 image1018223321.jpg
-rw-r--r-- 1 user group 4434839 Oct 20 00:05 image1018223323.jpg
-rw-r--r-- 1 user group 4416942 Oct 20 00:05 image1018223324.jpg
-rw-r--r-- 1 user group 1769008 Oct 20 00:05 image1018223325.jpg
-rw-r--r-- 1 user group 1702851 Oct 20 00:05 image1018223326.jpg
-rw-r--r-- 1 user group 1639306 Oct 20 00:05 image1018223327.jpg
-rw-r--r-- 1 user group 1788435 Oct 20 00:05 image1018223328.jpg
-rw-r--r-- 1 user group 1908061 Oct 20 00:05 image1018223329.jpg
-rw-r--r-- 1 user group 1981029 Oct 20 00:05 image1018223330.jpg
-rw-r--r-- 1 user group 2102390 Oct 20 00:05 image1018223331.jpg
-rw-r--r-- 1 user group 2167734 Oct 20 00:05 image1018223333.jpg
-rw-r--r-- 1 user group 2243082 Oct 20 00:05 image1018223334.jpg
...snip...
-rw-r--r-- 1 user group 2640732 Oct 20 00:05 image1018223342.jpg
-rw-r--r-- 1 user group 2730206 Oct 20 00:05 image1018223343.jpg
-rw-r--r-- 1 user group 2751966 Oct 20 00:05 image1018223344.jpg
-rw-r--r-- 1 user group 315875 Oct 20 00:05 image1018223345.jpg
-rw-r--r-- 1 user group 302476 Oct 20 00:05 image1018223352.jpg
...snip...
-rw-r--r-- 1 user group 285965 Oct 20 00:05 image1018223358.jpg
-rw-r--r-- 1 user group 289271 Oct 20 00:05 image1018223359.jpg
user@host-bb:/tmp$
照明の重要ではない変化(たとえば、*28.jpg
画像と画像の間に発生する変化*29.jpg
)もファイルサイズに違いを引き起こす可能性があります。
私はこれが基本的にビニングであることを知っており、これが私が探している解決策かもしれません。
これは「かなりの変更」(ピクセルの80%が変更されました)を処理します。
しかし、問題はまだ残っています。 Imagemagick、Pythonスクリプト、または他の画像処理ソフトウェアが不足している場合、画像の10%ピクセル変化に近づく変更を検出する簡単な方法はありますか?画像処理ソフトウェア以外のオプションがない場合、最も軽いオプションは何ですか?低レベルの言語で独自の処理を作成しますか? Pythonスクリプト?私はPythonの背景から来ており、変更があればイベント(ファイルのアップロード)をトリガーできるように、ラズベリーパイゼロで簡単な変更検出を実行したいと思います。すべての画像を送信するには帯域幅が小さすぎるため、Pyzero wは処理能力の点では重要な要素ではありません。
答え1
1)非常に基本的ですが、非常に軽いです。 cmpを使用してファイルをバイト単位で比較します(「binary diff」)。固有バイト数を提供します。ちょうどゼロを試してみましたが、うまくいきます。
cmp -l 1.jpg 2.jpg 2>/dev/null | wc -l
ただし、画像ではなくファイルに関連する問題なのに...
したがって、コンピュータがPythonにアクセスできる場合(申し訳ありませんが、rpi 0に同じディストリビューションがないためテストできません...):
2)SSIM-PIL Pythonパッケージ、構造的類似性に基づいています。 (https://pypi.org/project/SSIM-PIL/)。イメージ指向のため、ソリューション1よりも「エラーの違い」が少なくてはなりません。つまり、結果は人間の目で見るものと似ているということです。https://fr.wikipedia.org/wiki/Structural_Similarity