私は、画像の一部に赤い白の縞模様のオブジェクト(liftramp)が含まれているかどうかを調べようとしています。それが存在する場合、それは次のようになります。、とするとき、これを好きではない:単純なアプローチは、ヒストグラムを抽出し、青/緑色のものよりも多くの赤色画素がある場合にカウントするようにしたヒストグラムを使用して色付きオブジェクトの存在を判断する
:
use Image::Magick;
my $image = Image::Magick->new;
my $rv = $image->Read($picture);
#$rv = $image->Crop(geometry=>'26x100+484+40');
my @hist_data = $image->Histogram;
my @hist_entries;
# Histogram returns data as a single list, but the list is actually groups of 5 elements. Turn it into a list of useful hashes.
while (@hist_data) {
my ($r, $g, $b, $a, $count) = splice @hist_data, 0, 5;
push @hist_entries, { r => $r, g => $g, b => $b, alpha => $a, count => $count };
}
my $total=0;
foreach my $v (@hist_entries) {
if ($$v{r}>($$v{g}+$$v{b})) { $total +=$$v{count}; }
}
を比較し、次に$total > 10
(任意のしきい値)かどうかを比較します。これは、比較的晴れた日にはうまくいくようですが(存在しない場合、0-2の場合は50-180)、重い雲と夕暮れが検出されると常にliftrampは存在しません。
赤い白いオブジェクトが存在するかどうかを検出するには、よりスマートな方法が必要ですね。だから問題は、より確実にその検出を行う方法ですか?
灰色がかった緑色の背景は、季節によって灰色や茶色などに変わることがあります。私はまた、ピクセルの精度にはそれが少し動くかもしれません(または私はちょうど3-4ピクセルをトリミングし、それらが赤であるかどうかを見てみることができません) - しかしそれは彼が箱を切り取った。
私はこのことについてあまりよく分かりませんが、あなたが提供したサンプル画像に基づいて、白黒(グレースケールではありません)に画像を縮小するのが最も明白な方法です。また、https://dsp.stackexchange.comを試してみることもできます –
リフトランプにマイクロスイッチを設置してネットワークに接続してください – Borodin
* "重い雲と夕暮れが検出され、常にリフトランプが存在しないと言います" *確かにアプローチはありません写真を調べることは、夜間に働くだろうか?私はあなたのアルゴリズムが失敗している最悪の場合の画像を見る必要があると思います。 – Borodin