SIFT(2)-----高斯模糊

       SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现 。

一维正态分布公式:

       (x-μ)在高斯图像模糊中对应模糊半径,指的是模板元素到模板中心的距离。

           eg: 二维模板大小为m*n,则模板上元素(x,y)对应的高斯公式为:  

  

正态分布主要分布在3σ至-3σ,距离之外的像素可忽略不计,所以,图像处理只需要计算(6σ+1)*(6σ+1)的矩阵作为高斯矩阵模板,且σ值越大,图像越模糊。

图像二维高斯模糊

5*5的高斯模板(σ=0.6):

6.58573e-0060.0004247810.001703540.0004247816.58573e-006
0.0004247810.02739840.1098780.02739840.000424781
0.001703540.1098780.4406550.1098780.00170354
0.0004247810.02739840.1098780.02739840.000424781
6.58573e-0060.0004247810.001703540.0004247816.58573e-006

分离高斯模糊

      如图2.3所示,二维高斯模糊会损失一部分边缘像素,σ值越大,边缘像素损失越多,且二维高斯模糊模板越大,运算量也越大。对二维高斯模糊进行改进,提出了分离高斯模糊。分离高斯模糊就是水平方向进行一维高斯矩阵变换加上竖直方向的一维高斯矩阵变换。

                                           

 

      使用O(n)表示时间复杂度,它是衡量一个算法消耗时间的量度。eg:计算f(x)=x^3+2x^2+5x-6中,随着x的不断趋向极端(即正无穷与负无穷)时,x^3越来越起主导作用,所以我们称这个算法的时间复杂度为O(3) 。

       二维高斯模糊的时间复杂度为O(M*N*m*n) ,分离高斯模糊的时间复杂度为O(M*N*m)+O(M*N*n) ;m,n为高斯矩阵的维数,M,N为二维图像的维数。 

       分离高斯模糊的优点:1、算法的时间复杂度变低,即运算量变小;2、边缘损失的像素变少。

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shi-Tomasi算法(也称为Good-Features-to-Track算法)是一种图像特征检测算法,用于在图像中找到具有良好追踪性的特征点。在图像配准和拼接中,Shi-Tomasi算法可以用来寻找匹配的特征点,从而实现图像的对齐和拼接。 下面是使用Shi-Tomasi算法进行图像配准和拼接的基本步骤: 1. 读取待处理的图片,并将其转换为灰度图像。 2. 对灰度图像进行高斯模糊,以减少噪声干扰。 3. 使用Shi-Tomasi算法检测图像中的角点,得到特征点。 4. 对特征点进行亚像素级别的精确定位。 5. 对两幅图像中的特征点进行匹配,得到相应的匹配点对。 6. 使用RANSAC算法对匹配点对进行筛选,去除误匹配点。 7. 计算图像间的变换矩阵,实现图像的配准。 8. 对配准后的两幅图像进行拼接,得到最终的拼接结果。 在PyCharm中,可以使用OpenCV库来实现Shi-Tomasi算法对图像进行配准和拼接。下面是一个简单的代码示例: ```python import cv2 # 读取两幅待处理的图像 img1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE) img2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE) # 对图像进行高斯模糊 img1 = cv2.GaussianBlur(img1, (5, 5), 0) img2 = cv2.GaussianBlur(img2, (5, 5), 0) # 使用Shi-Tomasi算法检测特征点 corners1 = cv2.goodFeaturesToTrack(img1, 100, 0.01, 10) corners2 = cv2.goodFeaturesToTrack(img2, 100, 0.01, 10) # 对特征点进行亚像素定位 corners1 = cv2.cornerSubPix(img1, corners1, (5, 5), (-1, -1), criteria=(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)) corners2 = cv2.cornerSubPix(img2, corners2, (5, 5), (-1, -1), criteria=(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)) # 对特征点进行匹配 matcher = cv2.DescriptorMatcher_create(cv2.DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING) kps1, descs1 = sift.detectAndCompute(img1, None) kps2, descs2 = sift.detectAndCompute(img2, None) matches = matcher.match(descs1, descs2) # 使用RANSAC算法进行匹配点筛选 src_pts = np.float32([kps1[m.queryIdx].pt for m in matches]).reshape(-1, 1, 2) dst_pts = np.float32([kps2[m.trainIdx].pt for m in matches]).reshape(-1, 1, 2) M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0) # 对图像进行配准和拼接 result = cv2.warpPerspective(img1, M, (img1.shape[1] + img2.shape[1], img1.shape[0])) result[0:img2.shape[0], 0:img2.shape[1]] = img2 # 显示结果 cv2.imshow('Result', result) cv2.waitKey() cv2.destroyAllWindows() ``` 需要注意的是,在使用Shi-Tomasi算法进行图像配准和拼接时,需要根据具体情况对算法参数进行调整,以获得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值