Шумоподавление посредством усреднения изображений. Проблема подавления шума на изображениях и видео и различные подходы к ее решению

Может ухудшить степень детальности ваших цифровых или плёночных фотографий, поэтому подавление этого шума может значительно улучшить итоговое изображение или отпечаток. Проблема в том, что большинство методов шумоподавления всегда заодно размывает изображение. Некоторое сглаживание может быть приемлемо для изображений, на которых господствует вода или небо, но листва в пейзажах может пострадать даже от наиболее осторожных попыток подавления шума.

Данная статья сравнивает несколько распространённых методов шумоподавления, а также предлагает альтернативный подход: усреднение нескольких экспозиций с целью подавления шума. Усреднение изображений часто используется в высококлассной астрофотографии, но, вероятно, недоиспользуется в других типах съёмки при малом свете или ночью. Усреднение способно подавить шумы, не разрушив детальность, поскольку оно по сути увеличивает соотношение сигнал-шум (SNR) вашего изображения. Дополнительным выигрышем является то, что усреднение может заодно повысить глубину цветности вашего изображения - за грань возможностей одиночного снимка. Усреднение может также быть особенно полезно для тех, кто хочет сымитировать гладкость ISO 100, если камера позволяет минимум ISO 200 (как, например, большинство цифровых зеркальных камер Nikon).

Концепция

Усреднение изображений работает на основе предположения об абсолютно случайной природе шума в изображении. Соответственно, случайные отклонения от истинных данных в изображении будут последовательно снижаться по мере усреднения возрастающего числа изображений. Если вы сделаете два снимка нейтрально-серого образца, используя одинаковые параметры настройки камеры и при идентичных условиях (температура, освещённость и т.д.), вы сможете получить изображения, похожие на показанные слева.


Вышеприведенный график отражает флюктуации яркости в верхнем и нижнем изображениях синей и красной линиями, соответственно. Горизонтальная черта отражает среднее значение, которое соответствует идеальному виду изображения с нулевым уровнем шума. Заметьте, что колебания красной и синей линий уникальны и независимы. Если мы усредним значения пикселей в каждой из точек графика, мы получим снижение вариативности яркости, как показано ниже:


Несмотря на то, что результат усреднения двух графиков продолжает колебаться относительно идеального среднего, его максимальное отклонение значительно уменьшилось. Визуально это приводит к тому, что образец выглядит более гладко. Усреднение двух изображений обычно даёт уровень шума, соответствующий половинной чувствительности ISO, так что два изображения, снятые при ISO 400, будут сравнимы с одним, снятым при ISO 200, и так далее. В общем, уровень шума падает на квадратный корень от числа усреднённых изображений, то есть для снижения уровня шума вдвое требуется усреднить 4 изображения.

Сравнение шума и детальности

Следующий пример иллюстрирует эффективность усреднения реальных изображений. Следующий снимок был сделан при ISO 1600 на камеру Canon EOS 300D Digital Rebel и демонстрирует сильную зашумленность.

Истинный размер образцов
Оригинал 2 снимка 4 снимка

Заметьте, как усреднение и уменьшает шум, и проявляет детальность для каждого образца. Для сравнения используем лучшие из доступных программ шумоподавления, например, Neat Image :

Оригинал 2 снимка 4 снимка Neat Image Медианный фильтр

Neat Image лучше всех справилась с подавлением шума на гладком небе, но принесла в жертву детали на ветвях и кирпичной стенке. Для выделения оставшихся деталей и улучшения общего ощущения резкости можно использовать повышение резкости, но оно неспособно восстановить утраченную информацию. Медианный фильтр является примитивным методом, который присутствует в большинстве версий Фотошопа. Он подсчитывает значение в каждом пикселе как медиану от всех смежных пикселей. Он эффективен в подавлении очень малого шума, но оставляет нетронутыми более заметные отклонения и при этом исключает попиксельную детальность. В целом, Neat Image является лучшим выбором для ситуаций, когда усреднение снимков невозможно (используется съёмка с рук). В идеале разумно использовать оба подхода: сперва усреднить изображения для максимально возможного повышения SNR, а затем использовать Neat Image, чтобы подавить оставшийся шум:

Оригинал Усреднение: 4 снимка Neat Image Neat Image + усреднение

В программе Neat Image Pro Plus 4.5 использовались
стандартные параметры шумоподавления и «автоподстройка»

Обратите внимание, как комбинация шумоподавления и усреднения способна как сохранить детальность кирпичей, так и сохранить гладкий, малошумный вид. Недостатком метода усреднения является увеличение места, необходимого для хранения (несколько файлов вместо одного) и, вероятно, увеличение времени экспозиции. Усреднение не работает для изображений, которые подвержены линейчатому или структурному шуму. Заметьте, как ярко-белый пиксель в левом нижнем углу снимков не исчез в результате усреднения. Усреднение, в отличие от других снимков, требует отсутствия смещения камеры между экспозициями, а не только во время экспозиции. Таким образом, нужна повышенная осторожность и очень прочный штатив.

Усреднение изображений с использованием слоёв

