2017-11-16 21 views
1

現在、私はコンピュータビジョンプロジェクトに取り組んでおり、アルゴリズムのほとんどが動作しています。しかし私は現在、すべての画像に対して手動でバックグラウンド減算を行っています。これは、私が見つけ出すことができる最も一般的なバックグラウンド減算アルゴリズムが閾値処理を利用し、私のプロジェクトは抽出したいオブジェクトよりも明るく暗い背景を扱うべきだからです。バックグラウンドの明るさが不明な場合の背景差分

これは私が(Pythonとscikitスタックを使用して)現在のバックグラウンドを差し引いています方法です。もちろん

val = filters.threshold_otsu(image) 
return image > val 

、対象よりも暗い背景を持つこの唯一の作品。 私は、背景が明るいかどうかを調べ、その変化に応じて不平等の兆候を見いだしましたが、その方法を見つけることができませんでした。

明るい背景と暗い背景の両方を処理できる背景減算アルゴリズムがありますか、またはこの問題を解決する別の方法がありますか?

答えて

2

一般的に、あなたの問題を解決するための決まった方法はありません。フォアグラウンドとバックグラウンドは、状況に応じて異なる定義が可能です。

言われているように、あなたのデータセットでアルゴリズムを動作させるためにヒューリスティックな方法を使用することは不可能ではありません。フォアグラウンドとバックグラウンドの定義をよりよく理解するために、いくつかの画像を共有することができれば助かります。 THRESH_BINARYとTHRESH_BINARY_INVの両方で

  1. 実行Ostuのしきい値:ここ

    は役立つかもしれないヒューリスティックな方法のいくつかです。あなたの前景が常に中央に置かれていると仮定すると、中央領域の大部分が白である結果を選択します。

  2. フォアグラウンドが常にバックゴールよりも大きい場合、またはその逆の場合は、代わりにホワイト領域の面積を計算します。
+0

申し訳ありません、ありがとう! 2つ目の方法が私の場合には一般的に機能すると思います。私はあなたにお返しします。私のデータセットは、通常は単純な背景を持つ手の画像で構成されています。私はこれを試してみよう! – Dramentiaras

+0

私は2番目の方法を実装しました。現在のデータセットではうまくいきます!答えとしてマーク – Dramentiaras

-1

利用可能ないくつかの自動スレッシュホールド技術があります。その一つが大津です。

これは、OpenCVの( https://docs.opencv.org/trunk/d7/d4d/tutorial_py_thresholding.html)に実装されている

http://www.labbookpages.co.uk/software/imgProc/otsuThreshold.html

import cv2 
img = cv2.imread('noisy2.png',0) 
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) 
+0

ただし、otsuとcv2.THRESH_BINARYは、背景が前景より暗く、cv2.THRESH_BINARY_INVが逆であるとみなします。私は、背景が前景よりも暗くて明るいかどうかを知らずに、しきい値までの道を探しています。 – Dramentiaras