OpenCV-Python(29):图像特征

目录

目标

背景介绍

常用特征

应用场景 


目标

  •  理解什么是图像特征
  •  为什么图像特征很重要
  •  为什么角点很重要

背景介绍

        相信大多数人都玩过拼图游戏吧。首先你们拿到一张图片的一堆碎片,你要做的就是把这些碎片以正确的方式排列起来从而重建这幅图像。问题是,你怎样做到的呢。如果把你做游戏的原理写成计算机程序,那么计算机就也会玩拼图游戏了。如果计算机可以玩拼图,我们就可以给计算机一大堆自然图片,然后就可以让计算机把它拼成一张大图了。如果计算算机可以自动拼接自然图片,我们是不是可以给计算机关于一个建筑的的大量图片,然后然后让算机给我们创建一个3D 的的模型呢?

        问题和联想可以无边无际。但是所有的这些都是建立在一个基础之上的。这个问题就是我们是如何玩拼图的?我们是如何把一堆碎片拼在一起的?我们又是如何把一个个自然场景拼接成一个单独图像的?

        答案就是:我们需要寻找一些唯一的特征,这些特征要适于被跟踪,容易被比较。如果我们要定义这样一种特征,然我们知道它是什么但很难用语言来描述。如果你找出一个可以在不同图片之相互比较好的特征,你肯定能搞定。这就是为什么小孩子也会玩拼图的原因。我们在一副图像中搜索这样的特征,我们能找到它们,而且也能在其他图像中找到这些特征,然后再把它们拼接到一块。(在拼图游戏中,我们更注重的是图片之间的连续性)。我们的这些能力是天生的。所以我们的一个问题现在扩展成了几个,但是更加确切了。这些特征是什么呢?我们的答案必须也能让算机理解才可以。好吧,很难说人是怎样找出这些特征的。这些能力已经刻在我们的大脑中了。但是如果我们深入的观察一些图像并搜索不同的pattern,我们会发现一些有趣的事。以下图为例:

        图像很简单。在图像的上方给出了六个小图。你要做的就是找到这些小图在原始图像中的位置。你能找到多少正确结果呢?
        A 和B 是平面,而且它们的图像中很多地方都存在,很难找到这些小图的准确位置。
        C 和D 更简单,它们是建筑的边缘。你可以找到它们的近似位置,但是准确位置是很难找到。这是因为:沿着边缘,所有的地方都一样。所以边缘是比平面更好的特征,但是不够好。(在拼图游戏中要找连续的边缘)。
        最后E 和F,它们是建筑的一些角点。它们能很容易的被找到。因为在角点的地方,无论你向哪个方向移动小图,结果都会有很大的不同。所以可以把它们当成一个好的特征。为了更好的理解这个概念我们举个更简单的例子。 

        如上图所示,蓝色框中的区域是一个平面很难找到和追踪。无论你向哪个方向移动蓝色框,里面的内容长得都一样。对于黑色框中的区域,它是一个边缘。如果你沿垂直方向移动,它会改变,但是如果沿水平方向移动就不会改变。而红色框中的角点,无论你向哪个方向移动得到的结果都是不同的,这证明它是唯一的。所以,基本上来说,角点是一个好的图像特征。值得一提的是,不仅仅是角点,有些情况下斑点也是好的图像特征。
        现在我们终于回答了前面的问题了,这些特征是什么(角点)。但是下一个问题又来了。我们怎样找到它们?或者说我们怎样找到角点?我们也已经用一种直观的方式做了回答,比如在图像中找一些区域,无论你想在哪个方向移动,这些区域变化都很大。在下一节中我们会用计算机语言来实现这个想法。所以,找到图特征的技术被称为特征检测
        现在我们找到了图像特征(假如你已经搞定)。在找到这些之后,你应该在其它图像中也找到同样的特征。我们应该怎么做呢?我们选择特征周围的一个区域,然后用我们自己的语言来描􄦟它,比如:“上边是蓝天,下边是建筑,在建筑上有很多玻璃等”,然后你就可以在其他图片中搜索相同的区域了。基本上看来,你是在描述特征。同样计算机也会对特征周围的区域进行描述,这样它才能在其他图像中找到相同的特征。我们把这种对特征的形容和描述称为特征描述。当你有了特征和它们的描述后,你就可以在所有的图像中找这个相同的特征了,找到之后你就可以做任何你想做的图像处理和模式识别相关的事情了,比如特征匹配,图像相似度检测等。

