Как определить процент облаков после применения SLIC, как показано ниже? - PullRequest
4 голосов
/ 14 мая 2019

Мне нужно рассчитать процент облачного покрова.Как рассчитать его после сегментации изображения с помощью SLIC?Кто-нибудь может помочь?

segments_slic = slic(img, n_segments=250, compactness=10, sigma=1)
print("Slic number of segments: %d" % len(np.unique(segments_slic)))

enter image description here

1 Ответ

2 голосов
/ 19 мая 2019

Ну, я думаю, вам не нужно применять SLIC для этого. Базовое пороговое значение можно использовать для определения процента облачного покрова на изображении в градациях серого, поскольку облака белые и будут иметь более высокие значения пикселей.

test image

Я использовал это изображение в качестве тестового изображения.

img = cv2.imread('cloud.png', 0)
ret, thresh = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)
cv2.imshow('image', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

Это дает

thresholded image

Так что нам нужно добавить все эти значения там, где есть белый пиксель, чтобы найти общее количество белых пикселей. Вместо пороговых значений пикселей на 255 мы изменяем его на 1, чтобы мы могли просто добавить их. Вы можете прочитать больше о thresholding здесь. Затем мы вычисляем ее сумму, делим ее на ширину и высоту и умножаем на 100, чтобы получить процент.

img = cv2.imread('cloud.png', 0)
height = img.shape[0]
width = img.shape[1]
ret, thresh = cv2.threshold(img, 100, 1, cv2.THRESH_BINARY) 
total = sum(map(sum, thresh)) # to find total sum of 2D array thresh
percent = total/height/width*100
print('percentage of cloud cover is =', percent, '%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...