OpenCV中使用加速鲁棒特征检测SURF与图像降噪讲解与实战(附源码)

需要源码和图片请点赞关注收藏后评论区留言私信~~~

一、加速鲁棒特征检测

加速鲁棒特征( Speeded Up Robust Features, SURF) 是一种类似SIFT并且由其启发的专利算法。SURF于2006年推出,使用Haar小波变换。SURF 最大的优点是比SIFT更快

SURF算法如下

输入:原始图像

输出:图像的SIFT特征点

方法:

1:如果需要 将图像转换为灰度图像

2:计算不同尺度的积分图像,它是从上到下、从左到右的像素值之和,积分图像代替SIFT中的高斯滤波器

3:定义包含像素位置p和尺度为函数的灰度图像二阶导数的海森矩阵

4:行列式是与方阵有关的值,海森矩阵的行列式对应于点的局部变换,选择具有最大行列式的值

5:尺度由12.3式子定义,并且和SIFT一样,可以定义尺度octaves,SURF通过改变滤波器核心的尺寸来工作,而SIFT则是改变图像的大小,在上一步的缩放和图像空间中插入最大值

6:将Haar小波变换应用于围绕关键点的圆

7:使用滑动窗口对响应求和

8:从响应和中确定方向 

图像的SIFT特征提取

可以看出提取的特征点没有SIFT多 但是运行速度快

 

 部分代码如下

import cv2 as cv
import numpy as np 
 
img = cv.imread('images\lena_color_512.tif',cv.IMREAD_COLOR)
cv.imshow('Lean',img) 
#参数为hessian矩阵的阈值
surf = cv.xfeatures2d.SURF_create(500) 
#设置是否要检测方向
surf.setUpright(True) 
#输出设置值
print(surf.getUpright()) 
#找到关键点和描述符
key_query,ypoints(img,key_query,img) 
#输出描述符的个数
print(surf.descriptorSize()) 
cv.imshow('SURF',img)
cv.waitKey(0)

二、图像降噪

噪声是数据和图像中的常见现象。当然,噪声不是我们想要的,因为它不会为我们的分析增加任何价值。我们通常假设噪声正态分布在零附近。我们认为像素值是真实值和噪声的总和(如果有的话)。我们还假设噪声值是独立的,即一个像素的噪声值与另一个像素无关

一个简单的想法是平均小窗口中的像素,因为我们假设噪声的期望值为零。这就是模糊背后的大体想法。我们可以把这个想法更进一步,在个像素周围定义多个窗口,然后将这些相似的窗口再平均

OpenCV中有一些去噪的函数,通常需要指定滤波器的强度,搜索窗口的大小以及为检测相似性定义的窗口的大小

图像的去噪

结果如下

第二张图片添加了噪声,很明显变得模糊了许多,第三张图片进行去除噪声操作,又变得清晰

 部分代码如下

import cv2 as cv
import numpy as np 

img = cv.imread('images\lena.jpg',cv.IMREAD_COLOR)
cv.imshow('Lean',img) 

Z = img.reshape((-1, 3))
np.random.seed(59)
noise = np.radomandom(Z.shape) < 0.99
noisy = (Z * noise.reshape((img.shape))

cv.imshow('noise Lena',noisy)
cleaned = cv.fasteansDenoisingColored(noisy, None, 10, 7, 7, 21)
cv.imshow('Denoised Lena',cleaned)
cv.waitKey()
cv.destroyAllWindows()

创作不易 觉得有帮助请点赞关注收藏~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值