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()