{"id":26336114,"url":"https://github.com/raphaelmos/kmeansonimage","last_synced_at":"2025-09-09T18:09:35.167Z","repository":{"id":222752185,"uuid":"758283632","full_name":"Raphaelmos/Kmeansonimage","owner":"Raphaelmos","description":"K-Means Kmeans Algorithm used on .ppm images with different libraries like OpenGL","archived":false,"fork":false,"pushed_at":"2024-02-23T13:35:40.000Z","size":38476,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-10T13:30:35.109Z","etag":null,"topics":["algorithms-implemented","c","kmeans","kmeans-algorithm","kmeans-clustering"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Raphaelmos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-16T01:29:33.000Z","updated_at":"2025-02-13T14:47:49.000Z","dependencies_parsed_at":"2024-02-23T14:49:10.416Z","dependency_job_id":null,"html_url":"https://github.com/Raphaelmos/Kmeansonimage","commit_stats":null,"previous_names":["raphaelmos/kmeansonimage"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Raphaelmos/Kmeansonimage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raphaelmos%2FKmeansonimage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raphaelmos%2FKmeansonimage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raphaelmos%2FKmeansonimage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raphaelmos%2FKmeansonimage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Raphaelmos","download_url":"https://codeload.github.com/Raphaelmos/Kmeansonimage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raphaelmos%2FKmeansonimage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274340300,"owners_count":25267293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms-implemented","c","kmeans","kmeans-algorithm","kmeans-clustering"],"created_at":"2025-03-16T01:16:42.233Z","updated_at":"2025-09-09T18:09:35.136Z","avatar_url":"https://github.com/Raphaelmos.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# K-means Image Clustering\n\n\n\n# About this project\n\nThis project has been developed on my own, incrementally through several process with the aim of debugging and improving the source code step by step. The\ntest images used are in PPM format.\nDigital images take up a considerable amount of data storage space. Compressing them reduces this memory footprint. \n\n\nThe aim of this project was to implement\nthe main steps involved in compressing and decompressing a still image:\n  1. Color quantization using the k-means algorithm\n  2. Creation of a color indexing table (CLUT)\n  3. Image compression and decompression using RLE coding\n  4. Decompression and display\n\nIn addition, the project sheet stipulated:\n  1. Possible application of a dithering algorithm\n  2. Performance validation in terms of quality and compression ratios\n  3. Implementation of functionalities in the form of an interactive menu\n\n\n# How to use ?\n\nClone the repository\n```\nhttps://github.com/Raphaelmos/Kmeansonimage.git\n```\n# Usage\n\n1. Compile the code using make\n2. Run the executable with a source image file and desired number of clusters as arguments\n3. The image will now appear on your screen, left-click and a menu will appear with many differnet possibilities, to use k-means on the image, select it and in your bash a loading will appear and when at 100%.. Wait a few seconds\n\nNow you see the result of it !\n\n## Important to notice\n\nTo be fully transparent there's a total of 53 different versions of this project, \n\u003cbr/\u003e V35 is stable, have the functional 3 algorithms but the colors result have a chance to produce unexpected result\n\u003cbr/\u003e V51 is less stable, but have meaningful changes like a histogram that fix the unexpected possible results \n\n## Possible improvements\n\nAdd more and more algorithms, currently have K-means, RLE, Dithering.\n\u003cbr/\u003eHave more formats of images working and not only .ppm\n\n## French \n\nCe projet a été développé de manière seule et incrémentale au fil de plusieurs itérations\net de nombreux essais, dans le but de déboguer et améliorer pas à pas le code source. Les\nimages tests utilisées sont au format PPM.\nL’image numérique occupe une place considérable dans le stockage de données. Cette  com\u0002pression permet de réduire cette empreinte mémoire. L’objectif de ce projet était d’implémenter\nles principales étapes de la compression et décompression d’une image fixes :\n1. Quantification des couleurs via l’algorithme des k-means\n2. Création d’une table d’indexation des couleurs (CLUT)\n3. Compression et décompression de l’image selon le codage RLE\n4. Décompression et affichage\nEn outre, la fiche projet stipulait :\n1. L’application éventuelle d’un algorithme de dithering\n2. La validation des performances en termes de qualité et ratios de compression\n3. L’implémentation des fonctionnalités sous forme de menu interactif\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraphaelmos%2Fkmeansonimage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraphaelmos%2Fkmeansonimage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraphaelmos%2Fkmeansonimage/lists"}