📄 imcantosharris.m
字号:
function [ptCantos, R, binMaxR] = imCantosHarris(I, KK, TaxaMaximo, ...
PxBorde, Nmax, EspPxl)
% Parametro de sintonia da medida proposta por Harris
% KK = 0.04;%0.06
% Porcentagem do valor maximo que definira o valor do limiar
% TaxaMaximo = 5/100; % 0.005;
% Numero de pixels a eliminar no contorna da imagem R
% PxBorde = 20;
% Numero maximo de puntos caracteristicos seleccionados
% Nmax = 1000;
% Espa珲 minimo entre duas caracteristicas.
%EspPxl = 10;
[ydim, xdim] = size(I);
%mascaras de suavizamento
blur = [1 6 15 20 15 6 1];
blur = blur / sum(blur);
%mascaras direcionais
prefilt = [0.223755 0.552490 0.223755];
derivfilt = [-0.453014 0 0.45301];
%determinando as derivadas en fun玢o dos eixos x e y
fx = conv2( conv2( I, prefilt', 'same' ), derivfilt, 'same' );
fy = conv2( conv2( I, prefilt, 'same' ), derivfilt', 'same' );
fx2 = conv2( conv2( fx .* fx, blur', 'same' ), blur, 'same' );
fy2 = conv2( conv2( fy .* fy, blur', 'same' ), blur, 'same' );
fxy = conv2( conv2( fx .* fy, blur', 'same' ), blur, 'same' );
%determinando a medida de Harris
TrazaG = fx2 + fy2;
DetG = fx2 .* fy2 - fxy .^ 2;
R = DetG - KK*TrazaG.^2;
%eliminando PxBorde pixels dos bordes
R(1:PxBorde,:) = zeros(PxBorde,xdim);
R(ydim-PxBorde+1:ydim,:) = zeros(PxBorde,xdim);
R(:,1:PxBorde) = zeros(ydim,PxBorde);
R(:,xdim-PxBorde+1:xdim) = zeros(ydim,PxBorde);
%determinando o maximo valor da medida R
maxR = max(R(:));
%determinando o limiar como um porcentage do maximo valor de R
thR = TaxaMaximo*maxR;
%determinando os pontos de R que s鉶 maiores que dito limiar e que s鉶
%maximos locais de R
binR = R > thR;
binMaxR = binR & (LocalMaximum(R));
ptMaxR = find(binMaxR(:));
%ordenando os pontos por seu valor respeito a R
[Y,Idx] = sort(-R(ptMaxR));
if (size(Y,1)>Nmax),
Y = Y(1:Nmax);
Idx = Idx(1:Nmax);
end;
%determinando os pontos de distancia minima respeito a outras
%caracteristicas
COL = ceil(ptMaxR(Idx)/ydim);
FIL = rem(ptMaxR(Idx)-1,ydim)+1;
COLm = COL * ones(1,size(COL,1));
FILm = FIL * ones(1,size(FIL,1));
% Matriz das distancias quadradas das caracteristicas
D2 = (COLm - COLm').^2 + (FILm-FILm').^2;
%tomamos os elementos inferiores
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -