удаление шумов с изображения дорожного покрытия в opencv python

Идея в том что с с помощью treshold находятся контуры ямы или трещины, изображение обрезается под конкретный контур и закидывается в НС. Нужно убрать лишние шумы отражающиеся в thesholde, как это сделать?

gray = cv2.cvtColor(masked, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
ret, threshold = cv2.threshold(blurred, 98[![введите сюда описание изображения][1]][1], 255, 1)
contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Alex Alex

Попробуйте так выделить объекты по площади, диапазон площадей надо подобрать:

output = cv2.connectedComponentsWithStats(threshold, 8, cv2.CV_32S)
area=output[2][:,4]
cond=(1000>area)&(area>250) # выделяем объекты с площадью от 250 до 1000 
idx=np.nonzero(cond)
mask = np.isin(output[1], idx)
cv2.imwrite('test.png', 255*np.uint8(~mask))

Это должно работать побыстрее контуров.

→ Ссылка