[OpenCV]スポット検出
Blobは
複数の共通属性(階調値)の画像を共有する接続画素群.上の画像では、暗接続された領域は斑点であり、斑点感知の目標はこれらの領域を識別し表示することである.
スポット検出動作手順
SimpleBlobDetectorは、以下に説明するいくつかの簡単なアルゴリズムに基づいて、名前に示すようにします.アルゴリズムはパラメータによって制御され、次のステップがあります.
Thresholding:minThresholdからの閾値を用いてソース画像を閾値処理し、ソース画像を複数のバイナリ画像に変換する.これらの閾値は閾値StepからmaxThresholdに増加する.1番目のしきい値はminThreshold、2番目のしきい値はminThreshold+しきい値Step、3番目のしきい値はminThreshold+2 xしきい値です.
組み合わせ:各バイナリ画像に接続されている白いピクセルを組み合わせます.これは李真布洛と申します.
Merging:バイナリ画像では、バイナリブールの中心を計算し、minDistBetweenBlobsよりも位置に近いブールを合成します.
中心と半径の計算:新しく結合した混合液の中心と半径を計算して戻します.
斑点をカラー、サイズ、シェイプでフィルタ
SimpleBlobDetectorのパラメータを設定することで、必要なBlobタイプをフィルタできます.
じゅんかんせい
斑点が円にどれだけ近いかを測定する.たとえば、正の六角形は正の六角形の円形よりも高いです.プロトタイプフィルタリングを行うには、filterByCircularity=1をに設定します.次にminCircularityとmaxCircularityに適切な値を設定します.プロトタイプ図の定義は次のとおりです.
すなわち、円の円度は1、正方形の円度は0.785である.
とつせい
凸性は(円球の面積/凸殻の面積)として定義されます.現在、形状の突起のハウジングは、形状を完全に包む最も密な突起の形式である.凸で濾過するには、
FilterByVolxity = 1
を設定し、0 ≤ minVolxity ≤ 1
およびmaxVolxity ≤ 1
を設定します.かんせいひ
形の長さを測ることです.たとえば、円の場合は1、楕円の場合は0~1、直線の場合は0です.慣性比で濾過するには、
filterByInertia = 1
および0 ≤ minInertiaRatio ≤ 1
に設定します.パラメータの設定
params = cv2.SimpleBlobDetector_Params()
# Change thresholds
params.minThreshold = 10;
params.maxThreshold = 200;
# Filter by Area.
params.filterByArea = True
params.minArea = 1500
# Filter by Circularity
params.filterByCircularity = True
params.minCircularity = 0.1
# Filter by Convexity
params.filterByConvexity = True
params.minConvexity = 0.87
# Filter by Inertia
params.filterByInertia = True
params.minInertiaRatio = 0.01
# Create a detector with the parameters
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3 :
detector = cv2.SimpleBlobDetector(params)
else :
detector = cv2.SimpleBlobDetector_create(params)
Reference
この問題について([OpenCV]スポット検出), 我々は、より多くの情報をここで見つけました https://velog.io/@rlath/OpenCV-얼룩-감지テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol