流程与opencv的sift.cpp大致一样,但不调用api,图片滤波、HOG、图片缩放等均用Python底层实现
import imageio
# 读取拼接图片
imageA = imageio.imread("11.jpg")
imageB = imageio.imread("22.jpg")
imageA = cv2.resize(imageA, (256, 256))
imageB = cv2.resize(imageB, (256, 256))
tools.ShowPict(imageA)
tools.ShowPict(imageB)
# 把图片拼接成全景图
stitcher = Stitcher()
(result, vis) = stitcher.stitch([imageA, imageB], showMatches=True)
tools.ShowPict(vis)
tools.ShowPict(result)
Python实现sift(包括滤波缩放等),拼接用opencv,DUT图像处理基础大作业
- SIFT 算法的特点
- SIFT 算法可以解决的问题
- SIFT 算法步骤
-
尺度空间极值检测
- 高斯模糊
- 尺度空间理论
- 空间极值点检测(关键点的初步探查)
-
关键点定位
- 关键点的精确定位
- 消除边缘响应
-
关键点的方向分配
- 幅值和角度
- 拟合二次曲线过程
- 关键点结果展示
- 消除重复的关键点
-
关键点特征描述
- 确定计算描述子所需的图像区域
- 将坐标轴旋转为关键点的方向(旋转不变性)
- 梯度直方图的生成(HOG)
- 三线性插值
- 归一化特征向量
-
SIFT特点总结
-
SIFT参考资料
-
关键点匹配
- Lowe's算法
- RANSAC算法
- 匹配结果
-
图像配准
-
配准结果