灰度质心法绘出带方向的标注圆
灰度质心法绘出带方向的标注圆
在给出特征点坐标及领域旋转描述后,在对应位置画圆,并根据旋转信息画出有方向的半径效果如下
clc
clear all
close all
%% 初始化参数
dog = imread("kobi.png");
% 灰度化
dogGray = rgb2gray(dog);
% 角点检测
points = detectHarrisFeatures(dogGray)
% 显示图像
imshow(dog)
% 保持
hold on
% 循环绘制圆形及带方向的半径
for i = 1:points.Count
%不是在圆形绘制,在圆的左上角绘制,所以需要减去半径(20为直径)
rectangle('Position', [int16(points.Location(i , 1)) - 10, int16(points.Location(i , 2)) - 10, 20 ,20], 'Curvature', [1 1],'EdgeColor', 'g','LineWidth',2);
%绘制原点到指定边缘的半径线段
x1 = int16(points.Location(i,1));
y1 = int16(points.Location(i,2));
x2 = int16(points.Location(i,1)) + int16 (10* cos( points.Metric(i) * 10e4 ) );
y2 = int16(points.Location(i,2)) + int16 ( 10* sin( points.Metric(i) * 10e4 ) );
plot([x1 x2], [y1 y2], 'y','LineWidth',2); % 在图像上绘制线
end
hold off