概述
感谢laohu_tiger提供思路。
我们都知道Harris角点检测的方法具有对亮度变换不敏感,旋转不变型等优点,在特征值筛选的一步中筛掉了边缘,那么我们只要保留边缘就可以实现边缘提取了。
代码如下:
clearvars;
close all;
clc;
[filename,pathname]=uigetfile({'*.jpg';'*.png';'*.bmp'});
pic = imread(fullfile(pathname,filename));
if size(pic,3) == 3
pic = rgb2gray(pic);
end
threshold = 10;%可以选择合适的阈值
gs_kernel = fspecial('gaussian',[3 3],1);
pic = imfilter(pic,gs_kernel,'same','replicate');
figure;
imshow(pic);
kernel = [-1,-1,-1;0,0,0;1,1,1];
pic_x = imfilter(pic,kernel,'same','replicate');
pic_x2 = imfilter(pic_x,kernel,'same','replicate');
pic_xy = imfilter(pic_x,kernel','same','replicate');
pic_y = imfilter(pic,kernel','same','replicate');
pic_y2 = imfilter(pic_y,kernel','same','replicate');
pic_line = zeros(size(pic));
M = zeros(2,2);
for flag = 1:numel(pic)
M(1) = pic_x2(flag);
M(2) = pic_xy(flag);
M(3) = pic_xy(flag);
M(4) = pic_y2(flag);
[~,D] = eig(M);
D = diag(D);
D = abs(D);
if any(D>threshold)
pic_line(flag) = 1;
end
end
figure;
imshow(pic_line);
原图:
效果图:
最后
以上就是朴素小鸽子为你收集整理的Harris角点检测变种之边缘提取的全部内容,希望文章能够帮你解决Harris角点检测变种之边缘提取所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复