image-js
Version:
Image processing and manipulation in JavaScript
27 lines (25 loc) • 922 B
text/typescript
import type { Stack } from '../../Stack.js';
import type { HistogramOptions } from '../../compute/index.js';
import { checkProcessable } from '../utils/checkProcessable.js';
/**
* Get the sum of all the histograms of the stack's images. If no channel is specified in the options, the images must be GREY.
* @param stack - Stack to process.
* @param options - Histogram options.
* @returns The histogram of the stack.
*/
export function histogram(
stack: Stack,
options: HistogramOptions,
): Uint32Array {
checkProcessable(stack, { bitDepth: [8, 16] });
const { slots = 2 ** stack.bitDepth, channel = 0 } = options;
const result = new Uint32Array(slots);
for (let i = 0; i < stack.size; i++) {
const image = stack.getImage(i);
const histogram = image.histogram({ channel, slots });
for (const [index, value] of histogram.entries()) {
result[index] += value;
}
}
return result;
}