from sklearn.cluster import KMeans
from skimage import io, color
import numpy as np
import matplotlib.pyplot as plt


# Function to convert RGB to Lab color space
def rgb_to_lab(rgb):
    return color.rgb2lab(np.array([[rgb]]))[0][0]


# Load the image
image = io.imread("/home/cory/Extra/Pictures/cube.png")

# Reshape the image to a list of RGB values
pixels = image.reshape((-1, 4))
pixels = [pixel[0:3] for pixel in pixels]
# Convert RGB to Lab
lab_pixels = np.apply_along_axis(rgb_to_lab, 1, pixels)

# Choose the number of clusters (groups)
num_clusters = 6  # You can adjust this based on your needs

# Apply k-means clustering
kmeans = KMeans(n_clusters=num_clusters, random_state=42)
kmeans.fit(lab_pixels)

# Assign each pixel to its cluster
labels = kmeans.labels_

# Reshape labels back to the shape of the original image
labels = labels.reshape(image.shape[:2])

# Visualize the clustered image
plt.imshow(labels, cmap='viridis')
plt.colorbar()
plt.savefig('filename.svg')
plt.show()
