image-js
Version:
Image processing and manipulation in JavaScript
30 lines (28 loc) • 948 B
text/typescript
import type { FastKeypoint } from '../keypoints/getFastKeypoints.js';
/**
* Get the shade the keypoint with given index should have (the color is an indicator
* of the score). The keypoints should be sorted with highest score first.
* @param keypoints - The sorted keypoints.
* @param index - Index of the keypoint.
* @param colors - The colors from which to pick (sorted from brightest to darkest).
* @returns The color the keypoint should have.
*/
export function getKeypointColor(
keypoints: FastKeypoint[],
index: number,
colors: number[][],
): number[] {
const maxScore = keypoints[0].score;
const minScore = (keypoints.at(-1) as FastKeypoint).score;
if (minScore === maxScore) {
return colors[0];
}
const score = keypoints[index].score;
const colorIndex =
colors.length -
1 -
Math.floor(
((colors.length - 1) * (score - minScore)) / (maxScore - minScore),
);
return colors[colorIndex];
}