Adobe Photoshop позволяет относительно быстро усреднить изображения, используя слои. Идея в том, чтобы положить каждое из изображений в отдельный слой и наложить их так, чтобы каждое изображение вносило равный вклад. Если по какой-то причине один из слоёв получает больший вес, чем прочие, эффективность усреднения понизится.

Следует сперва загрузить все усредняемые изображения в Photoshop и затем расположить их в слоях одно над другим в одном проекте. GIMP позволяет открывать изображения непосредственно как слои. После того как все усредняемые изображения оказались в слоях одного проекта, можно приступать собственно к усреднению.

При усреднении следует помнить, что плотность каждого слоя определяет, насколько будет виден слой, лежащий под ним, и то же самое справедливо для всех последующих слоёв. Это означает, что для корректного усреднения четырёх изображений недостаточно будет поставить плотность каждого слоя равной 25%. Вместо этого для нижнего (фонового) слоя нужно задать плотность 100%, для следующего над ним слоя 50%, для слоя над ним 33% и, наконец, для самого верхнего слоя 25%. Это проиллюстрировано ниже:

Когда нужно применять усреднение изображения вместо того, чтобы просто сделать более длинную выдержку при меньшей чувствительности ISO? В следующем наборе ситуаций это может оказаться полезным:

  • Чтобы исключить избыточный структурный шум на длинных выдержках
  • Для камер, у которых нет режима «bulb», предельная длина выдержки обычно составляет 15-30 секунд. В таких случаях два снимка при ISO 800 и 30 секундах дадут грубый эквивалент (как по яркости, так и по уровню шума) одной выдержки 60 секунд при ISO 400. Возможны многие другие комбинации...
  • Для ситуаций, в которых невозможно гарантировать непрерывные выдержки требуемой длины. Например, снимок делается в публичном месте, и требуется малый шум, однако длинная выдержка невозможна, поскольку кадр часто пересекают пешеходы. Можно сделать несколько коротких снимков между их появлением.
  • Чтобы избирательно заморозить движение в малодетальных, быстродвижущихся частях, сохранив при этом малое количество шума в высокодетальных, неподвижных областях. Например, в звёздную ночь с листвой на переднем плане.
  • Чтобы уменьшить шум в тенях (даже на снимках с низким ISO), из которых вы собираетесь впоследствии извлечь детали посредством пост-обработки.

Шум изображения может ухудшить уровень детализации в цифровых или аналоговых фотографиях, и, соответственно, уменьшение шума может значительно улучшить ваше изображение при выводе на экран или печать. Проблема состоит в том, что большинство методов уменьшения или устранения шума всегда в конечном итоге приводят к смягчению изображения.

Некоторое смягчение может быть приемлемо для снимков, на которых по большей части изображена гладкая поверхность воды или небо, но, к примеру, листва деревьев на пейзажах может существенно пострадать даже от минимальных попыток понизить уровень шума.

В этой статье мы сравним несколько общих методов снижения уровня шума, а также опишем альтернативную технику: усреднение нескольких снимков с разной выдержкой, чтобы снизить уровень шума. Усреднение изображения часто применяется для снимков звездного неба, но, возможно, не так хорошо подходит для других типов съемки при малой освещенности и ночью.

При усреднении мы можем уменьшить уровень шума без ущерба для детализации, потому что при этом фактически увеличивается соотношение сигнал-шум (SNR ) вашего изображения. Дополнительным бонусом является то, что усреднение может также увеличить битовую глубину.

Усреднение может также быть полезно для тех, кто хочет имитировать гладкость ISO 100 , но чья камера поддерживает только ISO 200 (как большинство моделей цифровых зеркальных камер Nikon ).

Общая концепция

Усреднение изображений работает, отталкиваясь от того предположения, что шум в вашем изображении является на самом деле случайным. Таким образом, случайные флуктуации выше и ниже фактических данных изображения постепенно убираются, создавая одно среднее изображение из нескольких.

Если бы вы сделали два снимка гладкого серого пятна, используя те же настройки камеры и при одинаковых условиях (температура, освещение и т.д .), то вы бы получили изображения, аналогичные тем, что показаны на графике ниже:

Приведенный выше участок графика представляет в виде синих и красных полос колебания яркости пикселей верхнего и нижнего изображений соответственно. Пунктирная горизонтальная линия представляет собой среднее значение, или то, как бы выглядел этот участок, если бы уровень шума был равен нулю.

Обратите внимание, что и красная, и синяя линии пересекают нулевую отметку вверх и вниз. Если мы возьмем значение пикселя в каждой точке вдоль этой линии, и выведем среднее значение для верхнего и нижнего изображения в этой точке, то изменение яркости будет выглядеть следующим образом:


Даже с учетом того, что график усредненных значений все равно пересекает нулевую отметку, амплитуда максимального отклонения от нее значительно уменьшилась. Визуально, это проявляется в виде сглаживания изображения. Два усредненных изображения, как правило, имеют шум сопоставимый с половиной чувствительности для установок ISO . Поэтому два усредненных изображения, снятых в ISO 400 сопоставимы с одним изображением, снятым с ISO 200 , и так далее.

В общем, величина шума флуктуации уменьшается на величину, равную корню квадратному из количества усредненных изображений. Таким образом, чтобы получить снижение шума в два раза, вам нужно иметь 4 усредненных изображения.

