неділя, 11 квітня 2021 р.

Сегментація методом $k$-середніх

Mathedemo
 
def Kmean(img,k):# k кількість кластерів
# Перетворюємо зображення в одномірний масив 
# потрібного типу даних 
    pixel_vals = img.reshape((-1,3))
    pixel_vals = np.float32(pixel_vals) 
#встановлюємо критерії виходу з  обчислень
    criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.85)
#виконуємо кластеризацію
    retval, labels, centers = cv2.kmeans(pixel_vals, k, None, criteria,\
    10, cv2.KMEANS_RANDOM_CENTERS)
# Перетворюємо дані у  8-бітні значення
    centers = np.uint8(centers)
    segmented_data = centers[labels.flatten()]
# Повертаємося до початкових розмірів
    segmented_image = segmented_data.reshape((img.shape))
    return  segmented_image
 

Немає коментарів:

Дописати коментар