介绍一种图像相似度排序算法
工作生活中,常常拍了很多照片存在计算机中,这些照片有些在同一个角度拍摄,内容很相似,甚至有些采取连拍方式,基本相同。清理这些照片、图像给很多朋友带来困扰。这里,给大家推荐一个图像查同软件。简单介绍一下这个软件查同算法总体思路:
1、按照用户指定的目录获取其中的所有*.jpg文件,对所有文件进行预处理,得到特定尺寸(界面可指定,默认为128×128)的缩略图。
2、按照用户在界面指定分块数量(默认为8),将缩略图等分为8×8,共64个的子块,对每一块,分别计算像素RGB三通道平均值,并将这3个数值,按照特定算法映射为3个可显示字符。
3、按照用户指定的块排列顺序(通过点击“样式”按钮,依次点击分块单元来指定排列顺序),将上述每个块(如8×8=64)所映射的字符连接成字符串,这样,对一幅图像,则可对RGB三通道每个通道形成一个字符串序列。界面提供图像信息中包括“红色基因”、“绿色基因”、“蓝色基因”,即分别指上述字符串序列。
4、待进度条指示处理完毕后,可分别点击“红色基因”、“绿色基因”、“蓝色基因”的列头,则可将图像分别按照指定的颜色映射字符串进行排序,并按照用户指定分组深度(默认为6,即如果前6个字符相同,则认为是相同图像),用红色标记。
使用上下箭头按钮可逐一浏览图像,排序完成后,使用左右箭头可在做了相同标记的图像中进行快速跳转。
可对手工标记的图像进行删除。
上述算法,实际效果相当不错,相同的图像绝对逃不出算法的“法眼”,差别较小的图像也都乖乖的顺序排列在一起,指定的参数合适时,相似度很高的图像标记也很准确。
使用时,指定了目录后即开始进行预处理,预处理完成后只需指定某列排序,使用左右箭头寻找被红色标记的文件组即可。图像色彩构成不通,RGB三通道表现也略有差异,多用用就清楚了。
软件使用C#编写,源代码公开,下面提供exe和源代码下载,请各取所需。
可执行程序(1分):https://download.csdn.net/download/codeslave1130/10474258
源代码(3分):https://download.csdn.net/download/codeslave1130/10501089
介绍一种图像相似度排序算法相关推荐
- 图像相似度比较算法总结
图像相似度比较算法总结 目录 简介 全局比较算法 hash 平均hash 插值hash 感知hash 比较hash指获取相似度 直方图 单通道直方图 多通道直方图 结构性相似度SSIM 局部信息相似度 ...
- 选择排序(Selection sort)是一种简单直观的排序算法
选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大 ...
- 介绍一种新的群智能算法---黏菌算法
一种新的群智能算法-黏菌算法 介绍一种新的群智能算法-黏菌算法 近些年群智能算法由于其效率较高,使用方便的优点引起了广大科研者的关注与兴趣.最近看文献,温州大学的李世民(现在去复旦读研究生了)提出了一 ...
- 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。
题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序.直接插入排序.简单选择排序.快速排序.希尔排序.堆排序. (2)待排序表的表长不小于100:其中的数据要用伪随机数产生程序产生:至少要 ...
- cacti不能实时刷新流量图_介绍一种编码帧内刷新算法
0.引言 本文主要介绍一种帧内刷新算法,解决I帧太大带来的延迟问题,可以在调优时,值得借鉴. 帧内刷新技术避免 I 帧尖峰带来的带宽压力,可以有效地降低视频通信中的缓冲区延迟.帧内刷新算法是一种视频错 ...
- 深入学习OpenCV中图像相似度的算法
最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...
- 几种句子相似度实现算法(简单了解一下)
最近在做一个虚拟客服的项目,简单的了解了一下中文语境的集中句子相似度的算法 看了大佬的项目和博客,不明觉厉,链接送上:https://github.com/wenyangchou/SimilarCha ...
- 算法:两种步长的希尔排序算法
算法:两种希尔排序算法 1 /** 2 * 希尔排序 3 * 不同步长的算法 4 * @author mackxu 5 * 6 */ 7 class ShellSort { 8 private int ...
- c++ 弧形面如何逆时针排序_这8种常见的Java排序算法,学算法必看!
在互联网的大趋势下,数据结构和算法知识,都扮演着重要的角色. 在面试中和实际工作中也是经常遇到和使用到的. 为了让大家了解java中的算法及其代码实现,小编整理出了以下常用的 8 种: 01 直接插入 ...
最新文章
- CIKM最佳应用论文:11亿节点的大型图,看闲鱼如何用图卷积过滤垃圾评论
- python教学视频k_GitHub - y000k/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...
- java 编译开关_java – 字符串是关于开关的数字类型,并始终编译为lookupswitch?
- 相机矩阵(Camera Matrix)
- Golang系列:打印命令行参数
- Windows在当前目录(文件)打开cmd窗口
- 有关《8zsb》的一些介绍
- 什么是区块链?真能改变货币和商业?终于有人讲明白了
- 视频编辑利器,不喜欢就框除!开源视频物体移除软件video object removal
- rocketmq mysql_聊聊rocketmq-mysql的BinlogPositionManager
- PMP备考笔记--1.1
- JSF 2 dropdown box example
- 中国能源统计年鉴面板数据-分省市主要污染物排放指标(包含ECXEL2020年中国统计年鉴)
- epub.js制作电子书阅读网站
- 政策解读 | 传言PayPal要封杀独立站卖家?绝对不可能!
- java long类型值不能为0_关于原始类型:Java:为什么不能将int转换为Long
- 汉语中的词频及笔画数分布规律探析
- AVI的音视频编码格式
- Linux内核入门: UL(x)、ULL(x)
- 【第十八篇】Flowable之多人会签