2

同じシーンの画像間で特定の色を一貫して検出しようとしています。アイデアは、カラー プロファイルに基づいて一連のオブジェクトを認識することです。したがって、たとえば、緑色のボールが含まれるシーンが与えられ、その緑色をカラー パレットの一部として選択した場合、ボールを検出したことを反映するマトリックスを持つ関数が必要になります。

このプロジェクトのいくつかの matlab 関数/プラグイン/出発点を推奨できる人はいますか? 理想的には、色認識の関数は色値の配列を取り、特定のしきい値内でそれらを一致させます。

このようなちょっと: http://www.mathworks.com/matlabcentral/fileexchange/18440-color-detection-using-hsv-color-space-training-and-testing

それが機能することを除いて(これは機能しませんでした)

アップデート:

上記のツールキットを使用しないことにした理由は次のとおりです。

まず、写真の中から興味のある色をいくつか選択します

すべてが順調に進んでいます..

そして、後の画像で道路を認識するように関数に依頼します...

ええとああ

そして、まったく有用なものはトリガーされません。ええ、ダウンロード時にコードで見つけて修正したいくつかのバグは別として、これは一種のキッカーでした. 色を認識するコードの本体を修正しようとはしませんでした。なぜなら、方法がわからないからです。それが、ここに来た理由です。

4

1 に答える 1

3

それで、カラープロファイルを使用した道路検出は病理学的問題であると言うことから始めましょう。ただし、道路の色が一貫していて、照明によって認識しようとしているオブジェクトの色が変わらない場合は、ショットがある可能性があります。(これが屋外で撮影された場合、別のカメラで撮影された場合、影が発生した場合、または実際の環境で発生した場合、これは非常に困難になります)

ここに役立つかもしれないいくつかのことがあります。

事前に画像をスムージングしてみてください。最初の画像で悪い結果が得られる理由は、おそらく道路の小さなピクセル変動が原因です。それらをぼかすことができる場合、またはある種の流域またはローカル平均化を使用できる場合は、より一貫した色の領域が得られる可能性があります。

HSVやRGBの代わりにLAB色空間を使用することも検討してください。

エッジ検出(matlabのキャニーエッジ検出器を参照)を使用すると、境界情報を取得できる場合があります。滑らかなオブジェクトを探している場合、その中にはあまり多くのエッジはありません。

編集:私は最も単純な方法でこのアドバイスに固執しようとしました。結果のコードといくつかのサンプルを次に示します。

im=rgb2gray(im) %for most basic color capturing.. using another color space is better practice
%imshow(im)
RoadMask=roipoly(im)%create mask 
RoadMask=uint8(RoadMask);%cast to so you can elementwise multiply
im=im.*RoadMask;%apply mask
[x y]=size(im);
for i=1:x
    for j=1:y
        %disp('here')
        if (im(i,j)<160 || im(i,j)>180) %select your values based on your targets range
            im(i,j)=0;                  %replace everything outside of range with 0
            %disp(im(x,y))              %if you'd like to count pixels, turn all values
        end                             %within range to 1 and do a sum at end
    end
end

最初にRGBからグレースケールに変換され ここに画像の説明を入力してください 、道路の灰色度にほぼ一致する領域が選択されました。 ここに画像の説明を入力してください 道路の一部がキャプチャされておらず、ブロック状のエッジがあることに注意してください。このような-------------^

この実装は迅速で汚いものでしたが、忘れる前にそれを我慢したかったのです。スムージング、サンプリング、およびLAB色空間を実装するコードで更新してみます。

于 2012-10-07T23:22:20.960 に答える