Python_基于PHash(感知哈希)与ORB的图像识别算法

本文介绍了如何使用Python的感知哈希(PHash)和ORB算法进行图像识别。通过忽略图像细节,对图片特征进行比较,判断图片的相似性。文章详细讲解了从缩放图像到灰度化、二值化的处理过程,并提到了ORB算法的原理,提供了相关资源链接和源码。
摘要由CSDN通过智能技术生成

Python_基于PHash(感知哈希)与ORB的图像识别算法

当我们需要对某一张图片进行判定是否和另外的图片相似时,用的最多的便是感知哈希算法和ORB算法。

感知哈希算法的算法特点便是忽略图像中的细节,比如:地点、光照影响、内容等因素,而仅仅对图片中的特征进行比较,从而判断出两图片是否相似。
例如,我们有一张图片。此时,我们需要判断我们的图形库中是否具有与其相似或一样的图片,这个时候,我们将它的细节内容给祛除掉,这时候,我们可以用缩放的方式将细节内容给去除。
在这里插入图片描述
将图片给缩放成8*8格式之后,图片将会变成以下形式:
在这里插入图片描述
但是,由于我们的图片展示是由3原色(红、绿、蓝)构成,所以,未来我们计算的时候,也要考虑到3个像素之间彼此的关系,为了之后计算的简单性,我们将这张图片转成灰度图片:
在这里插入图片描述
排除了三原色的影响,我们再将灰度图片进行二值化操作(将低于平均灰度值的置位0,高于平均灰度值的置位1),排除光线等原因造成的图片灰度值不等的影响,得到最后的图片,一般来说,比值高于0.9以上,就可以认为是一张图片了。

至于ORB算法原理,有几位小哥的博客写的很清晰,在这里我就不班门弄斧了,附链接:
ORB算法原理

最后,附上源码:

#coding-utf-8

import cv2
import numpy as np
import os
import shutil

#存放图片目录
path = "D:\\untitled1\\photo"
#用户传输原图
imgPathSrc = "\\untitled1\\photo\\get1.jpg"
#相似比例值
simil = 0.85
#相似图片存入地址
saveFile = "C:\\Users\\EDZ\\Desktop\\test_consult\\"

def ORBImgSimilarity(imgPathSrc,imgPathCom):
    """
    :param imgPathSrc: 原图路径
    :param imgPathCom: 待比较图片路径
    :return:图片相似度
    """
    try:
        #读取图片
        imgSrc = cv2.imread(imgPathSrc,cv2.IMREAD_GRAYSCALE)
        imgCom = cv2.imread(imgPathCom,cv2.IMREAD_GRAYSCALE)

        #初始化ORB检测器
        orb = cv2.ORB_create()
        kpSrc,deSrc = orb.detectAndCompute(imgSrc
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值