This repository was archived by the owner on Dec 7, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 14
Usage
Oscar edited this page Sep 2, 2020
·
10 revisions
The API is the same on Node and on the browser:
const { mssim, ssim_map, performance } = ssim(imgBuffer1, imgBuffer2, options)For CLI specific usage, check the dedicated page here.
ssim.js takes 2 paths to images and a 3rd optional parameter for additional options:
| Parameter | Type | Required | Browser |
|---|---|---|---|
| imgBuffer1 | String | yes | Buffer of the first image |
| imgBuffer2 | String | yes | Buffer of the second image |
| options | Object | no | See Options |
If you want use the options parameter you can call ssim.js with:
import ssim from 'ssim.js';
const out = ssim('./img1.jpg', './img2.jpg', { downsample: 'fast' })The returned value is an object that contains the mean ssim value (mssim), the time needed to perform the computation (performance) and the ssim window matrix (ssim_map).
ssim_map matrix is of the form:
{
data: Number[],
width: Number,
height: number
}Where:
-
widthandheightdetermine the dimensions of the matrix -
dataholds the values at each position in row-major order
More succinctly:
| Parameter | Type | Description |
|---|---|---|
| mssim | Number | Mean SSIM, the average of all ssim_map values |
| ssim_map | Object | The ssim value at each window |
| performance | Number | The total time to compute SSIM (in milliseconds) |
import ssim from 'ssim.js';
try {
const out = ssim('./img1.jpg', './img2.jpg')
console.log(`SSIM: ${out.mssim} (${out.performance}ms)`)
} catch (err) {
console.error('Error generating SSIM', err);
}You can edit a similar node example here.
You can view a Node and Web SSIM comparison playground here.
You can pass a 3rd parameter containing a plain object and any of the following options:
| Parameter | Default | Description |
|---|---|---|
| windowSize | 11 | window size for the SSIM map |
| k1 | 0.01 | The first stability constant |
| k2 | 0.03 | The second stability constant |
| bitDepth | 8 | The number of bits used to encode each pixel |
| downsample | 'original' |
false / 'original' / 'fast'
|
| ssim | 'weber' |
'original' / 'fast' / 'bezkrovny' / 'weber'
|
- Setting
k1ork2to0will use UQI (Universal Quality Index) since it's a subset of SSIM (when C1 or C2 are 0) - When using
canvasimages will be retrieved as 8 bits/channel. You can use thebitDepthparameter to modify how SSIM computes the value but it will have no effect on how the image is read - There are 3
downsampleoptions:-
false: disables downsizing -
'original': (default) implements the same downsizing than the original Matlab scripts -
'fast': relies on thecanvasto do the downsizing (may lead to different results)
-
- There are 3
ssimoptions:-
'original': Uses a line-by-line port of the Matlab scripts and attempts to match them as closely as possible -
'fast': Uses a mathematically equivalent approach to 'original' but it's computationally faster. -
'bezkrovny': Uses a faster approach that similarly correlates with SSIM but doesn't match the original results exactly. -
'weber': (default) Is the fastest approach. Similar to Bezkrovny's, the results are close to but don't match the original SSIM results.
-