Harris角点检测及matlab程序
2015-10-21 18:50
330 查看
Harris角点检测的步骤为:
matlab程序如下:
close all; clear all; clc; img=imread('lena.png'); imshow(img); img = rgb2gray(img); img =double(img); [m n]=size(img); tmp=zeros(m+2,n+2); tmp(2:m+1,2:n+1)=img; Ix=zeros(m+2,n+2); Iy=zeros(m+2,n+2); E=zeros(m+2,n+2); Ix(:,2:n)=tmp(:,3:n+1)-tmp(:,1:n-1); Iy(2:m,:)=tmp(3:m+1,:)-tmp(1:m-1,:); Ix2=Ix(2:m+1,2:n+1).^2; Iy2=Iy(2:m+1,2:n+1).^2; Ixy=Ix(2:m+1,2:n+1).*Iy(2:m+1,2:n+1); h=fspecial('gaussian',[7 7],2); Ix2=filter2(h,Ix2); Iy2=filter2(h,Iy2); Ixy=filter2(h,Ixy); Rmax=0; R=zeros(m,n); for i=1:m for j=1:n M=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)]; R(i,j)=det(M)-0.06*(trace(M))^2; if R(i,j)>Rmax Rmax=R(i,j); end end end re=zeros(m+2,n+2); tmp(2:m+1,2:n+1)=R; img_re=zeros(m+2,n+2); img_re(2:m+1,2:n+1)=img; for i=2:m+1 for j=2:n+1 if tmp(i,j)>0.02*Rmax &&... tmp(i,j)>tmp(i-1,j-1) && tmp(i,j)>tmp(i-1,j) && tmp(i,j)>tmp(i-1,j+1) &&... tmp(i,j)>tmp(i,j-1) && tmp(i,j)>tmp(i,j+1) &&... tmp(i,j)>tmp(i+1,j-1) && tmp(i,j)>tmp(i+1,j) && tmp(i,j)>tmp(i+1,j+1) img_re(i,j)=255; end end end img_re=mat2gray(img_re(2:m+1,2:n+1)); figure,imshow(img_re);
运行结果如下:
相关文章推荐
- matlab中二维小波变换部分函数
- matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)
- fopen user guide in MATLAB
- Matlab之switch-case语句
- Matlab之if-else-end分枝语句
- Matlab之while循环语句
- Matlab之for循环语句
- Matlab字符串函数
- Matlab字符串的基本操作
- Matlab矩阵函数
- Matlab矩阵的运算
- Matlab矩阵的产生
- MATLAB语言中的关系与逻辑运算
- MATLAB系统命令
- MATLAB常用数学函数
- Matlab赋值语句
- Matlab变量及其命名规则
- MATLAB工作环境
- matlab 计算大型距离方阵,distance matrix
- MATLAB中的分类器