image-js
Version:
Image processing and manipulation in JavaScript
43 lines (42 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = topHat;
/**
* This function is the white top hat (also called top hat). In mathematical morphology and digital image processing,
* top-hat transform is an operation that extracts small elements and details from given images.
* The white top-hat transform is defined as the difference between the input image and its opening by some structuring element.
* Top-hat transforms are used for various image processing tasks, such as feature extraction, background equalization, image enhancement, and others. (Wikipedia)
* http://docs.opencv.org/2.4/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html
* @memberof Image
* @instance
* @param {object} [options]
* @param {Array<Array<number>>} [options.kernel] - The kernel can only have ones and zeros. Default: [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
* @param {number} [options.iterations=1] - Number of iterations of the morphological transform
* @return {Image}
*/
function topHat(options = {}) {
let {
kernel = [[1, 1, 1], [1, 1, 1], [1, 1, 1]],
iterations = 1
} = options;
this.checkProcessable('topHat', {
bitDepth: [8, 16],
components: 1,
alpha: 0
});
if (kernel.length % 2 === 0 || kernel[0].length % 2 === 0) {
throw new TypeError('topHat: The number of rows and columns of the kernel must be odd');
}
let newImage = this;
for (let i = 0; i < iterations; i++) {
let openImage = newImage.open({
kernel
});
newImage = openImage.subtractImage(newImage, {
absolute: true
});
}
return newImage;
}