import type { RgbColor } from 'colord'; import type { Mask } from './Mask.js'; import type { DivideOptions } from './compare/divide.js'; import type { SubtractImageOptions } from './compare/index.js'; import type { MultiplyOptions } from './compare/multiply.js'; import type { HistogramOptions, MeanOptions, MedianOptions, VarianceOptions } from './compute/index.js'; import type { DrawCircleOnImageOptions, DrawLineOnImageOptions, DrawMarkerOptions, DrawPointsOptions, DrawPolygonOnImageOptions, DrawPolylineOnImageOptions, DrawRectangleOptions } from './draw/index.js'; import type { BlurOptions, ConvolutionOptions, DerivativeFilterOptions, FlipOptions, GaussianBlurOptions, GradientFilterOptions, HypotenuseOptions, IncreaseContrastOptions, InvertOptions, LevelOptions, MedianFilterOptions, PixelateOptions } from './filters/index.js'; import type { Point, ResizeOptions, RotateAngle, TransformOptions, TransformRotateOptions } from './geometry/index.js'; import type { ImageMetadata, Resolution } from './load/load.types.js'; import type { BottomHatOptions, CannyEdgeOptions, CloseOptions, DilateOptions, ErodeOptions, MorphologicalGradientOptions, OpenOptions, TopHatOptions } from './morphology/index.js'; import type { ConvertBitDepthOptions, ConvertColorOptions, CopyToOptions, CropAlphaOptions, CropOptions, CropRectangleOptions, ExtractOptions, GreyOptions, PaintMaskOnImageOptions, ThresholdOptions } from './operations/index.js'; import type { ImageColorModel } from './utils/constants/colorModels.js'; export type ImageDataArray = Uint8Array | Uint16Array | Uint8ClampedArray; /** * Bit depth of the image (nb of bits that encode each value in the image). */ export type BitDepth = 1 | 8 | 16; export declare const ImageCoordinates: { readonly CENTER: "center"; readonly TOP_LEFT: "top-left"; readonly TOP_RIGHT: "top-right"; readonly BOTTOM_LEFT: "bottom-left"; readonly BOTTOM_RIGHT: "bottom-right"; }; export type ImageCoordinates = (typeof ImageCoordinates)[keyof typeof ImageCoordinates]; export interface ImageOptions { /** * Number of bits per value in each channel. * @default `8`. */ bitDepth?: BitDepth; /** * Typed array holding the image data. */ data?: ImageDataArray; /** * Color model of the created image. * @default `'RGB'`. */ colorModel?: ImageColorModel; /** * Origin of the image relative to a parent image (top-left corner). * @default `{row: 0, column: 0}` */ origin?: Point; /** * Original resolution decoded from the image. */ resolution?: Resolution; meta?: ImageMetadata; } export interface CreateFromOptions extends ImageOptions { width?: number; height?: number; } export type ImageValues = [number, number, number, number]; export declare class Image { /** * The number of columns of the image. */ readonly width: number; /** * The number of rows of the image. */ readonly height: number; /** * The total number of pixels in the image (width × height). */ readonly size: number; /** * The number of bits per value in each channel. */ readonly bitDepth: BitDepth; /** * The color model of the image. */ readonly colorModel: ImageColorModel; /** * The number of color channels in the image, excluding the alpha channel. * A GREY image has 1 component. An RGB image has 3 components. */ readonly components: number; /** * The total number of channels in the image, including the alpha channel. */ readonly channels: number; /** * Whether the image has an alpha channel or not. */ readonly alpha: boolean; /** * The maximum value that a pixel channel can have. */ readonly maxValue: number; /** * Origin of the image relative to a the parent image. */ readonly origin: Point; /** * Original image resolution. */ readonly originalResolution: Resolution | undefined; readonly meta?: ImageMetadata; /** * Typed array holding the image data. */ private readonly data; /** * Construct a new Image knowing its dimensions. * @param width - Image width. * @param height - Image height. * @param options - Image options. */ constructor(width: number, height: number, options?: ImageOptions); /** * Returns normalized resolution in pixels per centimeter. If resolution unit is unknown, return null. * @returns Object with x and y resolutions in pixel/cm. */ get normalizedResolution(): { x: number; y: number; } | null | undefined; /** * Create a new Image based on the properties of an existing one. * @param other - Reference image. * @param options - Image options. * @returns New image. */ static createFrom(other: Image | Mask, options?: CreateFromOptions): Image; /** * Get all the channels of a pixel. * @param column - Column index. * @param row - Row index. * @returns Channels of the pixel. */ getPixel(column: number, row: number): number[]; getColumn(column: number): number[][]; getRow(row: number): number[][]; /** * Set all the channels of a pixel. * @param column - Column index. * @param row - Row index. * @param value - New color of the pixel to set. */ setPixel(column: number, row: number, value: number[]): void; /** * Set all the channels of a pixel if the coordinates are inside the image. * @param column - Column index. * @param row - Row index. * @param value - New color of the pixel to set. */ setVisiblePixel(column: number, row: number, value: number[]): void; /** * Get all the channels of a pixel using its index. * @param index - Index of the pixel. * @returns Channels of the pixel. */ getPixelByIndex(index: number): number[]; /** * Set all the channels of a pixel using its index. * @param index - Index of the pixel. * @param value - New channel values of the pixel to set. */ setPixelByIndex(index: number, value: number[]): void; /** * Get the value of a specific pixel channel. Select pixel using coordinates. * @param column - Column index. * @param row - Row index. * @param channel - Channel index. * @returns Value of the specified channel of one pixel. */ getValue(column: number, row: number, channel: number): number; /** * Set the value of a specific pixel channel. Select pixel using coordinates. * @param column - Column index. * @param row - Row index. * @param channel - Channel index. * @param value - Value to set. */ setValue(column: number, row: number, channel: number, value: number): void; /** * Set the value of a specific pixel channel. Select pixel using coordinates. * If the value is out of range it is set to the closest extremety. * @param column - Column index. * @param row - Row index. * @param channel - Channel index. * @param value - Value to set. */ setClampedValue(column: number, row: number, channel: number, value: number): void; /** * Get the value of a specific pixel channel. Select pixel using index. * @param index - Index of the pixel. * @param channel - Channel index. * @returns Value of the channel of the pixel. */ getValueByIndex(index: number, channel: number): number; /** * Set the value of a specific pixel channel. Select pixel using index. * @param index - Index of the pixel. * @param channel - Channel index. * @param value - Value to set. */ setValueByIndex(index: number, channel: number, value: number): void; /** * Set the value of a specific pixel channel. Select pixel using index. * If the value is out of range it is set to the closest extremety. * @param index - Index of the pixel. * @param channel - Channel index. * @param value - Value to set. */ setClampedValueByIndex(index: number, channel: number, value: number): void; /** * Get the value of a specific pixel channel. Select pixel using a point. * @param point - Coordinates of the desired pixel. * @param channel - Channel index. * @returns Value of the channel of the pixel. */ getValueByPoint(point: Point, channel: number): number; /** * Set the value of a specific pixel channel. Select pixel using a point. * @param point - Coordinates of the pixel. * @param channel - Channel index. * @param value - Value to set. */ setValueByPoint(point: Point, channel: number, value: number): void; /** * Find the min and max values of each channel of the image. * @returns An object with arrays of the min and max values. */ minMax(): { min: number[]; max: number[]; }; /** * Return the raw image data. * @returns The raw data. */ getRawImage(): { width: number; height: number; data: ImageDataArray; channels: number; bitDepth: BitDepth; }; /** * Fill the image with a value or a color. * @param value - Value or color. * @returns The image instance. */ fill(value: number | number[]): this; /** * Fill one channel with a value. * @param channel - The channel to fill. * @param value - The new value. * @returns The image instance. */ fillChannel(channel: number, value: number): this; /** * Get one channel of the image as an array. * @param channel - The channel to fill. * @returns Array with the channel values. */ getChannel(channel: number): number[]; /** * Fill the alpha channel with the specified value. * @param value - New channel value. * @returns The image instance. */ fillAlpha(value: number): this; /** * Create a copy of this image. * @returns The image clone. */ clone(): Image; /** * Modify all the values of the image using the given callback. * @param cb - Callback that modifies a given value. */ changeEach(cb: (value: number) => number): void; /** * Get the coordinates of a point in the image. The reference is the top-left corner. * @param coordinates - The point for which you want the coordinates. * @param round - Whether the coordinates should be rounded. This is useful when you want the center of the image. * @returns Coordinates of the point in the format [column, row]. */ getCoordinates(coordinates: ImageCoordinates, round?: boolean): Point; /** * Subtract other from an image. * @param other - Image to subtract. * @param options - Inversion options. * @returns The subtracted image. */ subtract(other: Image, options?: SubtractImageOptions): Image; add(other: Image): Image; /** * Multiply image pixels by a constant. * @param value - Value which pixels will be multiplied to. * @param options - Multiply options. * @returns Multiplied image. */ multiply(value: number, options?: MultiplyOptions): Image; /** * Divide image pixels by a constant. * @param value - Value which pixels will be divided to. * @param options - Divide options. * @returns Divided image. */ divide(value: number, options?: DivideOptions): Image; histogram(options?: HistogramOptions): Uint32Array; /** * Compute the mean pixel of an image. * @param options - Mean options. * @returns The mean pixel. */ mean(options?: MeanOptions): number[]; /** * Compute the median pixel of an image. * @param options - Median options. * @returns The median pixel. */ median(options?: MedianOptions): number[]; /** * Compute the variance of each channel of an image. * @param options - Variance options. * @returns The variance of the channels of the image. */ variance(options?: VarianceOptions): number[]; /** * Draw a set of points on an image. * @param points - Array of points. * @param options - Draw points on Image options. * @returns New mask. */ drawPoints(points: Point[], options?: DrawPointsOptions): Image; /** * Draw a line defined by two points onto an image. * @param from - Line starting point. * @param to - Line ending point. * @param options - Draw Line options. * @returns The mask with the line drawing. */ drawLine(from: Point, to: Point, options?: DrawLineOnImageOptions): Image; /** * Draw a rectangle defined by position of the top-left corner, width and height. * @param options - Draw rectangle options. * @returns The image with the rectangle drawing. */ drawRectangle(options?: DrawRectangleOptions): Image; /** * Draw a polyline defined by an array of points on an image. * @param points - Polyline array of points. * @param options - Draw polyline options. * @returns The image with the polyline drawing. */ drawPolyline(points: Point[], options?: DrawPolylineOnImageOptions): Image; /** * Draw a polygon defined by an array of points onto an image. * @param points - Polygon vertices. * @param options - Draw Line options. * @returns The image with the polygon drawing. */ drawPolygon(points: Point[], options?: DrawPolygonOnImageOptions): Image; /** * Draw a circle defined by center and radius onto an image. * @param center - Circle center. * @param radius - Circle radius. * @param options - Draw circle options. * @returns The image with the circle drawing. */ drawCircle(center: Point, radius: number, options?: DrawCircleOnImageOptions): Image; /** * Draw a marker on the image. * @param point - Marker center point. * @param options - Draw marker options. * @returns The image with the marker drawing. */ drawMarker(point: Point, options?: DrawMarkerOptions): Image; /** * Draw markers on the image. * @param points - Markers center points. * @param options - Draw marker options. * @returns The image with the markers drawing. */ drawMarkers(points: Point[], options?: DrawMarkerOptions): Image; split(): Image[]; convertColor(colorModel: ImageColorModel, options?: ConvertColorOptions): Image; convertBitDepth(newDepth: BitDepth, options?: ConvertBitDepthOptions): Image; grey(options?: GreyOptions): Image; copyTo(target: Image, options?: CopyToOptions): Image; threshold(options?: ThresholdOptions): Mask; /** * Crop the input image to a desired size. * @param [options] - Crop options. * @returns The new cropped image. */ crop(options?: CropOptions): Image; /** * Crop an oriented rectangle from the image. * If the rectangle's length or width are not an integers, its dimension is expanded in both directions such as the length and width are integers. * @param points - The points of the rectangle. Points must be circling around the rectangle (clockwise or anti-clockwise) * @param options - Crop options, see {@link CropRectangleOptions} * @returns The cropped image. The orientation of the image is the one closest to the rectangle passed as input. */ cropRectangle(points: Point[], options?: CropRectangleOptions): Image; /** * Crops the image based on the alpha channel * This removes lines and columns where the alpha channel is lower than a threshold value. * @param options - Crop alpha options. * @returns The cropped image. */ cropAlpha(options?: CropAlphaOptions): Image; /** * Extract the pixels of an image, as specified in a mask. * @param mask - The mask defining which pixels to keep. * @param options - Extract options. * @returns The extracted image. */ extract(mask: Mask, options?: ExtractOptions): Image; /** * Paint a mask onto an image and the given position and with the given color. * @param mask - Mask to paint on the image. * @param options - Paint mask options. * @returns The painted image. */ paintMask(mask: Mask, options?: PaintMaskOnImageOptions): Image; blur(options: BlurOptions): Image; pixelate(options: PixelateOptions): Image; directConvolution(kernel: number[][], options?: ConvolutionOptions): Image; /** * Compute direct convolution of an image and return an array with the raw values. * @param kernel - Kernel used for the convolution. * @param options - Convolution options. * @returns Array with the raw convoluted values. */ rawDirectConvolution(kernel: number[][], options?: ConvolutionOptions): Float64Array; separableConvolution(kernelX: number[], kernelY: number[], options?: ConvolutionOptions): Image; /** * Apply a gaussian filter to an image. * @param options - Gaussian blur options. * @returns The blurred image. */ gaussianBlur(options: GaussianBlurOptions): Image; /** * Flip the image. * @param options - Flip options. * @returns The flipped image. */ flip(options?: FlipOptions): Image; /** * Invert the colors of the image. * @param options - Inversion options. * @returns The inverted image. */ invert(options?: InvertOptions): Image; /** * Calculate a new image that is the hypotenuse between the current image and the other. * @param other - Other image. * @param options - Hypotenuse options. * @returns Hypotenuse of the two images. */ hypotenuse(other: Image, options?: HypotenuseOptions): Image; /** * Apply a gradient filter to an image. * @param options - Gradient filter options. * @returns The gradient image. */ gradientFilter(options: GradientFilterOptions): Image; /** * Apply a derivative filter to an image. * @param options - Derivative filter options. * @returns The processed image. */ derivativeFilter(options?: DerivativeFilterOptions): Image; /** * Level the image using the optional input and output value. This function allows you to enhance the image's contrast. * @param options - Level options. * @returns The levelled image. */ level(options?: LevelOptions): Image; /** * Increase the contrast of an image by spanning each channel on the range [0, image.maxValue]. * @param options - Increase contrast options. * @returns The enhanced image. */ increaseContrast(options?: IncreaseContrastOptions): Image; /** * Correct the colors in an image using the reference colors. * @param measuredColors - Colors from the image, which will be compared to the reference. * @param referenceColors - Reference colors. * @returns Image with the colors corrected. */ correctColor(measuredColors: RgbColor[], referenceColors: RgbColor[]): Image; /** * Apply a median filter to the image. * @param options - Options to apply for median filter. * @returns Image after median filter. */ medianFilter(options: MedianFilterOptions): Image; resize(options: ResizeOptions): Image; rotate(angle: RotateAngle): Image; transform(transformMatrix: number[][], options?: TransformOptions): Image; transformRotate(angle: number, options?: TransformRotateOptions): Image; /** * Erode an image. * @param options - Erode options. * @returns The eroded image. */ erode(options?: ErodeOptions): Image; /** * Dilate an image. * @param options - Dilate options. * @returns The dilated image. */ dilate(options?: DilateOptions): Image; /** * Open an image. * @param options - Open options. * @returns The opened image. */ open(options?: OpenOptions): Image; /** * Close an image. * @param options - Close options. * @returns The closed image. */ close(options?: CloseOptions): Image; /** * Top hat of an image. * @param options - Top hat options. * @returns The top-hatted image. */ topHat(options?: TopHatOptions): Image; /** * Bottom hat of an image. * @param options - Bottom hat options. * @returns The bottom-hatted image. */ bottomHat(options?: BottomHatOptions): Image; /** * Apply morphological gradient to an image. * @param options - Morphological gradient options. * @returns The processed image. */ morphologicalGradient(options?: MorphologicalGradientOptions): Image; /** * Apply Canny edge detection to an image. * @param options - Canny edge detection options. * @returns The processed image. */ cannyEdgeDetector(options?: CannyEdgeOptions): Mask; } //# sourceMappingURL=Image.d.ts.map