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