Image Processing Toolbox™ и Deep Learning Toolbox™ предоставляют много возможностей удалять шум из изображений. Простое и быстрое решение должно использовать встроенную предварительно обученную нейронную сеть шумоподавления, названную DnCNN. Однако предварительно обученная сеть не предлагает большой гибкости в типе распознанного шума. Для большей гибкости обучите свою собственную сеть с помощью предопределенных слоев или обучите полностью пользовательскую нейронную сеть шумоподавления.
Можно использовать встроенную предварительно обученную сеть DnCNN, чтобы удалить Гауссов шум без проблем обучения сети. Удаление шума с предварительно обученной сетью имеет эти ограничения:
Удаление шума работает только с 2D одноканальными изображениями. Если у вас есть несколько цветовых каналов, или если вы работаете с 3-D изображениями, удаляете шум путем обработки каждого канала или плоскости отдельно. Для примера смотрите, Удаляют Шум из Цветного изображения Используя Предварительно обученную Нейронную сеть.
Сеть распознает только Гауссов шум с ограниченным диапазоном стандартного отклонения.
Чтобы загрузить предварительно обученную сеть DnCNN, используйте denoisingNetwork
функция. Затем передайте сеть DnCNN и шумное 2D одноканальное изображение к denoiseImage
. Изображение показывает рабочий процесс denoise изображение с помощью предварительно обученной сети DnCNN.
Можно обучить сеть, чтобы обнаружить большую область значений Гауссовых шумовых стандартных отклонений от полутоновых изображений, начиная со встроенных слоев, обеспеченных Image Processing Toolbox. Чтобы обучить сеть шумоподавления использование предопределенных слоев, выполните эти шаги. Схема показывает учебный рабочий процесс в темно-сером поле.
Создайте ImageDatastore
возразите, что хранит нетронутые изображения.
Создайте denoisingImageDatastore
объект, который генерирует шумные обучающие данные от нетронутых изображений. Чтобы указать диапазон Гауссовых шумовых стандартных отклонений, установите GaussianNoiseLevel
свойство. Необходимо использовать значение по умолчанию PatchSize
(50 ) и
ChannelFormat
('grayscale'
) так, чтобы размер обучающих данных совпадал с входным размером сети.
Получите предопределенные слои шумоподавления с помощью dnCNNLayers
функция.
Задайте опции обучения с помощью trainingOptions
(Deep Learning Toolbox) функция.
Обучите сеть, задав datastore шумоподавления изображений как источник данных для trainNetwork
(Deep Learning Toolbox). Для каждой итерации обучения datastore шумоподавления изображений генерирует один мини-пакет обучающих данных путем случайной обрезки нетронутых изображений от ImageDatastore
, затем добавляя случайным образом сгенерированный нулевой средний Гауссов белый шум в каждую закрашенную фигуру изображений. Стандартное отклонение добавленного шума уникально для каждой закрашенной фигуры изображений и имеет значение в диапазоне, указанном GaussianNoiseLevel
свойство шумоподавления отображает datastore.
После того, как вы обучите сеть, передайте сеть и шумное полутоновое изображение к denoiseImage
. Схема показывает рабочий процесс шумоподавления в светло-сером поле.
Чтобы обучить нейронную сеть шумоподавления с максимальной гибкостью, можно использовать пользовательский datastore, чтобы сгенерировать обучающие данные или задать собственную сетевую архитектуру. Например, вы можете:
Обучите сеть, которая обнаруживает большее разнообразие шума, такого как негауссовы шумовые распределения, в одноканальных изображениях. Можно задать сетевую архитектуру при помощи слоев, возвращенных dnCNNLayers
функция. Чтобы сгенерировать учебные изображения, совместимые с этой сетью, используйте transform
и combine
функции к пакетам шумных изображений и соответствующего шумового сигнала. Для получения дополнительной информации смотрите, Предварительно обрабатывают Изображения для Глубокого обучения (Deep Learning Toolbox).
После того, как вы обучите сеть шумоподавления использование архитектуры сети DnCNN, можно использовать denoiseImage
функция, чтобы удалить шум изображения.
Совет
Сеть DnCNN может также обнаружить высокочастотные артефакты изображений, вызванные другими типами искажения. Например, можно обучить сеть DnCNN, чтобы увеличить разрешение изображения или удалить артефакты сжатия JPEG. Разблокирование Изображения JPEG Используя пример Глубокого обучения показывает, как обучить сеть DnCNN, чтобы удалить артефакты сжатия JPEG
Обучите сеть, которая обнаруживает область значений Гауссовых шумовых распределений для цветных изображений. Чтобы сгенерировать учебные изображения для этой сети, можно использовать denoisingImageDatastore
и набор ChannelFormat
свойство к 'rgb'
. Необходимо задать пользовательскую архитектуру сверточной нейронной сети, которая поддерживает изображения входа RGB.
После того, как вы обучите сеть шумоподавления использование пользовательской сетевой архитектуры, можно использовать activations
(Deep Learning Toolbox) функция, чтобы изолировать шумовые или высокочастотные артефакты в искаженном изображении. Затем вычтите шум из искаженного изображения, чтобы получить изображение denoised.
denoisingImageDatastore
| dnCNNLayers
| denoisingNetwork
| trainingOptions
(Deep Learning Toolbox) | trainNetwork
(Deep Learning Toolbox) | denoiseImage
| activations
(Deep Learning Toolbox) | combine
| transform