一种识别重复照片的方法及其实现系统
技术领域
本发明涉及移动终端图像识别技术领域,具体涉及一种识别重复照片的方法及其实现系统。
背景技术
大部分用户在拍照的过程中,都习惯在同一个场景连续拍几张,而一般情况仅有拍摄最好的一张才是用户真正需要的,这导致手机中存在多张重复冗余的照片。但现有的移动终端没有自动识别重复照片的功能,不能满足用户的个性化需求。
发明内容
本发明的目的,就是克服现有技术的不足,提供一种准确度高、识别效率高的识别重复照片的方法。
为实现本发明的另一目的,本发明还提供了一种实现识别重复照片的系统。
为了达到上述目的,采用如下技术方案:一种识别重复照片的方法,所述方法包括以下步骤:
S1、将所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;
S2、将步骤S1中判断为时间相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;
S3、将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,若是,则判断为重复的照片,若否,则判断为不重复的照片。
进一步,所述步骤S2的PHash算法运算操作具体为:
将所有照片都缩放到预设像素大小的尺寸;
将缩放后的照片转换成灰度图像;
将灰度图像进行离散余弦变换降低频率,得出结果矩阵;
计算每个照片离散余弦矩阵平均值,并将照片余弦矩阵每一个数值与平均值进行比较,大于或等于平均值的像素标志为1,小于平均值的像素标志为0;
将比较结果逐一组合一起,就构成了一串数字。
为实现本发明的另一目的,本发明还采用如下技术方案:一种实现识别重复照片的系统,所述系统包括:
相似判断模块,用于将所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;
识别指纹模块,用于将相似判断模块中判断为时间相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;
重复判断模块,用于将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,若是,则判断为重复的照片,若否,则判断为不重复的照片。
进一步,所述PHash算法运算操作具体为:
将所有照片都缩放到预设像素大小的尺寸;
将缩放后的照片转换成灰度图像;
将灰度图像进行离散余弦变换降低频率,得出结果矩阵;
计算每个照片离散余弦矩阵平均值,并将照片余弦矩阵每一个数值与平均值进行比较,大于或等于平均值的像素标志为1,小于平均值的像素标志为0;
将比较结果逐一组合一起,就构成了一串数字。
与现有技术相比,本发明的有益效果在于:本发明通过将所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;将上述判断为时间相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,若是,则判断为重复的照片,若否,则判断为不重复的照片。本发明的识别效率及准确度高,能满足用户的个性化需求。
附图说明
图1是本发明实施例一中实现识别重复照片的系统的模块示意图;
图2是本发明实施例一中识别重复照片的方法法的流程图。
具体实施方式
下面将结合附图以及具体实施方法来详细说明本发明,在本发明的示意性实施及说明用来解释本发明,但并不作为对本发明的限定。
实施例一
如图1所示,一种实现识别重复照片的系统,所述系统包括:
相似判断模块,用于将所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;
识别指纹模块,用于将相似判断模块中判断为相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;
所述PHash算法运算操作具体为:
将所有照片都缩放到预设像素大小的尺寸;
将缩放后的照片转换成灰度图像;
将灰度图像进行离散余弦变换降低频率,得出结果矩阵;
计算每个照片离散余弦矩阵平均值,并将照片余弦矩阵每一个数值与平均值进行比较,大于或等于平均值的像素标志为1,小于平均值的像素标志为0;
将比较结果逐一组合一起,就构成了一串数字。
重复判断模块,用于将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,若是,则判断为重复的照片,若否,则判断为不重复的照片。
如图2所示,一种识别重复照片的方法,所述方法包括以下步骤:
S101:将所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;
S102:将步骤S101中判断为时间相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;
所述步骤S102的PHash算法运算操作具体为:
S201:将所有照片都缩放到预设像素大小的尺寸;
S202:将缩放后的照片转换成灰度图像;
S203:将灰度图像进行离散余弦变换降低频率,得出结果矩阵;
S204:计算每个照片离散余弦矩阵平均值,并将照片余弦矩阵每一个数值与平均值进行比较,大于或等于平均值的像素标志为1,小于平均值的像素标志为0;
S205:将比较结果逐一组合一起,就构成了一串数字。
S103:将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,若是,则判断为重复的照片,若否,则判断为不重复的照片。
实施例二
一种实现识别重复照片的系统,所述系统包括:
相似判断模块,用于将移动终端中相机保存路径下所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设的5min范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;这样将所有照片比较过后,即可排除一部分在时间上孤立的照片,此类照片间不太可能存在重复照片;
识别指纹模块,用于将相似判断模块中判断为时间相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;
所述PHash算法运算操作具体为:
将所有照片都缩放到8*8像素的尺寸,这样就可以摒弃不同尺寸、比例带来的照片差异;
将8*8的照片转换成灰度图像,这样可以摒弃了色彩带来的差异;
将灰度图像进行离散余弦变换降低频率,得出结果矩阵;
计算每个照片离散余弦矩阵平均值,并将照片余弦矩阵每一个数值与平均值进行比较,大于或等于平均值的像素标志为1,小于平均值的像素标志为0;
将比较结果逐一组合一起,就构成了一个64位的01整数串,这就是该照片的“指纹”。
重复判断模块,用于将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,这样可以更精准地帅选出可能重复的照片,若是,则判断为重复的照片,若否,则判断为不重复的照片。
一种识别重复照片的方法,所述方法包括以下步骤:
S301:将移动终端中相机保存路径下所有照片进行分组,把每一张照片的生成时间跟其它所有照片的生成时间进行一一比较,判断照片之间的生成时间差异是否在预设的5min范围内,若是,则判断为时间相似的照片,并归类为同一时间组,若否,则判断为时间不相似的照片,不需要进行识别;这样将所有照片比较过后,即可排除一部分在时间上孤立的照片,此类照片间不太可能存在重复照片;
S302:将步骤S301中判断为时间相似的照片进行PHash算法运算,运算执行后,每个照片拥有自己独有的一串数字,作为照片的识别指纹;
所述步骤S302的PHash算法运算操作具体为:
S401:将所有照片都缩放到8*8像素的尺寸,这样就可以摒弃不同尺寸、比例带来的照片差异;
S402:将8*8的照片转换成灰度图像,这样可以摒弃了色彩带来的差异;
S403:将灰度图像进行离散余弦变换降低频率,得出结果矩阵;
S404:计算每个照片离散余弦矩阵平均值,并将照片余弦矩阵每一个数值与平均值进行比较,大于或等于平均值的像素标志为1,小于平均值的像素标志为0;
S405:将比较结果逐一组合一起,就构成了一个64位的01整数串,这就是该照片的“指纹”。
S303:将时间相似的照片进行重新分组,把每一张照片的识别指纹跟同一时间组其它所有照片的识别指纹进行一一比较,判断照片之间的识别指纹差异是否在预设范围内,这样可以更精准地帅选出可能重复的照片,若是,则判断为重复的照片,若否,则判断为不重复的照片。
本实施例所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。