0

アップロードした写真の背景が無地かどうかを検出できるものに取り組んでいます。imagecolorat()ある場所でランダムなサンプルポイントを使用して使用しています。アップロードされた写真は、標準のクローズアップショルダーレベルの写真です。画像の特定の場所(人の耳の近くの背景のどこか)のピクセルの色をチェックしています。

の結果imagecolorat()で、ポイントのRGBカラーを取得することができました。それから私はそれらをHSVに変換しました。

色が似ているかどうかをどのように判断できますか?写真は必ずしもサンプルピクセルの正確な色を持っているとは限らないので、同じような色を許可するためにある程度の許容レベルを設定する必要があります。たとえば、#3A34B9HSV#524EB4値が異なる青であるが、互いに近いため、問題ないはずです。

HSV値をチェックインする必要がありますか?灰色のオブジェクトは非常に明確な色相を持っている場合がありますが、それでも両方とも灰色であり、テストに合格する必要があります。

問題のあるコードではないため、現在コードを投稿していません。背景が無地かどうかを正しく判断する方法に関するアルゴリズムにあります。

これは実際には顔検出ではありません。PHPでそれが可能かどうか疑問に思いますが、アップロードされた写真からサンプルポイントを改善する方法を知っていると役立ちます。現在、私は写真を領域に分割し、特定の領域(1/6と5/6のx軸、および1/3のy軸)からポイントを取得するだけです。

4

1 に答える 1

0

HSV に変換する代わりに、RGB 値を比較してみませんか? imagecolorat() の結果をビットシフトしてマスクすることにより、個別の「R」、「G」、および「B」値を取得できます。これらの値を取得したら、テスト カラーの RGB 値と比較するのは簡単です。また、すべての RGB の範囲が 0 ~ 255 であるため、何らかの許容範囲を組み込むのも簡単ではありません。R、G、B の値がテスト カラーとどの程度異なるかを簡単に定義できます。

PHPマニュアルから imagecolorat()

<?php
$im = imagecreatefrompng("php.png");
$rgb = imagecolorat($im, 10, 15);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

var_dump($r, $g, $b);
?>
于 2012-11-28T16:24:59.447 に答える