24小时热门版块排行榜    

查看: 207  |  回复: 1

master200910

铜虫 (初入文坛)

[求助] 哪位高人有SUSAN 角点检测代码?急用,先谢谢啦!

回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

天才在于勤奋
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengxc

木虫 (著名写手)

【答案】应助回帖

★ ★
sunyang1988(金币+2): 谢谢帮助 2011-08-01 14:14:24
master200910(金币+10): 谢谢你的回复。 2011-09-24 15:36:57
master200910(金币+10): 2011-09-27 21:39:18
function [cout,marked_img]=susan(varargin)
%       Syntax :   
%       [cout,marked_img]=susan(I, TR, KR, NR, OP)
%       Input :
%       I -  输入的图像.

%      TR : 亮度阈值 (默认值为 = 20).
%      KR : 核值相似区的半径 (不包括核心) (默认值= 3)
%      NR : 边缘矩阵会在整数范围内正常化(默认值为零即没有正常化)
%      OP : 如果从核值相似区真正删除的像素不是与核直接相邻的(默认值为0即为错误的).

%       Output :
%       cout -  a position pair list of detected corners in the input image.
%       marked_image -  image with detected corner marked.
%
%       Examples
%       -------
%       I = imread('alumgrns.tif');
%       cout = susan(I,[],[],[],[]);
%
%       [cout, marked_image] = susan;
%
%       cout = susan([],[],[]);



[I,TR,KR,NR,OP] = parse_inputs(varargin{:});

if size(I,3)==3
    I=rgb2gray(I); % 将RGB图像转换成灰度图像.
end
tic
[EDG]=edgemap(I,TR,KR,NR,OP);
time_for_detecting_edge=toc
tic
[ANG] = edgedir(EDG, KR, OP);
time_for_detecting_corner=toc

img=EDG;
for i=1:size(cout,1)
    img=mark(img,cout(i,1),cout(i,2),5);
end
marked_img=img;
figure(2)
imshow(marked_img);
title('Detected corners')
imwrite(marked_img,'corner.jpg');

function img1=mark(img,x,y,w)

%[M,N,1]=size(img);
[M,N]=size(img);
img1=img;

img1(max(1,x-floor(w/2)):min(M,x+floor(w/2)),max(1,y-floor(w/2)):min(N,y+floor(w/2)),=...
        (img1(max(1,x-floor(w/2)):min(M,x+floor(w/2)),max(1,y-floor(w/2)):min(N,y+floor(w/2)),<1);
img1(x-floor(w/2)+1:x+floor(w/2)-1,y-floor(w/2)+1:y+floor(w/2)-1,=...
        img(x-floor(w/2)+1:x+floor(w/2)-1,y-
2楼2011-07-31 17:02:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 master200910 的主题更新
信息提示
请填处理意见