[OpenCV] 얼룩 감지
Blob이란
몇 가지 공통 속성(회색조 값)을 공유하는 이미지의 연결된 픽셀 그룹이다. 위 이미지에서 어둡게 연결된 영역은 얼룩이며 얼룩 감지의 목표는 이러한 영역을 식별하고 표시하는 것이다.
얼룩 감지 동작 순서
SimpleBlobDetector는 이름에서 알 수 있듯이 아래에 설명된 다소 간단한 알고리즘을 기반으로 한다. 알고리즘은 매개변수에 의해 제어되며 다음 단계가 있다.
-
Thresholding : minThreshold에서 시작하는 임계값으로 소스 이미지를 임계값 처리하여 소스 이미지를 여러 이진 이미지로 변환한다. 이러한 임계값은 thresholdStep에 의해 maxThreshold까지 증가합니다. 첫 번째 임계값은 minThreshold, 두 번째 임계값은 minThreshold + thresholdStep, 세 번째 임계값은 minThreshold + 2 x 임계값이 된다.
-
Grouping : 각각의 이진 이미지에서 연결된 흰색 픽셀이 함께 그룹화된다. 이를 이진 blob이라고 한다.
-
Merging : 이진 이미지에서 이진 블럽의 중심이 계산되고 minDistBetweenBlobs보다 가까운 위치에 있는 블럽이 병합된다.
-
Center & Radius Calculation : 새로 병합된 블럽의 중심과 반지름이 계산되어 반환된다.
색상, 크기 및 모양별로 얼룩 필터링
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
및 maxInertiaRatio ≤ 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)
Author And Source
이 문제에 관하여([OpenCV] 얼룩 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rlath/OpenCV-얼룩-감지저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)