🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
🍻本文由virobotics(仪酷智能)原创首发
🥳欢迎大家关注✌点赞👍收藏⭐留言📝
前言
Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。
本文将带领大家一起在LabVIEW中实现Harris角点检测。
一、角点特征相关概念
1.1 特征定义
什么是特征呢?为什么一副图像的某个特定区域可以作为一个特征,而其他区域不能呢?粗略的讲,特征就是有意义的图像区域,该区域具有独特特征和易于识别性。因此角点及高密度区域都是很好的特征,而大量重复的模式或低密度区域(例如图像中的蓝色天空)则不是很好的特征。边缘可以将图像分为两个区域,因此也可以看做好的特征。斑点是与周围有很大差别的像素区域,也是有意义的特征。
1.2 图像的特征
图像特征要有区分性,容易被比较。一般认为角点,斑点等是较好的图像特征。 如下图所示,蓝色框中的区域是一个平面很难被找到和跟踪。无论向哪个方向移动蓝色框,都是一样的。对于黑色框中的区域,它是一个边缘。如果沿垂直方向移动,它会改变。但是如果沿水平方向移动就不会改变。而红色框中的角点,无论你向那个方向移动,得到的结果都不同,这说明它是唯一的。 所以,我们说角点是一个好的图像特征。
角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在三维场景重建运动估计,目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。那我们怎样找到这些角点呢?我们一起来看看
1.3 角点的定义
下图中E,F中的角我们通常称作角点(corner points),他们具有以下特征: • 轮廓之间的交点; • 对于同一场景,即使视角发生变化,通常具备稳定性质的特征; • 该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化;
二、环境搭建
2.1 部署本项目时所用环境
- 操作系统:Windows10
- python:3.6及以上
- LabVIEW:2018及以上 64位版本
- AI视觉工具包:techforce_lib_opencv_cpu-1.0.0.98.vip
2.2 LabVIEW工具包下载及安装
- AI视觉工具包下载与安装参考: blog.csdn.net/virobotics/...
三、 程序实现Harris角点检测
3.1 原理
Harris角点检测的算法思想是:选取一个固定的窗口在图像上以任意方向的滑动,如果灰度都有较大的变化,那么就认为这个窗口内部存在角。如下图所示:
3.2 python实现Harris角点检测
python
import cv2
import numpy as np
img = cv2.imread('1.jpg') #读取图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#转换成灰度图像
# 输入图像必须是 float32
gray = np.float32(gray)
# 第三个参数为角点检测的敏感度,其值必须介于3~31之间的奇数
# 最后一个参数在 0.04 到 0.06 之间
dst = cv2.cornerHarris(gray,2,3,0.04)
# 设置阈值,将角点绘制出来,阈值根据图像进行选择
img[dst>0.001*dst.max()] = [0,0,255]
cv2.imshow("harris",img)
cv2.waitKey (0) #等待一定时间,让显示内容可以被看到
cv2.destroyAllWindows() #关闭所有显示框
3.3 LabVIEW中实现Harris角点检测
在LabVIEW中实现Harris检测使用的API是:cornerHarris.vi
参数说明:
- src:数据类型为 float32 的输入图像。
- blockSize:角点检测中要考虑的邻域大小。
- ksize:sobel求导使用的核大小
- k :角点检测方程中的自由参数,取值参数为 [0.04,0.06]. 【程序harris_corner.vi】 【结果】
四、项目源码
项目源码下载:download.csdn.net/download/vi...
总结
以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~
如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:LabVIEW机器视觉
如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