Шум и детализация: сравнение

Следующая ситуация на реальном примере иллюстрирует эффективность усреднения изображений. Данная фотография была сделана при ISO 1600 с помощью Canon EOS 300D Digital Rebel , и на ней наблюдается слишком высокий уровень шума:


Обратите внимание, как усреднение снижает уровень шума и в то же время повышает детализацию для каждой области. Лучше всего использовать для таких задач программы для снижения уровня шума, такие как Neat Image . В следующем сравнении мы привели также результаты, полученные с ее помощью:


Neat Image лучше других приложений подходит для снижения шума на фото неба, но в то же время приводит к потере некоторых мелких деталей в ветвях деревьев или на снимках открытой кирпичной кладки. Для восстановления детализации можно использовать увеличение резкости.

Это улучшит вид изображения, однако увеличение резкости не может восстановить потерянную информацию. Фильтр Медиана — это очень простой метод, доступный в большинстве версий Photoshop . Он рассчитывает значение каждого пикселя, принимая среднее значение всех соседних пикселей.

Этот метод эффективен при удалении незначительного шума, однако он не справляется с большим шумом и устраняет детализацию на уровне пикселей. В целом, Neat Image — это лучший вариант для тех случаев, когда вы не можете использовать усреднение изображения (при ручной съемке ).

В идеале можно использовать комбинацию двух методов: усреднить изображения, чтобы увеличить отношение сигнал-шум, насколько это возможно, а затем применить Neat Image для удаления оставшегося шума:


Снижение шума с помощью Neat Image Pro Plus 4.5 при настройках по умолчанию и «автоматической тонкой настройкой»

Обратите внимание, как после применения обоих методов, нам удалось сохранить четкость вертикальных швов между кирпичами и в то же время добиться низкого уровня шума. К недостаткам метода усреднения относят требования к объему хранимой информации (несколько файлов изображений для одной фотографии ) и, возможно, более длительное время обработки.

Усреднение не срабатывает для изображений, которые имеют шумовую полосатость или шум с фиксированным узором. Обратите внимание, что на приведенном изображении ярко-белые «горячие пиксели » в левом нижнем и верхнем углах так и не исчезли после применения усреднения.

Для усреднения, в отличие от других методов, требуется нулевое смещение. Поэтому следует быть особенно осторожным при применении этой техники, и использовать ее только для снимков, сделанных с жестко закрепленного штатива.

Усреднение изображений в Photoshop с помощью слоев

Выполнение усреднения изображений с помощью слоев выполняется в Adobe Photoshop относительно быстро. Идея состоит в том, чтобы поместить каждое изображение на отдельном слое и смешать их так, чтобы каждый слой включался в финальное изображение равномерно. Если в силу определенных причин один из слоев влияет на финальное изображение больше, чем другие, смешивание изображений не будет столь эффективным.

Для выполнения этой техники сначала нужно загрузить все изображения, которые должны быть усреднены, в Photoshop , а затем скопировать и вставить каждое поверх друг друга так, чтобы они находились в том же самом окне проекта. После того, как это будет сделано, можно начинать усреднение.

Ключевой момент здесь — помнить, что в Photoshop непрозрачность каждого слоя определяет, насколько он «пропускает » нижележащий слой, и то же самое относится к каждому следующему изображению внизу. Это означает, что, например, для правильного усреднения четырех изображений не следует устанавливать непрозрачность каждого слоя на 25%.

Вместо этого непрозрачность нижнего (фонового ) слоя нужно установить на 100%, для слоя поверх него — 50%, следующего — 33%, и, наконец, верхнего слоя — 25%.

Для усреднения любого количества изображений, процент непрозрачности каждого слоя рассчитывается следующим образом:


Когда нужно выполнять усреднение изображений, а не просто установить большую выдержку при низкой скорости ISO ? Ниже приведен перечень случаев, когда более эффективной может оказаться описанная выше процедура:

  • Чтобы убрать слишком сильный шум с фиксированным узором из-за длинной выдержки;
  • Для камер, которые не имеют режима лампы, вы можете ограничить выдержку до 15-30 секунд. Для таких случаев необходимо учитывать следующее: нужно делать два снимка при ISO 800 и выдержке 30 секунд, чтобы они были приблизительно эквивалентны (как по яркости, так и по уровню шума ), и еще один при выдержке 60 секунд и ISO 400 . Возможны и другие комбинации;
  • В ситуациях, когда вы не можете гарантировать прерывание за определенный момент времени без воздействия на аппаратуру захвата или сцену. В качестве примера, можно привести фото, снимаемые в общественном месте, когда вам нужно обеспечить низкий уровень шума, но вы не можете установить достаточно длительную выдержку, потому что напротив объекта съемки постоянно проходят пешеходы. В таком случае вы можете сделать несколько коротких снимков в интервалах между проходами пешеходов;
  • Чтобы выборочно заморозить движущийся объект с низкой детализацией и при этом сохранить низкий уровень шума и высокую детализацию для объектов на фоне, которые движутся медленнее или являются неподвижными. Примером этого является звездная ночь с листвой на переднем плане;
  • Чтобы уменьшить шум в тенях (даже для снимков с низким ISO ), для которых вы хотите позже увеличить детализацию через процесс пост-обработки.

