Какой тип фильтра подходит для обнаружения трещин на почве в OpenCV? - PullRequest
0 голосов
/ 27 июня 2019

Моя задача - подсчитать общую площадь трещин на поверхности почвы. Вот несколько примеров возможных входных изображений:

img1

img2

img3

img4

Я мог легко обнаружить поверхность почвы:

Only Soil

Однако мне сложно точно определять трещины. После долгих исследований я решил использовать двусторонний фильтр в сочетании с Canny Edges, чтобы обнаружить трещины. вот мой код:

  blur = cv2.bilateralFilter(gray, 5, 60, 40)
  canny_cracks = cv2.Canny(blur, 100, 200)

  # Morphological Transformation for closing edges 
  kernel = np.ones((val, val))
  res = cv2.morphologyEx(canny_cracks, cv2.MORPH_CLOSE, kernel)

  cv2.imshow('Result', res)

Output

Однако, это не так точно, как я ожидаю. Мой вопрос заключается в том, какой тип фильтра и пороговой установки будет лучшим выбором для более точного обнаружения трещин? Я пытался использовать cv2.findContours вместо cv2.Canny, это приносит много шума. Я прошу прощения за такой конкретный вопрос, я новичок в OpenCV.

...