UNPKG

@duetds/date-picker

Version:

Duet Date Picker is an open source version of Duet Design System’s accessible date picker.

98 lines 3.51 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ssim = exports.getOptions = void 0; /** * SSIM External API * * @module main */ var matlab_1 = require("./matlab"); var math_1 = require("./math"); var ssim_1 = require("./ssim"); var originalSsim_1 = require("./originalSsim"); var bezkrovnySsim_1 = require("./bezkrovnySsim"); var downsample_1 = require("./downsample"); var defaults_1 = require("./defaults"); var weberSsim_1 = require("./weberSsim"); var ssimTargets = { fast: ssim_1.ssim, original: originalSsim_1.originalSsim, bezkrovny: bezkrovnySsim_1.bezkrovnySsim, weber: weberSsim_1.weberSsim, }; function validateOptions(options) { Object.keys(options).forEach(function (option) { if (!(option in defaults_1.defaults)) { throw new Error("\"" + option + "\" is not a valid option"); } }); if ('k1' in options && (typeof options.k1 !== 'number' || options.k1 < 0)) { throw new Error("Invalid k1 value. Default is " + defaults_1.defaults.k1); } if ('k2' in options && (typeof options.k2 !== 'number' || options.k2 < 0)) { throw new Error("Invalid k2 value. Default is " + defaults_1.defaults.k2); } if (!(options.ssim in ssimTargets)) { throw new Error("Invalid ssim option (use: " + Object.keys(ssimTargets).join(', ') + ")"); } } function getOptions(userOptions) { var options = __assign(__assign({}, defaults_1.defaults), userOptions); validateOptions(options); return options; } exports.getOptions = getOptions; function validateDimensions(_a) { var pixels1 = _a[0], pixels2 = _a[1], options = _a[2]; if (pixels1.width !== pixels2.width || pixels1.height !== pixels2.height) { throw new Error('Image dimensions do not match'); } return [pixels1, pixels2, options]; } function toGrayScale(_a) { var pixels1 = _a[0], pixels2 = _a[1], options = _a[2]; return [matlab_1.rgb2gray(pixels1), matlab_1.rgb2gray(pixels2), options]; } function toResize(_a) { var pixels1 = _a[0], pixels2 = _a[1], options = _a[2]; var pixels = downsample_1.downsample([pixels1, pixels2], options); return [pixels[0], pixels[1], options]; } function comparison(_a) { var pixels1 = _a[0], pixels2 = _a[1], options = _a[2]; return ssimTargets[options.ssim](pixels1, pixels2, options); } /** * @method ssim - The ssim method. You can call the package directly or through the `ssim` property. * @public * @example import mod = from 'ssim.js'; * mod(imgBuffer1, imgBuffer2); * mod.ssim(imgBuffer1, imgBuffer2); */ function ssim(image1, image2, userOptions) { var start = new Date().getTime(); var options = getOptions(userOptions); var ssimMap = comparison(toResize(toGrayScale(validateDimensions([image1, image2, options])))); var mssim = ssimMap.mssim !== undefined ? ssimMap.mssim : math_1.mean2d(ssimMap); return { mssim: mssim, ssim_map: ssimMap, performance: new Date().getTime() - start, }; } exports.ssim = ssim; exports.default = ssim; //# sourceMappingURL=index.js.map