{"id":15706221,"url":"https://github.com/jonfryd/imageclustering","last_synced_at":"2025-03-30T15:46:37.400Z","repository":{"id":99757739,"uuid":"203020817","full_name":"jonfryd/ImageClustering","owner":"jonfryd","description":"Content-Based Image File Renaming Tool","archived":false,"fork":false,"pushed_at":"2020-10-13T15:24:54.000Z","size":5849,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-05T17:30:28.342Z","etag":null,"topics":["clustering","computer-vision","image-processing","ml","unsupervised-learning"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonfryd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2019-08-18T15:08:40.000Z","updated_at":"2019-12-18T09:31:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"fda88af7-c23a-4abe-821b-7ff0649a2222","html_url":"https://github.com/jonfryd/ImageClustering","commit_stats":{"total_commits":30,"total_committers":1,"mean_commits":30.0,"dds":0.0,"last_synced_commit":"977376d29aa09da215dc41b6c369d015fe0338c0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonfryd%2FImageClustering","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonfryd%2FImageClustering/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonfryd%2FImageClustering/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonfryd%2FImageClustering/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonfryd","download_url":"https://codeload.github.com/jonfryd/ImageClustering/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246342824,"owners_count":20761939,"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","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":["clustering","computer-vision","image-processing","ml","unsupervised-learning"],"created_at":"2024-10-03T20:21:56.302Z","updated_at":"2025-03-30T15:46:37.375Z","avatar_url":"https://github.com/jonfryd.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Java 5](https://img.shields.io/badge/Java-5-blue.svg)](http://www.oracle.com/technetwork/java/javase)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n# ImageClustering: Content-Based Image File Renaming Tool\n\nThis is a hobby project I did back in 2008-2009 based on Java Advanced Imaging API.\n\nIts purpose is to take a directory of image files with any name and bring order to chaos\nbased on pattern recognition of the actual contents. The pipeline starts with image feature extraction techniques (DCT perceptual hash,\ntexture histograms, edge histograms, etc.), then calculate dissimilarity between those features and finally perform\nclassification using a fast implementation of a self-organizing map for clustering based on [research done at Inria](http://somlib.gforge.inria.fr/).\n\nThe code comes with a couple of nifty features such as multi-threaded processing and distributing work over the network\nto different nodes. Also, it has a crude Swing UI:\n\n\u003cimg src=\"ui4.png\" alt=\"ImageClustering Swing UI\" width=\"694\" height=\"422\"/\u003e\n\nRadius is a hyper-parameter that controls the size of each cluster. The default value is fine for the most part.\n\n# Example\n\nHere are 9 images named in sequence (```image1.jpg```, ```image2.jpg```, ..., ```image9.jpg```):\n\n\u003cimg src=\"before.jpg\" alt=\"Before clustering\" width=\"642\" height=\"696\"/\u003e\n\nObviously they can be grouped into four clusters of 2, 2, 2 and 3 images, respectively. After processing the directory\nthe files are renamed as follows:\n\n\u003cimg src=\"after.jpg\" alt=\"After clustering\" width=\"642\" height=\"696\"/\u003e\n\n... Voila!\n\n# Building\n\nClone the repository and execute Maven from the root directory:\n\n    $ git clone https://github.com/jonfryd/ImageClustering\n    $ cd ImageClustering/\n    $ mvn clean\n    $ mvn install\n\n# Usage\n\nAfter building, run e.g. the UI as:\n\n    $ ./runImageClustering.sh\n\nThis is for Linux or Mac OS X. For Windows run .bat-file:\n\n    $ runImageClustering.bat\n\nWhen the UI is launched, select the directory, enter the expected number of clusters and press 'Process'.\nImages are then analyzed and renamed with a `C###_`-prefix denoting the cluster each image belongs to.\n\nHappy renaming.\n\n# Author\n\nThis application created by Jon Frydensbjerg - email: jonf@elixlogic.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonfryd%2Fimageclustering","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonfryd%2Fimageclustering","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonfryd%2Fimageclustering/lists"}