Перевод статьи «NOISE REDUCTION BY IMAGE AVERAGING » был подготовлен дружной командой проекта

Бывают в жизни печальные ситуации, когда света мало, а открыть (сильнее) диафрагму или увеличить выдержку нет возможности. Подразумевается, что "плохой" снимок лучше, чем отсутствующий. Как быть? Терпеть. Или воспользоваться небольшой хитростью - сделать несколько кадров и применить усреднение.

ISO6400, было\стало.

Для начала придется сделать несколько одинаковых (чем больше, тем лучше) снимков.

Один из серии. Как видим, даже в сильно уменьшенном размере количество шума ужасает.

Для усреднения загружаем это все в документ фотошопа в виде слоев.
Если съемка велась с рук, слои нужно выровнять с помощью photomerge, предварительно ( здесь), или с помощью команды Edit - Auto-Align Layers (Редактирование - Автоматически выровнять слои).
Далее, для усреднения, задаем прозрачность слоев: для нижнего 100%, следующего 50%, 33%, 25%, ...

Куда удобнее использовать режим стекинга, особенно при сложении большого количества фотографий.

Открываем фотошоп, и отдаем команду File - Scripts - Load Files into Stack (Файл - Сценарии - Загрузить файлы в стек)
Отмечаем галкой пункт Create Smart Object after Loading Layers (Создать смарт объект при загрузке слоев), опционально - Attempt to Automatically Align Source Images (Попытаться автоматически выровнять исходные изображения).
Таким образом мы получили единую группу или стек. Колдовать с прозрачностью не потребуется, т.к. для проведения вычислений над стеком есть отдельное меню Layer - Smart Objects - Stack Mode (Слои - Смарт объект - Режим стека). При обработке фото и видео имеют значение только два режима - mean (усреднение или среднее арифметическое) и median (медиана), остальные используются при обработке медицинских, научных и криминалистических и снимков и т.д. Если режим стека меняется, вычисления производятся занова (с оригиналом, а не предудыщим результатом).
Рассмотрим 100% кропы с разных участков и сравним результат.

Слева направо: оригинал, медиана, усреднение. Использовался десяток кадров.




Как это работает? В случае режима mean, происходит поканальное сложение яркостей каждого пикселя и результат делится на количество фото. Например: (3+2+1+2+9+3+1)/7=3
В режиме median выбирается среднее сначение из ряда 1,1,2,2 ,3,3,9 - среднее 2. Т.е. сильные единичные перепады не оказывают влияния.
С практической точки зрения это означает что движущиеся объекты оставят след только если они присутствуют на нескольких кадрах серии. Однако mean поборет шумы лучше.

В целом же кропы говорят сами за себя - никакой обработкой единичного кадра не удастся уменьшить шумы столь эффективно, т.к. размер шума в данном примере превосходит размер некоторых деталей.

Когда этот метод применим?
- при съемке с недостаточным освещением на коротких выдержках (нет настройки выдержки или она ограничена фотоаппаратом, нет штатива, нет возможности снимать долго и т.д.)
- при необходимости уменьшить шум на низких iso, к примеру перед активной последующей пост-обработкой.

Где не поможет?
- при съемке движущихся объектов (хотя возможно избирательное удаление шума в неподвижных областях).
- не избавит от постоянной составляющей шума

Регулировка значений интенсивностей

Существует возможность установки значений интенсивностей на изображении с помощью функции imadjust, где указан диапазон интенсивностей результирующего изображения.

Рассмотрим пример увеличения контраста изображения с низким уровнем контрастности путем перераспределения значений данных на весь диапазон .

I = imread("pout.tif"); J = imadjust(I);

Исходное изображение

Imshow(J) figure, imhist(J,64)

На рисунке отображено преобразованное изображение и его гистограмма. Отметим, что в результате усиление контраста изображения, гистограмма заполняет весь диапазон.


Преобразованное изображение и его гистограмма

Описание регулировки границ диапазона

Существует возможность описания диапазона исходных и результирующих значений с использованием функции imadjust. Для этого в функции imadjust в качестве аргумента указываются диапазоны в виде двух векторов. Первый вектор содержит наименьшее и наибольшее значение интенсивностей исходного изображения, которые будут отображены тем диапазоном яркостей, который указан во втором векторе.

Примечание.
Отметим, что значения интенсивностей должны находится в диапазоне между 0 и 1, независимо от формата изображения. Если изображение представлено в формате uint8, диапазон значений содержит 255 градаций, а для изображения в формате - 65535 градаций.

Например, уменьшение контраста изображения достигается за счет уменьшения диапазона интенсивностей. На изображении внизу, пальто человека слишком темное и на нем не видно деталей. Но это можно исправить с помощью функции imadjust, отобразив диапазон исходного изображения в формате uint8 в диапазон преобразованного изображения. Это преобразование значительно расширит динамический диапазон, и улучшит визуальное восприятие темных областей изображения. Отметим также, что все значения интенсивностей выше 51, будут отображаться как 255, т.е. белым цветом.

I = imread("cameraman.tif"); J = imadjust(I,,); imshow(I) figure, imshow(J)


Изображение после преобразования динамического диапазона

