• 计算机视觉40例之案例11以图搜图


    导读】本文是专栏《计算机视觉40例简介》的第11个案例《以图搜图》。该专栏简要介绍李立宗主编《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书的40个案例。

    目前,该书已经在电子工业出版社出版,大家可以在京东、淘宝、当当等平台购买。

    大家可以在公众号“计算机视觉之光”回复关键字【案例11】获取本文案例的源代码及使用的测试图片等资料。

    针对本书40个案例的每一个案例,分别录制了介绍视频。如果嫌看文字版麻烦,可以关注公众号“计算机视觉之光”直接观看视频介绍版。

    以图搜图是搜索引擎网站和购物网站的必备功能。看到一件衣服很好看,把它拍下来,到购物网站上通过搜图就可以找到与它一样的款式。如1所示,左侧是一张裙子的照片,右侧是将其上传到某购物网站后,搜索得到的大量与该裙子相似的款式。

    图1 以图搜图

    我们可以通过图2观察以图搜图的基本原理和过程。

    图2 基本原理

    从图中可以看到,在检索图像时,先提取所有图像的特征值(感知哈希),然后比较检索图像和数据库中所有图像的特征值差值。数据库中和检索图像差值最小的图像,就是检索结果。

    例如,图2中针对检索图像寻找相似图像时。图像库内第2行第1个图像的特征值489与检索图像的特征值462之差为27,是所有的差值中最小的,因此该图像就是检索结果。

    从上述分析可以看出,检索的关键点在于找到特征值,并计算距离。这里涉及到图像处理领域中最关键的三个问题,分别是:

    1. 提取哪些特征。特征有很多,我们要找到有用的特征,这是关键的第1步;
    2. 如何量化特征。简单来说就是要用数字来表示特征,让特征变为可计算的;
    3. 如何计算距离。距离的计算有很多种不同的方式,我们要选择一种合适的距离计算方式,书中我们使用了汉明距离来衡量距离差值。

    下面简要介绍特征提取、计算距离。

    1特征提取

    以图搜图时,我们需要有效地提取图像的特征值。书中采用了感知哈希值作为图像的特征值,该值能够有效地代表图像的特征。其提取过程如图3所示,主要包含:

        1. 缩小:将图像调整为8*8像素大小
        2. 减色:将图像处理为灰度值
        3. 比较:该步骤将图像进行二值化处理。将图像的每个像素值与均值比较。大于均值的处理为1,小于等于均值的处理为0。
        4. 降维:将图像处理为一个64个长度的二值串。

    上述过程得到的二值串作为图像的哈希值,参与到后续的图像检索中。

    图3 哈希值

    2距离计算

    比较感知哈希值时,可以采用汉明距离来衡量二者的差异大小。具体来说,将两个感知哈希值不同的位的个数,作为二者的距离。例如,感知哈希值test值为“1011”:

    1. 感知哈希值x1,其值为“1010”。则test1与x1,二者仅仅在第4位上的这一位的值不同,因此二者的距离为1;
    2. 感知哈希值x2,其值为“1011”。则test1与x2,二者完全相同,因此二者距离为0;
    3. 感知哈希值x3,其值为“0010”。则test1与x3,二者在第1位、第4位上的值均不同,因此二者的距离为2;

    以图搜图程序演示如图4所示,图中:

    1. 左侧是检索图像O
    2. 右上侧是被检索的文件夹F
    3. 右下侧是根据检索图像O从文件夹F中检索到的与图像O最相似的3幅图像

    图4 以图搜图

    在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书中,从算法原理、实现流程等角度系统深入地介绍了该案例的理论基础和实现过程,并对具体的代码实现进行了细致的介绍与解释。欢迎大家阅读第11章《以图搜图》获取详细内容。

    《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。

  • 相关阅读:
    2017年亚太杯APMCM数学建模大赛B题喷雾轨迹规划问题求解全过程文档及程序
    自然语音处理(NLP)系列(五)——详解智能问答系统
    NVIDIA基于Code Llama发布在线版本Llama,人人可以免费使用
    Excel文件转换为HTML文件
    LVGL---复选框(lv_checkbox)
    ROS 位置姿态Odometry仿真模拟(gmapping)
    互联网社交礼仪:我到底该怎么笑才对
    B/S医院手术麻醉临床系统:围术期的认识
    前端零代码开发实践:页面嵌套+逻辑连线0开发扩展组件,实现切换开关控制扇叶转动。能无代码封装扩展组件,有别于常规的web组态或低代码平台
    Springboot实现匹配系统(上)
  • 原文地址:https://blog.csdn.net/superdont/article/details/126227273