Harris角点检测之角点响应函数R

Harris⾓点检测之⾓点响应函数R ⽂章⽬录
1、Harris⾓点检测
1.1 基本概念
⾓点:窗⼝向任意⽅向的移动都导致图像灰度的明显变化。
1.2 数学表达
将图像窗⼝平移[u,v]产⽣灰度变化E(u,v):沧州师专
那么,如何求解平移后的图像灰度I(x+u,y+v),以及灰度变化E(u,v)呢?
将I(x+u, y+v)函数在(x, y)处泰勒展开,得:
则可求得灰度变化:
于是对于局部微⼩的移动量 [u,v],可以近似得到下⾯的表达:
其中M是 2*2 矩阵,可由图像的导数求得:
窗⼝移动导致的图像变化量:实对称矩阵M的特征值分析,记M的特征值为、。
且定义⾓点响应函数R:
2、实现与测试
2.1 代码
# -*- coding: utf-8 -*-
v.i.cfrom pylab import *
from PIL import Image
邯郸pm2.5from PCV.localdescriptors import harris
from scipy.ndimage import filters
def compute_harris_response(im, sigma=3):
# 在⼀幅灰度图像中,对每个像素计算Harris⾓点检测器响应函数
# 计算导数
k = 0.04
imx = zeros(im.shape)
filters.gaussian_filter(im, (sigma, sigma), (0, 1), imx)
imy = zeros(im.shape)
filters.gaussian_filter(im, (sigma, sigma), (1, 0), imy)
# 计算harris矩阵分量
Wxx = filters.gaussian_filter(imx * imx, sigma)
Wxy = filters.gaussian_filter(imx * imy, sigma)
Wyy = filters.gaussian_filter(imy * imy, sigma)
# 计算矩阵的特征值和迹
Wdet = Wxx * Wyy - Wxy ** 2
Wtr = Wxx + Wyy
# 返回像素值为 Harris 响应函数值的⼀幅图像徐州空气质量指数
print(Wdet-(k*Wtr)) # 输出⾓点响应函数R
return Wdet / Wtr  # 此处可消除参数k的影响
# 读⼊图像(读取图像到数组中)
im = array(Image.open('p3.jpg').convert('L'))  # 括号内:读取⼀幅图像,并将其转换成灰度图像
# 检测harris⾓点
harrisim = compute_harris_response(im)
# compute_harris_response(im, sigma):
#    在⼀幅灰度图像中,对每⼀个像素计算Harris⾓点检测器响应函数
#    im:(数组图像)  sigma:标准差默认为3
# Harris响应函数
# print (harrisim)
harrisim1 = 255 - harrisim
figure()
gray()
#画出Harris响应图
subplot(141)
imshow(harrisim1)
print harrisim1.shape
axis('off')
axis('equal')
threshold = [0.01, 0.05, 0.1]
for i, thres in enumerate(threshold):
广安门电影院# enumerate()函数⽤于将⼀个可遍历的数据对象(如列表、元组或字符串)组合为⼀个索引序列,同时列出数据和数据下标,⼀般⽤在for 循环当中        filtered_coords = _harris_points(harrisim, 6, thres)
# get_harris_points(harrisim, min_dist=10, threshold=0.1):
#      从⼀幅Harris 响应图像harrisim中返回⾓点。min_dist 为分割⾓点和图像边界的最少像素数⽬(默认为10)。
#      threshold 为阀值,⼤于阀值的harris响应函数值被认为是可能的⾓点,并在harrism_t矩阵中相应的位置1,其余地⽅置0        subplot(1, 4, i+2)
imshow(im)
print im.shape
plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*') # 标出⾓点
axis('off')
show()
廉洁修身论文
上⾯代码中重写compute_harris_response()函数,以便将⾓点响应函数R输出。
2.2 运⾏结果
(1)输⼊图⽚特征为纹理⾓点丰富:
(2)输⼊图⽚特征为纹理平坦丰富:
(3)输⼊图⽚特征为纹理边缘丰富:
分析:由上⾯三种不同场景的输⼊图⽚所得到的不同运⾏结果,可得出:当输⼊图⽚特征为纹理⾓点丰富时,⾓点响应函数R为⼤数值正数;
当输⼊图⽚特征为纹理平坦丰富时,⾓点响应函数R为⼩数值;
当输⼊图⽚特征为纹理边缘丰富时,⾓点响应函数R为⼤数值负数2.3 参数变化
2.3.1 其他不变,改变k(此时sigma=3)(1)k=0.02
(2)k=0.04
(3)k=0.06
(4)k=0.08

本文发布于:2024-09-22 13:38:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/105030.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   响应函数   数据   灰度   矩阵   变化   计算
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议