Установка ограничений автоматической коррекции

Обычно при использовании функции imadjust необходимо выполнить два основных действия:

  1. Просмотреть гистограмму и определить границы значений интенсивностей.
  2. Описать эти границы для дальнейшего использования в функции imadjust.

Более простой путь для описания этих границ заключается в использовании функции stretchlim.

Эта функция вычисляет гистограмму изображения и определяет границы корректировки диапазона автоматически. Функция stretchlim возвращает эти значения в виде вектора, который используется как аргумент в функции imadjust. Например,

I = imread("rice.png"); J = imadjust(I,stretchlim(I),);

По умолчанию, функция stretchlim использует значения интенсивностей, которые представляют нижнюю 1% (0.01) и верхнюю 1% (0.99) часть диапазона в качестве границ регулировки.

Гамма коррекция

Функция imadjust отображает наименьшие значения еще меньшими, а наибольшие - еще большими. По умолчанию промежуточные значения отображаются линейно. Например, значения интенсивностей, которые находятся посредине диапазона интенсивностей исходного изображения соответствуют тем значениям интенсивностей, которые находятся посредине диапазона преобразованного изображения.

В функции imadjust можно указывать дополнительный аргумент, который описывает степень гамма коррекции. В зависимости от значения гаммы, зависимость между значениями исходного и преобразованного изображения может быть нелинейной. Поэтому значения интенсивностей, которые находятся посредине диапазона интенсивностей исходного изображения не соответствуют тем значениям интенсивностей, которые находятся посредине диапазона преобразованного изображения.

Параметр гамма может принимать значения от 0 до бесконечности. Если гамма равно 1 (по умолчанию), тогда преобразование линейное. Если гамма меньше 1, то диапазон с малыми значениями интенсивности сжимается, а диапазон с большими значениями интенсивности растягивается. Если гамма больше 1, то наоборот - диапазон с малыми значениями интенсивности растягивается, а диапазон с большими значениями интенсивности растягивается.

Сказанное выше продемонстрировано на рисунке. Три кривых преобразования показывают отображение значений интенсивностей при различных значениях гамма - меньше, равно и больше единицы. (На изображении x-координата представляет значения интенсивностей исходного изображения, а y-координата - значения интенсивностей результирующего изображения.)


Отображение трех различных установок гамма-коррекции

Рассмотрим пример гамма коррекции изображения. Отметим, что при использовании функции imadjust диапазоны данных исходного и результирующего изображений описаны в виде пустых матриц. Если они описаны таким образом, т.е. в виде пустых матриц, то функция imadjust использует весь диапазон . Результат применения такого подхода показан на изображении.

Imread("forest.tif") I = ind2gray(X,map); J = imadjust(I,,,0.5); imshow(I) figure, imshow(J)


Изображение до и после применения гамма коррекции

Контрастно-ограниченное адаптивное выравнивание гистограммы

В качестве альтернативы можно использовать функцию histeq, которая выполняет контрастно-ограниченную адаптивную гистограммную эквализацию с использование функции adapthisteq. Функция работает с целым изображением, а функция adapthisteq может работать с небольшими областями изображения. Контраст каждой части изображения повышается, что связано с изменением формы гистограммы. После выполнения выравнивания (эквализации), функция adapthisteq объединяет края локальных областей с применением билинейной интерполяции, исключая искусственно созданные границы.

Во избежание усиления шума на изображениях, можно использовать функцию adapthisteq со специальными параметрами для ограничения контраста, что особенно важно для гомогенных (однородных) областей.

Для иллюстрации рассмотрим использование функции adapthisteq при коррекции контраста на изображении. Исходное изображение имеет низкий контраст, большинство значений интенсивностей сосредоточено в середине диапазона. Функция adapthisteq выполняет равномерное распределение значений интенсивностей вдоль всего диапазона.

I = imread("pout.tif"); J = adapthisteq(I); imshow(I) figure, imshow(J)


Изображение после обработки методом контрастно-ограниченного адаптивного выравнивания гистограммы (и его гистограмма)

Декорреляционное растяжение

Декорреляционное растяжение улучшает соотношение цветов на изображении с учетом корреляционных зависимостей. При улучшении изображений очень важно найти границу улучшения, чтобы чрезмерное улучшение не приводило к возникновению несуществующих деталей. Поэтому целесообразно применять метод декорреляционного растяжения, который реализовывает функция decorrstretch.

В большинстве случаев количество цветов в связке NBANDS на изображении равно трем. Функция decorrelation может применятся независимо от количества цветов в связке.

При преобразовании значений исходных цветов изображения диапазон отображения, в большинстве случаев, увеличивается. Интенсивности цветов каждого пикселя преобразуются в собственное цветовое пространство с ковариационной или корреляционной матрицей с размерностью NBANDSxNBANDS, растягиваются, выравниваются и трансформируются обратно.

Пример декорреляционного растяжения

