Как я могу посчитать количество легких небольших кластеров на карте объектов - PullRequest
0 голосов
/ 01 марта 2019

Предположим, у меня есть тепловая карта, подобная этой:

enter image description here

Значение пикселей на тепловой карте находится в диапазоне 0-1.Чем ближе значение к 0, тем темнее пиксель.На нем шесть кластеров записи, как показано на рисунке.Могу ли я узнать, сколько световых скоплений в тепловой карте?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Источник => Обнаружение

enter image description here enter image description here


Мой метод: Серый => Порог =>FindContours (при необходимости фильтруйте по области)

#!/usr/bin/python3
# 2019/03/01
import cv2

img = cv2.imread("featmap.png")

# Gray => Threshold => FindContours (filter by area if necessary)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blured = cv2.medianBlur(gray, 3)
th, threshed = cv2.threshold(blured, 100, 255, cv2.THRESH_OTSU|cv2.THRESH_BINARY)
cnts = cv2.findContours(threshed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[-2]

print("nums: {}".format(len(cnts)))

# draw on the original
cv2.drawContours(img, cnts, -1, (0, 255, 0), 1, cv2.LINE_AA)
cv2.imwrite("dst.png", img)

Будьте осторожны при использовании findContours: Как использовать `cv2.findContours` в различных версиях OpenCV?

0 голосов
/ 01 марта 2019

Вы можете применить cvThreshold для создания черно-белого изображения.

Затем отфильтровать мелкие дефекты с помощью открытия морфологической операции

Теперь найдите подключенных компонентов и получить их количество.

...