В мире цифровой обработки изображений добавление шума к изображениям может показаться странной задачей. Однако, на практике, это полезный инструмент для тестирования алгоритмов фильтрации, улучшения устойчивости моделей машинного обучения и даже для создания художественных эффектов. В этой статье мы рассмотрим, как добавить цифровой шум к изображениям с помощью языка программирования D.
Основной код
Для начала нам потребуется библиотека для работы с изображениями. В языке D существует библиотека dlib
, которая предоставляет основные функции для манипуляции изображениями. Давайте начнем с простого примера добавления гауссовского шума.
Алгоритм добавления шума
Гауссов шум добавляет к каждому пикселю случайное значение, распределенное по нормальному закону. Вот как это можно сделать на языке D:
import std.stdio;
import std.random;
import std.math;
import std.conv;
import std.range;
import std.algorithm;
import dlib;
void addGaussianNoise(SuperImage img, double mean, double stddev) {
auto rnd = Random(unpredictableSeed);
Color4f pixel;
foreach (y; 0 .. img.height) {
foreach (x; 0 .. img.width) {
pixel = img.opIndex(x, y);
auto noise_int = cast(int)(mean + stddev * uniform01(rnd));
float noise = noise_int / 255.0f;
pixel[0] = min(pixel[0] + noise, 1.0f);
pixel[1] = min(pixel[1] + noise, 1.0f);
pixel[2] = min(pixel[2] + noise, 1.0f);
img.opIndexAssign(pixel, x, y);
// return;
}
}
}
void main() {
auto img = loadImage("input_photo.png");
addGaussianNoise(img, 0.0f, 50.0f);
savePNG(img, "noise_photo.png");
}
Описание кода
- Инициализация шума: Используем функцию uniform01(rnd) для генерации случайных чисел.
- Обход всех пикселей изображения: Для каждого пикселя вычисляем новое значение, добавляя к текущему значению пикселя шум.
- Ограничение значений пикселей: Используем функцию
min
для предотвращения выхода значений пикселей за пределы допустимого диапазона [0, 1]. - Сохранение изображения: Сохраняем измененное изображение на диск.
Примеры применения
Посмотрим на примеры изображений до и после добавления шума.
Исходное изображение
Изображение с шумом
Автор статьи:
Обновлено:
Добавить комментарий