Применим операции декорреляции и растяжения к некоторым изображениям из библиотеки, которая размещена в директории imdemos системы Matlab. Библиотека включает LANDSAT-изображение небольшой реки в Колорадо. Обработаем это изображение методом декорреляционного растяжения:

  1. Изображение состоит из семи диапазонов, которые должны быть представлены тремя видимыми цветами: A = multibandread("littlecoriver.lan", , ... "uint8=>uint8", 128, "bil", "ieee-le", ... {"Band","Direct",});
  2. Выполняем декорреляционное растяжение: B = decorrstretch(A);
  3. Визуализация результатов: imshow(A); figure; imshow(B)

Сравним два изображения. На исходном изображении сильно преобладает фиолетовый (красно-синий) оттенок, а результирующее изображение имеет более растянутый цветовой диапазон.


Изображение небольшой реки в Колорадо до (слева) и после (справа) декорреляционного растяжения

Покажем разброс цветов разных диапазонов изображения до и после декорреляции и выравнивания:

RA = A(:,:,1); gA = A(:,:,2); bA = A(:,:,3); figure, plot3(rA(:),gA(:),bA(:),"."); grid("on") xlabel("Red (Band 3)"); ylabel("Green (Band 2)"); ... zlabel("Blue (Band 1)") rB = B(:,:,1); gB = B(:,:,2); bB = B(:,:,3); figure, plot3(rB(:),gB(:),bB(:),"."); grid("on") xlabel("Red (Band 3)"); ylabel("Green (Band 2)"); ... zlabel("Blue (Band 1)")


Разброс цветов разных диапазонов изображения до и после декорреляции и выравнивания

Дополнительное линейное растяжение контраста

Сейчас рассмотрим такое же преобразование, но речь будет идти о линейном растяжении контраста, которое применим после декорреляционного растяжения:

Imshow(A); C = decorrstretch(A,"Tol",0.01); figure; imshow(C)

Сравним исходное и преобразованное изображения.


Изображение небольшой реки в Колорадо после декорреляционного растяжения и линейного растяжения контрастов

Линейное растяжение контрастов является еще одним дополнительным средством улучшения после растяжения цветового диапазона изображения. В нашем случае растяжение цветового диапазона касается каждой цветовой составляющей.

Для получения более детальной информации см. описание функции stretchlim.

Примечание.
Линейное растяжение контраста можно применять как отдельную операцию после выполнения декорреляционного растяжения, используя функции stretchlim и imadjust. Это является одним из альтернативных путей, однако, часто не приводит к хорошим результатам для изображений, которые представлены в формате uint8 и uint16. Такой результат объясняется распределением пикселей в диапазоне (или ). Опции функции decorrstretch позволяют обойти это ограничение.

Удаление шума

Цифровые изображения подвержены воздействию различных типов шумов. Существует несколько основных причин появления шума, которые зависят также от способа формирования изображений. Например:

  • Если изображение получено путем сканирования фотографической пленки, то зерна пленки являются источником шума. Появление шума может объяснятся также повреждением самой пленки или вносится сканирующим устройством.
  • Если изображение захвачено в цифровом формате, то механизм формирования данных (CCD-детектор, квантирование) является источником шума.
  • Электронная передача данных изображения также может быть источником шума.

Приложение обеспечивает несколько путей полного или частичного устранения шума на изображениях. Для устранения различных видов шума разработаны различные методы. Среди них

  1. Использование линейной фильтрации;
  2. Использование медианной фильтрации;
  3. Использование адаптивной фильтрации.

Для демонстрации эффекта от работы перечисленных выше методов в приложении существует функция imnoise, которая добавляет на изображение различные типы шума. Рассмотрим примеры использования этой функции.

Использование линейной фильтрации

Линейную фильтрацию можно использовать для удаления шумов определенного типа. Для этого годятся такие фильтры как усредняющий и фильтр Гаусса. Например, усредняющий фильтр используется для удаления зернистости на изображениях. Поскольку значение интенсивности каждого пикселя равно средней интенсивности пикселей окрестности, то это приводит к подавлению зернистости.

Использование медианной фильтрации

Медианная фильтрация похожа на использование усредняющего фильтра, где значение интенсивности каждого пикселя представляет собой усредненное значение интенсивностей пикселей соответствующей окрестности. Во многих случаях использование медианного фильтра при решении задач устранения шума является более эффективным, чем обычное усреднение. Применение медианной фильтрации приводит к меньшим искажениям границ, в сравнении с операцией усреднения. Функция medfilt2 выполняет медианную фильтрацию.

Примечание.
Медианная фильтрация является порядково-статистической фильтрацией и известна еще как ранговая фильтрация. Для более детальной информации см. описание функции ordfilt2.

Рассмотрим пример, в котором сравним использование усредняющего фильтра и функции medfilt2 для удаления шума типа "соль и перец". Влияние этого типа шума заключается в том, что случайно выбранные пиксели стают черными или белыми (т.е. им присваиваются экстремальные значения из существующего диапазона). В обеих случаях размер используемой окрестности равен 3x3.

Использование адаптивной фильтрации

В основе функции wiener2 лежит винеровский фильтр (один из типов линейного фильтра) для адаптивной локальной обработки изображений. Если значение среднеквадратического отклонения интенсивностей пикселей в данной локальной области большое, то wiener2 выполняет небольшое сглаживание. Если же это отклонение небольшое, то область сглаживания больше.

