среда, июля 20, 2011

Ослабление цветовой составляющей цифрового шума в GIMP

Кто из фотографов не боролся с этими мерзкими сине-красно-желтыми точками после вынужденного увеличения значения ISO во время съемки или экспозиции при raw-конвертации?

(анимированный GIF, демонстрирующий результаты удаления цветовой составляющей цифрового шума)

Поборолся и я всласть.

скачать скрипт

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


Вот, что делает этот скрипт:
  1. Создает копию активного слоя, если выбран параметр "Create new layer", который будет содержать в себе результат работы скрипта. Если параметр "Create new layer" не выбран, результат заменит собой активный слой. Назовем этот слой "рабочим".
  2. Создает маску для "рабочего" слоя, если выбран параметр "Add black mask". Так как неугодный нам шум появляется обычно в темных участках изображения, то маска определяет именно их. Всё попадающее в диапазон от 0 до "Mask Threshold" будет считаться таким темным участком, который маска сделает непрозрачным. Степень размытости маски определяется параметром "Blur Radius".
  3. Разбирает "рабочий" слой на составляющие в выбранной цветовой модели "Color Model"(возможные варианты на данный момент "LAB" и "YCbCr ITU R470") и размывает каналы с цветовыми составляющими при помощи стандартного фильтра GIMP "Selective Gaussian Blur"("Выборочное Гауссово размывание"). Параметры "Blur Radius" и "Blur Delta" соответствуют параметрам этого фильтра.
  4. Собирает изображение и возвращает результат в "рабочий" слой
Рекомендации:
  1. Установка: скачайте скрипт, скопируйте его в каталог, в котором GIMP будет пытаться найти свои скрипты( например, в  $HOME/.gimp-2.6/scripts) и перезапустите GIMP, если он был запущен. После этого, если все сделано правильно, скрипт появится в меню "Filters/Enhance"("Фильтры/Улучшение") с именем "Chroma Denoise". 
  2.  Параметр "Blur Radius" должен быть примерно равным размеру пятен шума в пикселях.
  3. Параметр "Blur Delta" должен быть примерно равным разнице в яркости пятна по отношению к основной картинке.
  4. Поэкспериментируйте со значением параметра "Mask Threshold", чтобы результат работы скрипта не затрагивал те области изображения, которые он не должен затрагивать.
  5. Помните, что "Selective Gaussian Blur" медленнее чем простой "Gaussian Blur" — чем больше значения двух его параметров тем дольше он будет работать.
P. S. Кроме этого скрипта, есть еще масса скриптов и плагинов для подавления различных шумов, самый лучший из них, по-моему, это Wavelet denoise. Не смотря на то, что подобных скриптов много, все они используют простой "Gaussian Blur", что негативно влияет на участки изображения с резкими цветовыми переходами — в этом случае переходы смазываются, приобретая совсем другой цветовой оттенок и ухудшая изображение.

1 комментарий:

Анонимный комментирует...

Да, вот это статья, давно такого не читал, спасибо. Автору респект!