2016-12-19 11 views
2

コンピュータ視覚技術を使用して、非常にノイズの多い画像のストリーム内の小さなブロブを検出(および追跡)するプログラムを作成しようとしています。画像ストリームは、左右のビュー(異なって視準するために異なるサイズ)を出力するデュアルX線イメージングセットアップから来ます。私のデータは2つのタイプのものがあります:1つの画像のセットはそれほど騒々しいものではありません。異なるテクニックを試してみるのですが、もう1つはノイズの多いセットです。画像ストリームは60Hzである。これは、X線撮像装置からの生画像の例である:ノイズの多い画像の小さなブロブを検出する手法

enter image description here

ここにいくつかは、関心領域のサンプルをトリミングしています。検出される必要のあるブロブは、画像の中心付近の小さな黒い点です。

Sample image 1enter image description hereenter image description here

当初、私は非常に有用ではなかったOpenCVの、でシンプルな輪郭/ブロブ検出技術で始まりました。最終的に私は、形態学的演算子を使用して画像を「開く」、続いて関心領域を検出するためにラプラシアン・ガウス・ブロブ検出を行うなどの技術に移った。これは、画像の低ノイズバージョンでは良い結果をもたらしましたが、ノイズの多い画像では失敗します。ここでは、低ノイズ画像の結果があります(入力画像が反転していることに注意してください)。

enter image description here

MATLABでの私の現在のログベースのアプローチのためのコードは以下のようになります:

while ~isDone(videoReader) 
    frame = step(videoReader); 
    roi_frame = imcrop(frame, [660 410 120 110]); 

    I_roi = rgb2gray(roi_frame); 
    I_roi = imcomplement(I_roi); 
    I_roi = wiener2(I_roi, [5 5]); 
    background = imopen(I_roi,strel('disk',3)); 

    I2 = imadjust(I_roi - background); 
    K = imgaussfilt(I2, 5); 
    level = graythresh(K); 
    bw = im2bw(I2); 

    sigma = 3;  
    % Filter image with LoG 
    I = double(bw); 
    h = fspecial('log',sigma*30,sigma); 
    Ifilt = -imfilter(I,h); 

    % Threshold for points of interest 
    Ifilt(Ifilt < 0.001) = 0; 
    % Dilate to obtain local maxima 
    Idil = imdilate(Ifilt,strel('disk',50)); 

    % This is the final image 
    P = (Ifilt == Idil) .* Ifilt; 

は、私はそれが多いイメージに対して動作させるために私の現在の検出技術を向上させることができます任意の方法はあります背景ノイズの?または、このような画像に適したテクニックがありますか?

+1

はカメラであり、固定された場面であり、ブロブだけが動いていますか? – Micka

+0

ブロブの移動速度とフレームレートはどのくらいですか? –

+2

あなたの画像はすべて異なるサイズの理由は何ですか?あなたの画像はストリームの一部なので、私はそれを利用してノイズを減らす必要があると思います。フレームレートに応じて、フレームの最後の数秒の移動平均を基準として、最後の2〜4フレームの平均をとってから、ノイズを除去するように差分をとることを検討します。あなたの設定についてもっと知らないと言うのは難しいです。これは便利かもしれません... http://stackoverflow.com/a/27893051/2836621 –

答えて

1

アプローチ私が取る:

私はあなたがあなたのオブジェクトの半分の最小断面についてシグマをしたいと思う私の頭の上オフ - 平均バックグラウンドを差し引い

-Aggressiveガウシアンスムージング(this filter should be shaped based on your target object、 )基本的に目標は、対象物を完全に失うことなく(形状とサイズに基づいて)できるだけノイズをぼかすことです(形状とサイズに基づいて)

- エッジ検出。可能であれば、オブジェクトに固有のものを試してください(基本的に、ガウス平滑化後のオブジェクトのエッジの様子を見て、その幅とコントラストのずれを探すためにエッジ検出を設定してください)。

-ここで終了操作を検討してください。

- サイズと形状に基づいてアイランド(完全に囲まれた領域)フィルタを全体画像で検索します。

信号対雑音比が非常に低いにもかかわらず、ノイズの粒度がオブジェクトのサイズよりもはるかに小さいことに驚いています。 (あなたの騒音があなたのオブジェクトと同等のコントラストと球場サイズの両方であれば...あなたは沈んでいて、取得を再評価する必要があります)。

最後の既知の位置を知り、ローカルで検索し、新しいターゲットがどこからイメージに入ることができるかを知ることによって、処理量を大幅に削減できます。

関連する問題