Этот подход часто бывает более эффективным, чем обычная линейная фильтрация. Преимущество адаптивный фильтра еще заключается в том, что он сохраняет края и другие высокочастотные части объектов изображения. Однако, винеровский фильтр требует большего времени для вычислений, чем линейный фильтр.

Функция wiener2 лучше работает с "белым" шумом, например гауссовским. Рассмотрим пример применения функции wiener2 к обработке изображения Сатурна, которое зашумлено гауссовым шумом. Для интерактивной демонстрации фильтрации шума можно использовать nrfiltdemo.

RGB = imread("saturn.png"); I = rgb2gray(RGB); J = imnoise(I,"gaussian",0,0.005); K = wiener2(J,); imshow(J) figure, imshow(K)


Зашумленное изображение (слева) и изображение после фильтрации (справа)

Для демонстрации работы методов устранения шума используются изображения с различными видами зашумленности. Для формирования этих изображений используется функция imnoise. Кстати, изображения, приведенные в этом разделе, сформированы с использованием этой функции.

Изобретение относится к способам удаления шума в изображении и может быть использовано для улучшения качества изображения. Техническим результатом является упрощение удаления шума и повышение качества получаемого цифрового изображения, это достигается тем, что за счет преобразования яркости пикселей изображения с шумом путем решения уравнения диффузии недивергентной формы обеспечивается одновременное подавление шума и сохранение кромок изображения. 2 з.п. ф-лы, 1 ил.

Область техники, к которой относится изобретение

Изобретение относится к способам удаления шума в изображении и может быть использовано для улучшения качества изображения.

Предшествующий уровень техники

К настоящему времени известны различные способы удаления шума в изображении.

Например, в патенте US 6463182, Canon Kabushiki Kaisha, 08.10.2002, G06K 9/40 описывается устройство и способ удаления шума в изображении, в которых данные изображения с искажениями разделяют на блоки и корректируют шум в зависимости от положения каждого пикселя изображения в блоке.

В патенте US 5933540, General Electric Company, 03.08.1999, G06K 9/00 приводится система и способ уменьшения шума и улучшения качества кромок цифрового изображения путем определения фонового значения шума на всем изображении и его удаления с помощью системы фильтров.

Известен способ удаления случайных шумов (патент US 5225915, Xerox Corporation, 06.07.1993, H04N 1/40) за счет применения к данным изображения в качестве фильтра модифицированной функции Лапласа, имеющей максимум на частоте, оптимальной для удаления шума.

Наиболее близким к заявленному изобретению является способ уменьшения шума на изображении, предполагающий использование дифференциальных вычислений (Later, Catte, Morel et al.). В данном способе изображение с шумом преобразовывают параболическим уравнением, в результате чего удаляют шум на изображении, получая изображение без шума. Данный способ выбран в качестве прототипа заявленного изобретения. Недостатком приведенных выше аналогов и прототипа является нестабильность решений математического выражения, описывающего шум, и размывание изображения в результате его применения. Отличие заключается в использовании другого (более простого) уравнения, которое не имеет указанных недостатков и проще в решении.

Сущность изобретения

Задачей заявленного изобретения является создание способа удаления шума на кромках многомерного изображения, позволяющего упростить способ удаления шума, повысить качество получаемого изображения на кромках, а именно сохранить форму кромок, не размывая их.

Поставленная задача решена путем создания способа удаления шума на изображении, включающего в себя этапы, на которых:

Получают от внешнего устройства многомерное изображение с кромками, состоящее из пикселей и имеющее шум;

Определяют в модуле координат яркость пикселей для координат всех пикселей многомерного изображения, где n - количество измерений;

Записывают массив данных яркости пикселей многомерного изображения в память;

Производят в фильтре для всех пикселей многомерного изображения следующие операции:

Задают зависимость яркости пикселей изображения двумерным уравнением диффузии недивергентной формы вида

, (1)

где - релаксационный параметр, - функция от координат пикселей многомерного пространства и релаксационного параметра, k - коэффициент диффузии, , где - параметр сглаживания итогового изображения около кромок, и чем больше значение этого параметра m , тем слабее сглаживание итогового изображения без шума около кромок, - параметр сглаживания итогового изображения без шума в областях, где нет кромок, чем больше значение этого параметра, тем слабее сглаживание итогового изображения без шума в областях, где нет кромок;

Численно решают n-мерное уравнение диффузии (1) с начальным условием , находя решение при значении релаксационного параметра , которое определяет общую степень сглаживания итогового изображения без шума, чем больше эта величина, тем сильнее сглаживается изображение, при этом получают совокупность координат пикселей итогового изображения без шума;

Записывают яркость пикселей итогового изображения без шума в память;

Выводят итоговое изображения без шума на устройство отображения.

Для функционирования способа существенно, чтобы внешнее устройство было выполнено в виде камеры стереозрения, сканера, цифрового фотоаппарата или других аналогичных устройств.

Для функционирования способа желательно, чтобы получали от внешнего устройства многомерное изображение с кромками, имеющее шум в виде нормального распределения.

Техническим результатом заявленного изобретения является упрощение способа удаления шума и повышение качества получаемого изображения за счет преобразования яркости пикселей изображения с шумом путем решения указанного уравнения диффузии, что обеспечивает одновременное подавление шума и сохранение кромок.

