Моя задача - подсчитать общую площадь трещин на поверхности почвы. Вот несколько примеров возможных входных изображений:
img1
img2
img3
img4
Я мог легко обнаружить поверхность почвы:
Однако мне сложно точно определять трещины. После долгих исследований я решил использовать двусторонний фильтр в сочетании с 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)
Однако, это не так точно, как я ожидаю. Мой вопрос заключается в том, какой тип фильтра и пороговой установки будет лучшим выбором для более точного обнаружения трещин? Я пытался использовать cv2.findContours
вместо cv2.Canny
, это приносит много шума. Я прошу прощения за такой конкретный вопрос, я новичок в OpenCV.