Внимание!
Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 3).К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
Графические фильтры на основе попиксельной обработки изображений (Часть 3)
В этом уроке мы научимся изменять тон и гамму изображения. Для изменения тона будем использовать цветовую модель HSL.О ней я сейчас расскажу поподробней...
[spoiler]
Цветовая модель HSL
HSL – это цветовая модель, в которой координатами цвета являются Тон(Hue),Насыщенность(Saturation),Светлота(Lightness).
Такие значения принимают цветовые составляющие HSL :
• H — тон [0; 360]
• S — насыщенность [0; 1]
• L — светлота [0; 1]
Вот графическое представление модели HSL:
Для того, чтобы можно было изменять тон, нам нужно будет конвертировать цветовую модель RGB в HSL и обратно. Напишем две фукции :
1) RGB -> HSL
2) HSL -> RGB
Структуры RGB_Color и HSL_Color :
Тон
Когда есть всё необходимое для написания функции корректировки тона,можем браться за дело!Напишем её:
Здесь мы опять использовали класс Filter,написанный нами в 1-ом уроке,и неуправляемые указатели,так как это наилучший способ добиться максимальной производительности в .NET!
Гамма
При повышении гаммы,можно более отчётливо увидеть тёмные участки изображения :
Оригинал
При повышеном значения гаммы.
Для коррекции гаммы,сначала вычисляется таблица значений(RampTable).Таблица состоит из 255 ячеек.А потом в зависимости от значений R,G,B,берутся данные из таблицы и присваиваются пикселю.Значения гаммы находятся в промежутке от 0.0 до 5.0.
Приступим.Создадим класс Gamma,и добавим в него массив байтов(RampTable) :
Теперь в него надо добавить функцию генерации таблицы:
Дальше нам надо добавить главную функцию ProcessImage :
Готово!!!
Использование в своих приложениях
• Тон
Оригинал
Тон = 280
• Gamma
Результат работы программы(скриншоты) я приводил в начале рассказа о гамме!
Удачи!
</cut>
[spoiler]
Цветовая модель HSL
HSL – это цветовая модель, в которой координатами цвета являются Тон(Hue),Насыщенность(Saturation),Светлота(Lightness).
Такие значения принимают цветовые составляющие HSL :
• H — тон [0; 360]
• S — насыщенность [0; 1]
• L — светлота [0; 1]
Вот графическое представление модели HSL:
Для того, чтобы можно было изменять тон, нам нужно будет конвертировать цветовую модель RGB в HSL и обратно. Напишем две фукции :
1) RGB -> HSL
|
2) HSL -> RGB
|
Структуры RGB_Color и HSL_Color :
|
Тон
Когда есть всё необходимое для написания функции корректировки тона,можем браться за дело!Напишем её:
|
Здесь мы опять использовали класс Filter,написанный нами в 1-ом уроке,и неуправляемые указатели,так как это наилучший способ добиться максимальной производительности в .NET!
Гамма
При повышении гаммы,можно более отчётливо увидеть тёмные участки изображения :
Оригинал
При повышеном значения гаммы.
Для коррекции гаммы,сначала вычисляется таблица значений(RampTable).Таблица состоит из 255 ячеек.А потом в зависимости от значений R,G,B,берутся данные из таблицы и присваиваются пикселю.Значения гаммы находятся в промежутке от 0.0 до 5.0.
Приступим.Создадим класс Gamma,и добавим в него массив байтов(RampTable) :
|
Теперь в него надо добавить функцию генерации таблицы:
|
Дальше нам надо добавить главную функцию ProcessImage :
|
Готово!!!
Использование в своих приложениях
• Тон
Оригинал
Тон = 280
|
• Gamma
Результат работы программы(скриншоты) я приводил в начале рассказа о гамме!
|
Удачи!
</cut>
Внимание!
Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 3).К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
13.01.2011 00:00:00
Классный урок!
14.01.2011 00:00:00
молодец, полезный урок!