Для лучшего понимания настоящего изобретения далее приводится его подробное описание с соответствующими чертежами.

Блок-схема системы для осуществления заявленного способа согласно изобретению изображена на чертеже.

Система для осуществления заявленного способа включает в себя внешнее устройство 1, вычислительное устройство 2 и устройство отображения 3, причем вычислительное устройство 2 содержит память 4, модуль 5 определения яркости и фильтр 6.

Рассмотрим более подробно функционирование согласно заявленному способу.

Сначала получают от внешнего устройства 1 многомерное изображение с кромками, имеющее шум. Определяют в модуле 5 яркость пикселей многомерного изображения, где и n - количество измерений. Записывают массив данных яркости пикселей многомерного изображения в память 4.

Производят в фильтре 6 для всех пикселей многомерного изображения следующие операции:

задают зависимость яркости пикселей многомерного изображения уравнением диффузии вида

,

где - неизвестная функция, t - релаксационный параметр (его значение будет описано ниже), x - координаты пикселя изображения в n -мерном пространстве. Для двумерных изображений размерность пространства (в этом случае можно считать ), для специальных видов изображений размерность может быть больше. В уравнение также входят , В рассматриваемом решении предлагается использовать коэффициент диффузии в виде где . Значение параметра (как и значение m ) влияет на степень сглаживания изображения.

Основной способ использования уравнения диффузии заключается в том, что исходное изображение рассматривается как начальные данные для указанного уравнения при ,

Рассматривая эволюцию решения при увеличении значения параметра t , получают различные сглаженные версии исходного изображения. Таким образом, еще одним неявным параметром фильтра 6 является конечное значение релаксационного параметра, T . Результат работы фильтра 6 есть

Заметим, что поскольку коэффициент диффузии есть нелинейная функция, результат работы фильтра 6 есть нелинейное преобразование исходного изображения. Это делает процесс фильтрации зависимым от изображения. Различные изображения сглаживаются по-разному. Это несколько затрудняет универсальную оценку качества сглаживания.

Для решения указанного выше диффузионного уравнения используют коэффициент диффузии вида Параметр связан с масштабом представления яркости изображения и влияет на характер сглаживания изображения в областях, где нет кромок. При малых значениях параметра сглаживание будет более сильным, чем при больших. В качестве значения этого параметра обычно берут . Параметр m влияет на сглаживание изображения в окрестностях кромок, чем больше значение этого параметра, тем слабее будет сглаживание около кромок. Обычно достаточно использовать значение или . Параметр влияет на общее сглаживание изображения. При увеличении этого параметра увеличивается общее сглаживание исходного изображения. В качестве граничных условий на краях изображения наиболее удобно брать условие .

Исходное изображение дискретизуют на многомерной сетке, получая матрицу яркости изображения .

Численно решают n-мерное уравнение диффузии. Для решения данного уравнения применяют неявную разностную схему с расщеплением с использованием метода дробных шагов. Решение уравнения при получают при помощи решения описываемого ниже разностного уравнения. Один полный цикл решения многомерного разностного уравнения соответствует вычислению решения для значения исходя из значений решения для значения релаксационного параметра . Численная схема допускает грубую оценку решения при любом значении τ за один шаг, для более точных расчетов рекомендуется делать несколько шагов с меньшими значениями τ.

Входными данными для одного шага расчета является матрица яркости изображения при значении параметра . На выходе получим значения яркости при

В качестве предварительного шага вычислим матрицу коэффициентов диффузии Как альтернативный вариант возможно прямое вычисление коэффициента по данной формуле в месте непосредственного использования.

Для сведения решения многомерного разностного уравнения к последовательности одномерных уравнений предлагается использовать расщепление по методу дробных шагов. Здесь n - размерность изображения (пространства).

Один шаг по параметру t для исходного многомерного уравнения предлагается заменить на n последовательных элементарных шагов по отдельным измерениям, где на каждом элементарном шаге решают одномерное уравнение вида

В качестве начальных значений для самого первого подшага берут исходное значение яркости при : Результат вычисления после n подшагов есть искомое значение яркости при

Элементарные шаги по параметру t выбирают равными, например, где - пространственная частота дискретизации для сетки (можно также ввести этот параметр и для вычисления коэффициента диффузии). Значение τ можно задать выражением

Покажем, как решаются полученные одномерные задачи. Получаемые элементарные задачи являются одномерными, т.к. все индексы переменных, кроме являются фиксированными. Поэтому при рассмотрении одной такой задачи отбрасываем постоянные индексы.

Каждая элементарная задача распадается на независимых трехдиагональных систем линейных уравнений относительно имеющая вид где для рассматриваемого случая а граничные условия имеют вид где r - количество узлов сетки (размер изображения в пикселях по данному измерению). Для решения указанной системы линейных уравнений применяют метод прогонки: сначала выполняют прямой ход подстановки: указанные уравнения преобразуют к виду (вычисляются коэффициенты

используют граничное условие слева, при этом где

подставляют последовательно получаемые уравнения в исходную систему

где

После вычисления значений на шаге, используют правое граничное условие и вычисляют Затем выполняют обратную подстановку и по ранее вычисленным значениям получают последовательно и, наконец

error: