image-js
Version:
Image processing and manipulation in JavaScript
35 lines (29 loc) • 981 B
text/typescript
import type { OrientedFastKeypoint } from '../getOrientedFastKeypoints.js';
import { getDistanceMatrix } from './getDistanceMatrix.js';
export type DistanceMatrix = Float64Array[];
/**
* Find all keypoints within radius from the current keypoint.
* @param keypoints - Keypoints to process.
* @param radius - Radius in which the surrounding keypoints should be.
* @returns Array of keypoints within radius for each of the keypoints.
*/
export function getKeypointsInRadius(
keypoints: OrientedFastKeypoint[],
radius: number,
): number[][] {
const size = keypoints.length;
const matrix = getDistanceMatrix(keypoints);
const squaredRadius = radius ** 2;
const result: number[][] = [];
for (let i = 0; i < size; i++) {
const currentIndices = [];
for (let j = 0; j < size; j++) {
if (i === j) continue;
if (matrix[i][j] <= squaredRadius) {
currentIndices.push(j);
}
}
result.push(currentIndices);
}
return result;
}