⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imcantosharris.m

📁 detection corner for harris
💻 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 + -