熟练掌握CV中最基础的概念:图像特征,看这篇万字的长文就够了(一)

简介: 熟练掌握CV中最基础的概念:图像特征,看这篇万字的长文就够了(一)

图像特征

什么是图像特征?

| 特征

·对图像进行描述。

·指出图像中的相关信息。            

·将一组图像与其他图像区分开来。

| 类别

·全局特征:将图像视为一个整体。

·局部特征:图像中的部分区域。

| 正式定义

在计算机视觉和图像处理中,特征指的是为解决与某一应用有关的计算任务的一段信息。

·所有的机器学习和深度学习算法都依赖于特征。

 

什么能作为特征?

·单独的像素点强度不能作为特征

| 特征

·总体强度测量平均值,直方图,调色板等。

·边缘和山脊梯度和轮廓。

·特殊的角点特征和曲率。

·斑点和纹理。

·使用过滤器获得的特征。

 

例子

1,        像素点强度

image.png

像素点强度组合作为特征

2,        边缘

image.png


边缘作为特征

3,        关键点

image.png

关键点作为特征


什么是好的特征?

那些受外部因素影响不大的特征是好的特征。

| 特征不变性

·伸缩

·旋转

·转换

·透视法

·仿射

·颜色

·照度

 

角点特征

·角:定义为两条边的交点。·关键点:图像中具有明确位置且可以可靠检测的点。

| 适用范围

·运动检测和视频跟踪。·图像注册。·图像拼接和全景拼接。·3D建模和对象识别。

 

例子

1,        关键点

image.png

 关键点识别

2,        

image.png


角识别


Harris角点检测

| Harris角点检测算法可以分为5个步骤

·转化为灰度图

·计算空间导数

·设置结构向量

·计算Harris响应

·抑制非最大值

| 使用OpenCV实现Harris角点检测


''''' Harris Corners using OpenCV ''' %matplotlib inline  import numpy as np  import cv2  from matplotlib import pyplot as plt  img = cv2.imread("imgs/chapter9/chess_slant.jpg", 1)   #img = cv2.resize(img, (96, 96))  gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  gray = np.float32(gray)   ################################FOCUS###############################  dst = cv2.cornerHarris(gray,2,3,0.04)  ####################################################################   # Self-study: Parameters  plt.figure(figsize=(8, 8))  plt.imshow(dst, cmap="gray")  plt.show()

image.png

'''''  result is dilated for marking the corners '''  dst = cv2.dilate(dst,None)  plt.figure(figsize=(8, 8))  plt.imshow(dst, cmap="gray")  plt.show()


image.png

''''' Threshold for an optimal value, it may vary depending on the image.  We first calculate what is the maximum and minimum value of pixel in this image  '''   max_val = np.uint8(dst).max()  min_val = np.uint8(dst).min()  print("max_val = {}".format(max_val))  print("min_val = {}".format(min_val))

输出


max_val = 255  min_val = 0  img = cv2.imread("imgs/chapter9/chess_slant.jpg", 1)  img[dst>0.1*dst.max()]=[0,0,255]  plt.figure(figsize=(8, 8))  plt.imshow(img[:,:,::-1])  plt.show()

image.png

|利用OpenCV-harris角点求角点坐标

%matplotlib inline  import numpy as np  import cv2  from matplotlib import pyplot as plt   img = cv2.imread("imgs/chapter9/chess_slant.jpg", 1);  #img = cv2.resize(img, (96, 96))  gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)   # find Harris corners  gray = np.float32(gray)  dst = cv2.cornerHarris(gray,2,3,0.04)  dst = cv2.dilate(dst,None)  ret, dst = cv2.threshold(dst,0.01*dst.max(),255,0)  dst = np.uint8(dst)  # find centroids  ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst)  # define the criteria to stop and refine the corners  # Explain Criteria  criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001)  corners = cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria)  # Now draw them  res = np.hstack((centroids,corners))  res = np.int0(res)  for x1, y1, x2, y2 in res:      #cv2.circle(img,(x1, y1), 5, (0,255,0), -1) # Point Centroids     cv2.circle(img,(x2, y2), 10, (0,0,255), -1) # Point corners  #img[res[:,1],res[:,0]]=[0,0,255]  #img[res[:,3],res[:,2]] = [0,255,0]  plt.figure(figsize=(8, 8))  plt.imshow(img[:,:,::-1])  plt.show()

image.png

目录
相关文章
|
文字识别 前端开发
CodeFuse-VLM 开源,支持多模态多任务预训练/微调
随着huggingface开源社区的不断更新,会有更多的vision encoder 和 LLM 底座发布,这些vision encoder 和 LLM底座都有各自的强项,例如 code-llama 适合生成代码类任务,但是不适合生成中文类的任务,因此用户常常需要根据vision encoder和LLM的特长来搭建自己的多模态大语言模型。针对多模态大语言模型种类繁多的落地场景,我们搭建了CodeFuse-VLM 框架,支持多种视觉模型和语言大模型,使得MFT-VLM可以适应不同种类的任务。
1482 0
|
1月前
|
传感器 人工智能 BI
2025科普手册:6大智能体类型,拆解智能重塑世界的底层逻辑
智能体正从概念走向现实,2025年被誉为“智能体元年”。全球市场规模达113亿美元,中国突破69亿元。本文盘点六大主流类型:反应式、目标驱动型、认知增强型、语音、编码及多智能体协同系统,解析其核心能力与应用场景,揭示智能体如何重塑工作与生活,推动人机协作迈向新阶段。
568 1
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
1282 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
1272 8
|
3月前
|
并行计算 PyTorch 算法框架/工具
74_调试技巧:OOM与性能瓶颈
在大型语言模型(LLM)的开发与部署过程中,内存溢出(Out of Memory,简称OOM)错误和性能瓶颈问题是开发者经常面临的两大挑战。随着模型规模的不断扩大(从最初的BERT、GPT-2到现在的GPT-4、Claude 3等千亿甚至万亿参数的模型),这些问题变得更加突出。据2025年最新的开发者调查报告显示,超过78%的LLM开发者在模型训练或推理过程中遇到过OOM错误,而性能瓶颈则影响了约65%的生产环境部署。
|
存储 测试技术 计算机视觉
栈和队列经典练习题
栈和队列经典练习题
|
缓存 前端开发 JavaScript
Webpack 动态加载的原理
【10月更文挑战第23天】Webpack 动态加载通过巧妙的机制和策略,实现了模块的按需加载和高效运行,提升了应用程序的性能和用户体验。同时,它也为前端开发提供了更大的灵活性和可扩展性,适应了不断变化的业务需求和技术发展。
|
机器学习/深度学习 人工智能 算法
Python中实现简单神经网络
【9月更文挑战第2天】本文将通过Python编程语言,介绍如何从零开始构建一个简单的神经网络。我们将使用纯Python代码,不依赖任何外部库,来展示神经网络的核心概念和工作原理。文章将详细解释每个步骤,并最终实现一个能够进行基本模式识别的神经网络模型。通过这篇文章,读者可以对神经网络有一个直观的理解,并为进一步学习深度学习打下坚实的基础。
|
机器学习/深度学习 传感器 数据采集
深度学习之设备异常检测与预测性维护
基于深度学习的设备异常检测与预测性维护是一项利用深度学习技术分析设备运行数据,实时检测设备运行过程中的异常情况,并预测未来可能的故障,以便提前进行维护,防止意外停机和生产中断。
1000 1