Python基于scipy和PIL的Harris角点检测
来源:互联网 发布:查看数据库字符集 编辑:程序博客网 时间:2024/05/17 22:42
角点检测的原理是基于局部的小窗口完成的,如果该窗口各个方向上移动,窗口内灰度都发生很大变化,即认为发现角点。如果仅在一个方向上变化,其他方向不变,即认为发现边界。在实现过程中,主要分为四个步骤:(1)计算影像在X与Y方向的梯度,一般采用高斯导数求解;(2)计算影像在两个方向的乘机,并进行高斯加权;(3)计算每个像素点Harris响应值。并设定阈值。(4)进行非最大值抑制。本算法,只进行了前三部,作出粗略结果,仅供参考。
# -*- coding:utf-8 -*-import numpyfrom PIL import Imagefrom pylab import *from scipy.ndimage import filtersI=array(Image.open('123.jpg').convert('L'))m,n=I.shapeIx=zeros(I.shape)Iy=zeros(I.shape)filters.gaussian_filter(I,(3,3),(0,1),Ix)#边缘提取filters.gaussian_filter(I,(3,3),(1,0),Iy)Ixx=multiply(Ix,Ix)Iyy=multiply(Iy,Iy)Ixy=multiply(Ix,Iy)Wxx=filters.gaussian_filter(Ixx,3)#高斯模糊Wyy=filters.gaussian_filter(Iyy,3)Wxy=filters.gaussian_filter(Ixy,3)M=zeros([2,2])R=zeros(I.shape)for i in range(m): for j in range(n): M[0,0]=Wxx[i,j] M[1,0]=Wxy[i,j] M[0,1]=Wxy[i,j] M[1,1]=Wyy[i,j] R[i,j]=det(M)-0.06*(trace(M)**2)coord1=[]coord2=[]for i in range(m): for j in range(n): if R[i,j]>3000: coord1.append(i) coord2.append(j)figure()Im=Image.fromarray(I)imshow(I,cmap='gray')plot(coord2,coord1,'r*')axis('off')show()print 'finish'实验结果如下图,本实验未进行非最大值抑制,且设置的阈值5000为根据经验得到,所以结果有待完善。
0 0
- Python基于scipy和PIL的Harris角点检测
- 基于OpenCV的harris角点检测
- python检测Harris角点
- Python 实现Harris 角点检测
- Harris角点检测(Python-OpenCV)
- OpenCV + Python Harris角点检测
- Harris 角点检测
- Harris角点检测
- Harris角点检测
- Harris角点检测
- Harris角点检测
- harris角点检测
- Harris角点检测
- Harris角点检测
- Harris角点检测
- Harris角点检测
- Harris角点检测
- Harris角点检测
- linux 内核编译——修改版本号的一些问题
- GO err is shadowed during return
- adnroid.appwidget.AppWidgetProvider
- 网易编程:寻找所有横,竖,左上到右下,右上到左下,四种方向的所有和
- sdutacm-求二叉树的层次遍历
- Python基于scipy和PIL的Harris角点检测
- jackson annotations注解详解
- B. The Meeting Place Cannot Be Changed
- mysql(基础篇)----mysql 的安装
- 【BZOJ 2002】【HNOI 2010】弹飞绵羊
- 泛型[0]为什么使用泛型
- sdutacm-数据结构实验之求二叉树后序遍历和层次遍历
- iframe自适应子页面高度
- UE4蓝图案例:媒体播放器的开关