OpenCV系列学习之(五)

简介: OpenCV系列学习之(五)

正文之前先声明一下:由于比较忙,一直在忙研究生开学的事情,所以一直没有更新,感觉也很愧疚,有时间也一直比较懒不想更新,所以从现在起决定恢复不定时更新,从而督促自己更好的去运营这个公众号。本公众号定位于人工智能AI相关知识,也把我学习到的一些技术知识比如python、C++、OpenCV等内容做成笔记的形式发表出来,欢迎各位一起交流探讨。也会发一些比赛的相关经验技巧,更好的让后来者去完成比赛,包括计算机二级、三级等等。我研究生的一些心路历程也会发出来,让学弟学妹更好的借鉴从而过好研究生的生涯

PS:本公众号已经可以开通流量主啦,欢迎各位读者点一下小广告让我恰饭哈


一、图像特征

1、Harris角点检测

626f4b1f1a6ee56d99820a70453fd44c.jpg

数学原理如下

16fa5c1f5662fb67c192a6f7c865d590.jpg

其中,w(u,v)是权重。为了化简,先泰勒展开

5dd9a911dbecdde7559563d88d8b8f99.jpg

近似化简

80ea4b719667ea248d9763e838109e98.jpg

把矩阵对角化成为只有特征值x1,x2。当x1、x2都比较大时,则椭圆也比较大。

f2ce9ac3a14aabab5cb12aa7ac867f3a.jpg

4c54c3f6c14a804f329773035b8e4218.jpg

fcc208d473ef79e6c274a5c5dd45626a.jpg

R=x1x2-a*(x1+x2)

当R>0时,为角点,R≈0时,为平坦区;R<0时,为边界点。

算法实现

58fa68ef2a2dc67568c897f7a52c7dc4.jpg

img=cv2.imread('chessboard.jpg')
print('imgage.shape',img.shape)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray=np.float32(gray)
#输入图像必须是 float32 ,最后一个参数在 0.04 到 0.05 之间dst=cv2.cornerHarris(gray,2,3,0.04)
print('dst,shape',dst.shape)
img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
cv2.waitKey(0)图片cv2.destroyAllWindows()

二、图像特征sift(scale inVariant Feature transform)

1、图像尺度空间

0e4a4878ccf276220795a004c082b194.jpg

73a96b70049da445230f625163c48be4.jpg

a0853753beba8f9f4f2ae913e2f7c57a.jpg

c6b77db56379e504ca5ca79a54607d81.jpg

关键点精确定位

dbf90e80ba6d92d1757c677b7fbfcd19.jpg

运用泰勒展开对离散的店进行拟合,最后得到下面点的精确定位的公式。一般书上都是写下面的公式。

b2c6a489d102d1b8d682b1b529e5c09f.jpg

用高斯滤波可能会增加一些边界,所以要消除边界响应。

4bb1dd7b06f30c84934d1a22505745d3.jpg

66dd8000578a322e428fd662fcecfc67.jpg

生成特征描述。一般有个很多个方向,只需要统计8个方向,每个方向45°。

dd07aa98420cce64f0ff04ba0b723d85.jpg

19cda4e9640064afbaf838a9547303d1.jpg

sift算法实现

由于OpenCV3.5之后这个函数有专利保护,所以以后的OpenCV版本都不能用这个函数了。要用的话建议安装opencv3.4.15

1b63ffdc5668a5b4212b49983ccfc628.jpg

OpenCV的Python实现

OpenCV-Python是一个Python绑定库,旨在解决计算机视觉问题。

Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码行表达思想,而不会降低可读性。

与C / C++等语言相比,Python速度较慢。也就是说,Python可以使用C / C++轻松扩展,这使我们可以在C / C++中编写计算密集型代码,并创建可用作Python模块的Python包装器。这给我们带来了两个好处:首先,代码与原始C / C++代码一样快(因为它是在后台工作的实际C++代码),其次,在Python中编写代码比使用C / C++更容易。OpenCV-Python是原始OpenCV C++实现的Python包装器。

OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。

相关文章
|
2月前
|
机器学习/深度学习 存储 数据库
Python3 OpenCV4 计算机视觉学习手册:6~11(5)
Python3 OpenCV4 计算机视觉学习手册:6~11(5)
63 0
|
2月前
|
存储 资源调度 算法
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
114 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
126 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
91 1
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
22 2
|
23天前
|
机器学习/深度学习 开发框架 TensorFlow
### 如何系统化学习OpenCV4
### 如何系统化学习OpenCV4
13 0
|
2月前
|
算法 计算机视觉 Python
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
|
2月前
|
存储 计算机视觉
OpenCV—学习基本绘图
OpenCV—学习基本绘图
|
2月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
127 0
|
2月前
|
算法 计算机视觉 C++
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测