2019.1.6

目录

一、SIFT变换

1.1理论

1.2Python程序演示

二、DOG角点检测

三、各种图像特征处理算法

四、图像旋转角度利用sift特征进行匹配


一、SIFT变换

1.1理论

1、生成高斯金字塔

2、生成DOG金字塔(尺度变化的连续性),若s=3,求DOG金字塔中kσ,k^2σ,k^3σ的极值点及角点(求解角点代码及效果:https://blog.csdn.net/abcjennifer/article/details/7639488

3、删除低对比度、不稳定的边缘响应极值点

4、求特征点(余留的极值点)的主方向,为了实现图像旋转不变性。方法是:利用特征点邻域像素的梯度分布特性来确定其方向参数,再利用图像的梯度直方图求取关键点局部结构的稳定方向,最后每个特征点可能得到多个方向。将每个特征点以(x,y,σ,θ)表示,同时确定位置信息,尺度信息和方向信息。

5、生成特征描述

  1. 校正旋转主方向,确保旋转不变性。
  2. 生成描述子,最终形成一个128维的特征向量。方法:以特征点为中心点,去16*16区域,总共有16个种子点(有4个8*8的区域。每个8*8区域生成4个种子点,每个种子点可以有8个方向的梯度强度信息)
  3. 归一化处理,将特征向量长度进行归一化处理,进一步去除光照的影响。

讲解:

http://www.cnblogs.com/wangguchangqing/p/4853263.html

https://blog.csdn.net/abcjennifer/article/details/7639681

代码:

https://blog.csdn.net/abcjennifer/article/details/7639681

1.2Python程序演示

import cv2
import numpy as np
from PIL import Image
#import pdb
#pdb.set_trace()#turn on the pdb prompt
 
#read image
img = cv2.imread('E:\\pyworkspace\\test.jpg',cv2.IMREAD_COLOR)
#if img.empty(): 
#    print("noimage")

cv2.imshow('origin',img);
cv2.waitKey(0)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

 
#SIFT
detector = cv2.xfeatures2d.SIFT_create()
keypoints = detector.detect(gray,None)  #得到特征点
img2 = cv2.drawKeypoints(image=img, outImage=img, keypoints = keypoints, 
                        flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS, color = (51, 163, 236))
#img = cv2.drawKeypoints(gray,keypoints,flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('test',img);
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

配置包注意:

1、下载

2、下载

来自:

若代码为:

import cv2
import numpy as np
from PIL import Image
#import pdb
#pdb.set_trace()#turn on the pdb prompt
 
#read image
img = cv2.imread('E:\\pyworkspace\\test.jpg',cv2.IMREAD_COLOR)
#if img.empty(): 
#    print("noimage")

cv2.imshow('origin',img);
cv2.waitKey(0)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

 
#SIFT
detector = cv2.xfeatures2d.SIFT_create()
keypoints = detector.detect(gray,None)  #得到特征点
img2 = cv2.drawKeypoints(gray,keypoints,img)
#img = cv2.drawKeypoints(gray,keypoints,flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('test',img);
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果为:

来自:https://blog.csdn.net/fb_941219/article/details/83502966 

二、DOG角点检测

来自:

https://blog.csdn.net/abcjennifer/article/details/7639488

三、各种图像特征处理算法

OpenCV中常用的特征检测和提取算法有如下六种:

(1)Harris:用于检测角点;

(2)SIFT:用于检测斑点;

(3)SURF:用于检测斑点;

(4)FAST:用于检测角点;

(5)BRIEF:用于检测斑点;

(6)ORB:表示带方向的FAST算法与具有旋转不变性的BRIEF算法;

详细讲解来自:http://www.yyearth.com/index.php?aid=233

https://www.jianshu.com/p/7504e66e2adf

四、图像旋转角度利用sift特征进行匹配

https://www.cnblogs.com/zyly/p/9646201.html

 

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页