Last active
March 3, 2023 10:30
-
-
Save Nps-rf/f45b83e4e3d1eba713094b42ede90fff to your computer and use it in GitHub Desktop.
Gaussian noise impl. with sharp for augmentation use
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Augmentation noise control | |
const Noise = async (image) => { | |
// image - путь до изображения для наложения шума | |
try { | |
let img = await sharp(image); | |
const metadata = await img.metadata(); | |
const seed = Math.random(); // Рандомное значение для наложения шума | |
console.log(seed) | |
const NoiseBuffer = await sharp({ | |
create: { | |
width: metadata.width, | |
height: metadata.height, | |
channels: 3, | |
noise: { | |
type: 'gaussian', | |
mean: 400 * (1 + seed), // (среднее значение) устанавливает центр распределения шума, т.е. величину, вокруг которой будет распределяться сгенерированный шум. | |
sigma: 200 * (1 + seed) // (стандартное отклонение) определяет меру разброса значений шума относительно среднего значения. Чем больше sigma, тем больше разброс значений шума вокруг среднего значения, т.е. тем более шумное изображение получится. | |
}} | |
}).toBuffer(); | |
img = await img.composite([{ | |
input: NoiseBuffer, | |
blend: 'multiply', | |
raw: { | |
width: metadata.width, | |
height: metadata.height, | |
channels: 3, | |
} | |
}]) | |
if (metadata.format === 'jpg' || metadata.format === 'jpeg') { | |
await img.jpeg({ | |
quality: 90 | |
}); | |
} | |
else if (metadata.format === 'png') { | |
await img.png({ | |
quality: 90 | |
}); | |
} | |
return img; | |
} | |
catch (e) { | |
console.error(e); | |
} | |
} | |
Noise('test.jpg', 0).then( | |
(img) => { | |
img.toFile('temp.jpeg') | |
}, | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment