Внимание!
Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 2).К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
Графические фильтры на основе попиксельной обработки изображений (Часть 2)
В этом уроке мы научимся изменять яркость и контрастность изображения.
Пара изображений для примера.

Оригинал

Контрастность + 35
[spoiler]
С первой частью урока можно ознакомиться по ссылке
Яркость
Вот формула, по которой мы будем изменять яркость:
Значения яркости находятся в диапазоне от 0 до 255. Для того, чтобы яркость можно было уменьшать и увеличивать, значения яркости берут в диапазоне от -255 до 255,потом по формуле вычисляют цвет и приводят к диапазону от 0 до 255. Чтобы цвет был в диапазоне от 0 до 255, мы будем использовать функцию ToByte().Создайте класс Brightness и добавьте в него функцию ToByte().
Теперь нужно добавить функцию ProcessImage :
В этой функции мы к каждому пикселю прибавляли одинаковое значение,и тем самым увеличивали яркость!
Контрастность
Реализация контрастности немного сложнее.Чтобы контрастность можно было увеличивать и уменьшать,её значеня берут от -100 до 100,а потом уже значение приводят к диапазону от 0 до 255. Вот формула для её вычисления:
Тут RGB_Channels – это каналы RGB(красный,зелёный,синий).Создайте класс Contrast и добавьте в него функцию ProcessImage :
Готово!
Использование в своих приложениях
• Яркость

Оригинал

Яркость + 85
• Контрастность

Оригинал

Контрастность + 35
Пара изображений для примера.

Оригинал

Контрастность + 35
[spoiler]
С первой частью урока можно ознакомиться по ссылке
Яркость
Вот формула, по которой мы будем изменять яркость:
|
Значения яркости находятся в диапазоне от 0 до 255. Для того, чтобы яркость можно было уменьшать и увеличивать, значения яркости берут в диапазоне от -255 до 255,потом по формуле вычисляют цвет и приводят к диапазону от 0 до 255. Чтобы цвет был в диапазоне от 0 до 255, мы будем использовать функцию ToByte().Создайте класс Brightness и добавьте в него функцию ToByte().
|
Теперь нужно добавить функцию ProcessImage :
|
В этой функции мы к каждому пикселю прибавляли одинаковое значение,и тем самым увеличивали яркость!
Контрастность
Реализация контрастности немного сложнее.Чтобы контрастность можно было увеличивать и уменьшать,её значеня берут от -100 до 100,а потом уже значение приводят к диапазону от 0 до 255. Вот формула для её вычисления:
|
Тут RGB_Channels – это каналы RGB(красный,зелёный,синий).Создайте класс Contrast и добавьте в него функцию ProcessImage :
|
Готово!
Использование в своих приложениях
• Яркость
|

Оригинал

Яркость + 85
• Контрастность
|

Оригинал

Контрастность + 35
Внимание!
Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 2).К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
1660
26.12.2010
3



.
Перенес в «Новые уроки OpenGL и мультимедиа»