常用特征

        图像特征是指图像中具有一定代表性和可区分性的局部区域或全局属性。图像特征可以用于图像处理、计算机视觉和模式识别等领域的任务,如特征检测、目标识别、图像匹配等。

常见的图像特征包括:

1.灰度特征:通过对图像像素的灰度值进行统计分析,得到图像的亮度分布特征。

2.颜色特征:通过提取图像中的颜色信息,可以用于图像分类、目标识别等任务。

3.纹理特征:通过分析图像中的纹理信息,可以描述图像的纹理结构和细节特征。

4.形状特征:通过对图像中物体的形状进行描述,可以用于目标检测、边缘检测等任务。

5.尺度不变特征变换(Scale-Invariant Feature Transform,SIFT):通过检测图像中的局部特征点,提取具有尺度不变性的特征描述子。

        特征检测是指在图像中寻找具有代表性的局部区域或全局属性的过程。常见的特征检测算法包括哈里斯角点检测、SIFT、SURF、FAST等。

应用场景 

特征检测的应用场景包括:

1.目标识别:通过比对图像中的特征与已知模板特征,可以实现对目标物体的自动识别和定位。

2.图像拼接:通过对图像中的特征点进行匹配,可以实现多幅图像的拼接。

3.视觉里程计:通过对图像中的特征点进行跟踪和匹配,可以实现机器人或车辆的定位和导航。

4.图像检索:通过提取图像的特征向量,可以实现对图像数据库的内容检索和相似图像搜索。

5.图像增强:通过对图像中的特征进行增强和突出,可以改善图像的视觉效果和质量。

        总之,图像特征的检测和应用可以帮助我们从图像中提取有用的信息,并实现图像处理和分析的各种任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【并发设计模式】聊聊Thread-Per-Message与Worker-Thread模式

在并发编程中,核心就是同步、互斥、分工。 同步是多个线程之间按照一定的顺序进行执行,比如A执行完,B在执行。而互斥是多个线程之间对于共享资源的互斥。两个侧重点不一样,同步关注的是执行顺序,互斥关注的是资源的排…

RedisTemplate序列化

SpringBoot整合Redis,配置RedisTemplate序列化。如果使用StringRedisTemplate,那么不需要配置序列化,但是StringRedisTemplate只能存储简单的String类型数据,如图: 如果使用StringRedisTemplate存储一个常规对象&#…

python实现Ethernet/IP协议的客户端(三)

Ethernet/IP是一种工业自动化领域中常用的网络通信协议,它是基于标准以太网技术的应用层协议。作为工业领域的通信协议之一,Ethernet/IP 提供了一种在工业自动化设备之间实现通信和数据交换的标准化方法。python要实现Ethernet/IP的客户端,可…

灸哥问答:软件架构在软件研发中的作用

软件架构在软件开发中扮演着至关重要的角色。我们在软件研发的过程中,类比于建造一座公寓楼,而软件架构就像是盖楼之前的设计图纸,如果没有设计图纸就直接盖楼,可想而知带来的后果是什么。我对软件架构的作用表现总结如下&#xf…

Go语言TCP Socket编程

:::tip 声明 本文源于Go语言TCP Socket编程 | Tony Bai,可能会有稍微的修改。 ::: 文章目录 一、模型二、TCP连接的建立对于客户端而言,连接的建立会遇到如下几种情形:1、网络不可达或对方服务未启动2、对方服务的listen backlog满3、网络延…

【重磅新品】小眼睛科技推出紫光同创盘古系列FPGA开发板套件,盘古200K开发板,紫光同创PG2L200H,Logos2系列

FPGA,即现场可编程门阵列,作为可重构电路芯片,已经成为行业“万能芯片”,在通信系统、数字信息处理、视频图像处理、高速接口设计等方面都有不俗的表现。近几年,随着国家战略支持和产业发展,国产FPGA迎来迅…

PyTorch官网demo解读——第一个神经网络(4)

