SIFT尺度不变特征变换

SIFT尺度不变特征变换SIFT简单介绍检测兴趣点匹配描述子SIFT简单介绍能够配合不同的兴趣点检测器,使用包含位置、尺度和方向信息的描述子检测兴趣点将图片转换为.pgm格式,并转换为二进制文件。def process_image(imagename,resultname, params="--edge-thresh 10 --peak-thresh ...
摘要由CSDN通过智能技术生成

SIFT简单介绍

能够配合不同的兴趣点检测器,使用包含位置、尺度和方向信息的描述子

检测兴趣点

将图片转换为.pgm格式,并转换为二进制文件。

def process_image(imagename,resultname,
                  params="--edge-thresh 10 --peak-thresh 5"):
    """ 处理一幅图像,然后将结果保存在文件中 """

    if imagename[-3:] != 'pgm':
        #创建一个pgm文件
        im = Image.open(imagename).convert('L')
        im.save('tmp.pgm')
        imagename = 'tmp.pgm'

    cmmd = str(r"\Code\sift.exe " + imagename + " --output=" + resultname +
               " " + params)
    os.system(cmmd)
    print("processed",imagename,"to",resultname)
    return

此处注意sift.exe文件的位置。

在刚刚创建的二进制文件中应当包含描述子的信息,下面将文件读取到numpy数组中。

#将描述兴趣点的文本文件读取到Numpy的数组中
def read_features_from_file(filename):
    """ 读取特征属性值,然后将其以矩阵的形式返回 """

    f = loadtxt(filename)
    return f[:,:4], f[:,4:] #特征位置,描述子

这样我们就得到了兴趣点的描述子,可以将其可视化。

#在图像上绘制出特征位置
##将参数 circle 的选项设置为 True
## 该函数将使用 draw_circle() 函数绘制出圆圈
## 圆圈的半径为特征的尺度。
def plot_features(im,locs,circle=False):
    """ 显示带有特征的图像
    输入: im(数组图像), locs(每个特征的行、列、尺度和朝向) """

    def draw_circle(c,r):
        t = arange(0,1.01,.01)*2*pi
        x = r * cos(t) + c[0]
        y = r * sin(t) + c[1]
        plot(x,y,"b",linewidth = 2)

        imshow(im)
    if circle:
        for p in locs:
            draw_circle(p[:2],p[2]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值