特定の入力画像から蝶をセグメント化するようにシステムをトレーニングするための一連の蝶の画像があります。この目的のために、エッジ、コーナー、領域境界、極大/極小強度などの特徴を抽出したいと考えています。
Harrisコーナー検出、SIFTなどの多くの特徴抽出方法を見つけましたが、画像の背景が蝶の本体/境界色と同じ色の場合、うまく機能しませんでした.
バタフライセグメンテーションに適した特徴抽出方法があるかどうか教えてください。OpenCV の Python 実装を使用しています。
特定の入力画像から蝶をセグメント化するようにシステムをトレーニングするための一連の蝶の画像があります。この目的のために、エッジ、コーナー、領域境界、極大/極小強度などの特徴を抽出したいと考えています。
Harrisコーナー検出、SIFTなどの多くの特徴抽出方法を見つけましたが、画像の背景が蝶の本体/境界色と同じ色の場合、うまく機能しませんでした.
バタフライセグメンテーションに適した特徴抽出方法があるかどうか教えてください。OpenCV の Python 実装を使用しています。
独自の画像処理ロジックを作成してもよろしいですか?
最善のオプションは、より一般的なユースケース向けのopencvのような以前の実装を使用する代わりに、問題のセグメンテーション/特徴抽出を最適化することです。
ノイズの多い/低コントラストの環境でうまく機能することがわかったオプションは、スライディングウィンドウ(つまり、10x10ピクセル)を使用して、グラデーションの向きのヒストグラムを作成することです。このヒストグラムから、より優勢なエッジの存在(ヒストグラムに蓄積される)とその方向(コーナーなどの検出を可能にする)を認識し、局所的な最大値/最小値を確認できます。(必要に応じて詳細をお知らせします)
全体としてのセグメンテーションとユーザーインタラクションに関心がある場合は、グラフカットまたはグラブカットをお勧めします。グラフカットでは、ユーザーはセグメンテーションを微調整できます。グラブカットはすでにopencvにありますが、ユーザーからの単一の入力を受け取り、画像を自動的にセグメント化するのと同じ問題が発生する可能性があります。
トレーニング データ (butterlys の画像) をdemo.nanonets.ai (無料で使用できます)にアップロードして、モデルの構築を試すことができます。
1) ここにトレーニング データをアップロードします。
2) 次に、次の (Python コード) を使用して API をクエリします。
import requests
import json
import urllib
model_name = "Enter-Your-Model-Name-Here"
url = "https://i.ytimg.com/vi/xT6UsQwZyy0/maxresdefault.jpg"
files = {'uploadfile': urllib.urlopen(url).read()}
url = "http://demo.nanonets.ai/classify/?appId="+model_name
r = requests.post(url, files=files)
print json.loads(r.content)
3) 応答は次のようになります。
{
"message": "Model trained",
"result": [
{
"label": "Black Swallowtail",
"probability": 0.97
},
{
"label": "Orange Sulphur",
"probability": 0.025
},
{
"label": "Monarch",
"probability": 0.005
}
]
}