上一篇:PyTorch官网demo解读——第一个神经网络(3)-CSDN博客 上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法,这一篇我们来聊聊激活函数。 大佬说激活函数的作用是让神经网络产生非线性,类似人脑神经元…

Python算法例33 删除数字

1. 问题描述 给出一个字符串A,表示一个n位的正整数,删除其中k位数字,使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数,本例将找到删除k个数字之后的最小正整数,其中n≤240,k≤n。 2. 问题示例 …

HarmonyOS4.0系统性深入开发10卡片事件能力说明

卡片事件能力说明 ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 接口定义:postCardAction(component: Object, action: Object): void 接口…

性能优化(CPU优化技术)-ARM Neon详细介绍

本文主要介绍ARM Neon技术,包括SIMD技术、SIMT、ARM Neon的指令、寄存器、意图为读者提供对ARM Neon的一个整体理解。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC&#xff09…

IRQ Handler 的使用——以USART串口接收中断分别在标准库与HAL库版本下的举例

前言: 1.中断系统及EXTI外部中断知识点见我的博文: 9.中断系统、EXTI外部中断_eirq-CSDN博客文章浏览阅读301次,点赞7次,收藏6次。EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号&…

关于镜头景深的计算

1、问题背景 在调试项目的过程中,我们需要知道所搭配镜头的对焦距离、景深范围是多少, 这属于基本的项目信息,很多时候往往就因为忽略了这些小的信息,而导致一系列问题。 比如之前调试的一款化妆镜的设备,客户反馈了…

bootstrap5开发房地产代理公司Hamilton前端页面

一、需求分析 房地产代理网站是指专门为房地产行业提供服务的在线平台。这些网站的主要功能是连接房地产中介机构、房产开发商和潜在的买家或租户,以促成买卖或租赁房产的交易。以下是一些常见的房地产代理网站的功能: 房源发布:房地产代理网…

git解决冲突场景

文章目录 git解决冲突场景 git解决冲突场景 假设我们在公司开发了一个功能修改了一个文件 我们现在模拟修改文件之后提交一个版本到本地,但是不上传到远程仓库 假设我们现在回到家开发代码,需要拉去最新的代码 提示已经更新。根本没有最新的代码改动&am…

Android Studio 如何申请免费的api接口之聚合数据--建议收藏备用!

目录 前言 一、申请接口 二、使用接口 三、总结 四、更多资源 前言 在开发应用程序过程中,获取免费的 API 接口和数据源是非常重要的。它们可以为你的应用程序提供各种功能和数据,使其更加实用和丰富。本文将介绍如何申请免费的 API 接口以及一些建…

【图像拼接】源码精读:Seam-guided local alignment and stitching for large parallax images

第一次来请先看这篇文章:【图像拼接(Image Stitching)】关于【图像拼接论文源码精读】专栏的相关说明,包含专栏内文章结构说明、源码阅读顺序、培养代码能力、如何创新等(不定期更新) 【图像拼接论文源码精…

Vue3全局属性app.config.globalProperties

文章目录 一、概念二、实践2.1、定义2.2、使用 三、最后 一、概念 一个用于注册能够被应用内所有组件实例访问到的全局属性的对象。点击【前往】访问官网 二、实践 2.1、定义 在main.ts文件中设置app.config.globalPropertie import {createApp} from vue import ElementPl…

BLP模型

本篇文章是调研了许多资料后对 BLP 模型的一个总结 首发公号:Rand_cs MLS,Multi-level Security,主要关心的是数据机密性 D. Elliott Bell 和 Leonard J. LaPadula 在 1996 年提出了基本的 BLP 模型,主要有两个性质:…

【Spring实战】16 Profile

文章目录 1. 定义2. 使用2.1 定义 Profile2.2 激活 Profile 3. 演示3.1 properties文件3.2 打印日志3.3 启动服务&验证3.4 修改 active3.5 重启服务&验证 4. 应用场景4.1 数据库配置4.2 日志配置 5. 代码详细总结 Spring 框架提供了一种强大的机制,允许在不…

Github 2024-01-01 开源项目月报 Top20

根据Github Trendings的统计,本月(2024-01-01统计)共有20个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5TypeScript项目3JavaScript项目3非开发语言项目2Java项目2HTML项目2Jupyter Notebook项目2PHP项目…