{"id":25950169,"url":"https://github.com/volatilflerovium/duplicate_image_finder","last_synced_at":"2026-04-20T03:35:25.091Z","repository":{"id":53899769,"uuid":"379512475","full_name":"volatilflerovium/Duplicate_Image_Finder","owner":"volatilflerovium","description":"It is an application that can find duplicated images (jpg, png, bitmap, etc) in a collection.","archived":false,"fork":false,"pushed_at":"2025-11-21T10:26:51.000Z","size":261612,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-21T12:16:47.876Z","etag":null,"topics":["appimage","linux","multithreading","opencv","wxwidgets"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/volatilflerovium.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-23T07:10:29.000Z","updated_at":"2025-11-21T10:26:54.000Z","dependencies_parsed_at":"2025-04-08T16:38:57.121Z","dependency_job_id":null,"html_url":"https://github.com/volatilflerovium/Duplicate_Image_Finder","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/volatilflerovium/Duplicate_Image_Finder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volatilflerovium%2FDuplicate_Image_Finder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volatilflerovium%2FDuplicate_Image_Finder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volatilflerovium%2FDuplicate_Image_Finder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volatilflerovium%2FDuplicate_Image_Finder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/volatilflerovium","download_url":"https://codeload.github.com/volatilflerovium/Duplicate_Image_Finder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volatilflerovium%2FDuplicate_Image_Finder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32031732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"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":["appimage","linux","multithreading","opencv","wxwidgets"],"created_at":"2025-03-04T12:53:04.914Z","updated_at":"2026-04-20T03:35:25.084Z","avatar_url":"https://github.com/volatilflerovium.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Duplicated Image Finder\n\nDuplicated Image Finder is a simple application written in C++ and packed\nas [AppImage](https://appimage.org/) that can find duplicated images.\n\n## Content\n- [Overview](#overview)\n- [AppImage](#appimage)\n\t- [Desktop Integration](#desktop-integration) \n- [Supported Files](#supported-files)\n- [The Power of the Humble Histogram](#the-power-of-the-humble-histogram)\n- [Quick Start](#quick-start)\n- [Some Images](#some-images)\n\n## Overview\n\nDuplicated Image Finder finds duplicated pictures independently of rotations,\nmirroring and to certain degree resizing. However its algorithm is not perfect\nand, in this case, we take advantage of it and use a network visualization to\npresent the similarity between the pictures in our collections.\nThe network visualization is powered by [vis.js](https://visjs.org/)\n\nYou can see Duplicated Image Finder in action:\n\n- [Example](https://odysee.com/@volatilflerovium:3/Duplicated_Picture_Finder_1:c)\n- [Settings](https://odysee.com/@volatilflerovium:3/Duplicated_Picture_Finder_Settings:5)\n\n## AppImage\n\n[Duplicated Image Finder](https://github.com/volatilflerovium/Duplicate_Image_Finder/releases)\nis available as an AppImage which means \"one app = one file\", which you can download and run on your\nLinux system while you don't need a package manager and nothing gets changed\nin your system.\n\nAppImages are single-file applications that run on most Linux distributions.\nDownload it, make it executable, and run! No need to install.\nNo system libraries or system preferences are altered.\nMost AppImages run on recent versions of Arch Linux, CentOS, Debian, Fedora,\nopenSUSE, Red Hat, Ubuntu, and other common desktop distributions.\n\n### Desktop Integration\n\nInstallation is totally optional. To auto install Duplicate_Image_Finder\ngo to Settings and check the install box.\n\nCreating desktop entries for Duplicate_Image_Finder ensures quick access\nfrom the Application menu. For this, Duplicate_Image_Finder's autoinstallation\nwill create desktop file with the following content\n\n```\n[Desktop Entry]\nType=Application\nName=wxDuplicated Image Finder\nExec=wxDuplicatedImageFinder\nIcon=wxduplicatedimageapp\nCategories=Graphics;\n```\n\nand save it in ~/.local/share/applications/ It also will create the directory\n~/bin/appimages/wxDuplicatedImageApp and move the appimage there. After this \nyou will be able to see wxDuplicate_Image_Finder listed in the Application \nmenu under Graphics.\n\nTo uninstall it, delete the directory ~/bin/appimages/wxDuplicatedImageApp \nand the file ~/.local/share/applications/wxDuplicatedImageApp.desktop\n\n\n## Supported Files\n\nAs it uses OpenCV, it supports the following formats:\n\n* Windows bitmaps - *.bmp, *.dib\n* JPEG files - *.jpeg, *.jpg, *.jpe\n* JPEG 2000 files - *.jp2\n* Portable Network Graphics - *.png\n* WebP - *.webp\n* Portable image format - *.pbm, *.pgm, *.ppm *.pxm, *.pnm\n* PFM files - *.pfm\n* Sun rasters - *.sr, *.ras\n* TIFF files - *.tiff, *.tif\n* OpenEXR Image files - *.exr\n* Radiance HDR - *.hdr, *.pic\n* Raster and Vector geospatial data supported by GDAL\n\n## The Power of the Humble Histogram\n\nSome methods to compare two images are:\n\n*\tHashing:\n\t\tTwo identical files at binary level will produce the same hash sum.\n\n*\tMSE:\n\t\tMean Squared Error between the two images is the sum of the squared difference between the two images. The lower the error, the more “similar” the images are.\n\n*\tSSIM:\n\t\tStructural Similarity Index method is more involved than the MSE method, \n\t\tbut the gist is that SSIM attempts to model the perceived change in the \n\t\tstructural information of the image, whereas MSE is actually estimating \n\t\tthe perceived errors.\n\n*\tAI:\n\t\tThere are deep learning-based image similarity methods that we can utilize, particularly siamese networks. Siamese networks are super powerful models that can be trained with very little data to compute accurate image similarity scores.\n\nIt would have been easy to implement any of these methods, after all everybody can\ncopy-and-paste. Instead, Duplicated Image Finder implements a simple algorithm\nbased on comparison of histograms to rank images. This algorithm is able to\nmatch images that are rotated, reflection and, to some degree, resized of\nanother.\n\nFor each image, Duplicated Image Finder calculates histograms over a \ngeometrical regions of a picture and use them to compare to other images\nand calculate a similarity ranking.\n\nWe have two basic consequences of this:\n\n* if one image is a rotated or a reflected version of another, both \nwill have the same set of histograms.\n\n* each concentric histogram contains information of the images of a particular\nregion of it. Globally, two images can have the same histogram, however\nlocally they can have different histograms.\n\n## Quick Start\n\nIn the following image we see the components of the GUI:\n\n[![image-network.png](https://i.postimg.cc/3W5nJ21t/image-network.png)](https://postimg.cc/YLR1dGJF)\n\nFrom top-left to top-right:\n\n- Settings button (see video)\n- Play Animation: when the results are loaded in the network, this button will\n\tstart random selection of the pictures on the network\n- Restart will remove the files currently loaded in the application\n- Add Directories\n- Drop-down menu to select the mask for stracting information of an image.\n- Smooth level: smoothing an image can be interpreted as blending information\ninto the local aread of the selection mask, therefore high value will\nallow to detect those image that are very similar each other.\n- Drop-down menu to select the level of similarity from Low, Medium and High\n- Repeat will allow you to change settings applied on the same selection of pictures after\n- Cancel button stops the application\n\nOn the left side with have a column of blocks of images separated by a blue row.\nAll the pictures in each block (except the first one) are similar to the first \npicture in the same block. Because a image can be similar to others, the same image \nmight appears in multiple blocks. \n\nRight click on each image in the left column will display a context menu:\n- Open: open the image with the default image manager of your system.\n- Delete: move the current image to the trash bin. The image will be removed \nfrom left column and from the network.\n\nLeft click will locate that image on the network\nDouble click on any node in the network will scroll the left column to the \nfirst reference to that image.\n\nOn the main area, the results are displayed in a network visualization.\nTo navigate:\n- with the mouse: dragging to move and scroll wheel to zoom in/out.\n- with keyboard: arrows to move around, key + to zoom in key - to zoom out. \n\n## Some Images\n\n[![image-network-1.png](https://i.postimg.cc/Kc1bjLxQ/image-network-1.png)](https://postimg.cc/G9nVS4Bs)\n\n[![image-network-2.png](https://i.postimg.cc/MptNtrdx/image-network-2.png)](https://postimg.cc/75GKZ9FQ)\n\n[![image-network-3.png](https://i.postimg.cc/W19Y0q11/image-network-3.png)](https://postimg.cc/yDZTHdRM)\n\n[![nice-correlation.png](https://i.postimg.cc/85vy8yB7/nice-correlation.png)](https://postimg.cc/KkZ7BDWb)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolatilflerovium%2Fduplicate_image_finder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolatilflerovium%2Fduplicate_image_finder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolatilflerovium%2Fduplicate_image_finder/lists"}