Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 2). К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации. Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
Яркость Вот формула, по которой мы будем изменять яркость:
/*http://esate.ru, Alexei16*/
Pixel[X, Y] = Pixel[X, Y] + Brightness; //где Pixel[X, Y] – это цвет пикселя с координатами X, Y, а Brightness – это значение яркости.
Значения яркости находятся в диапазоне от 0 до 255. Для того, чтобы яркость можно было уменьшать и увеличивать, значения яркости берут в диапазоне от -255 до 255,потом по формуле вычисляют цвет и приводят к диапазону от 0 до 255. Чтобы цвет был в диапазоне от 0 до 255, мы будем использовать функцию ToByte().Создайте класс Brightness и добавьте в него функцию ToByte().
/*http://esate.ru, Alexei16*/
private static byte ToByte(int Val)
{
if (Val > 255) Val = 255;
else if (Val < 0) Val = 0;
return (byte)Val;
}
Теперь нужно добавить функцию ProcessImage :
/*http://esate.ru, Alexei16*/
public static unsafe Bitmap ProcessImage(Filter Main,int Value)
{
for (int I = 0; I < Main.AllPixelsBytes; I += Main.BytesPerPixel)
{
*(Main.Unsafe_IMG_Scan0 + I + 0) = ToByte(*(Main.Unsafe_IMG_Scan0 + I + 0) + Value);//B
*(Main.Unsafe_IMG_Scan0 + I + 1) = ToByte(*(Main.Unsafe_IMG_Scan0 + I + 1) + Value);//G
*(Main.Unsafe_IMG_Scan0 + I + 2) = ToByte(*(Main.Unsafe_IMG_Scan0 + I + 2) + Value);//R
}
Main.UnLock();
return Main.Picture;
}
В этой функции мы к каждому пикселю прибавляли одинаковое значение,и тем самым увеличивали яркость!
Контрастность
Реализация контрастности немного сложнее.Чтобы контрастность можно было увеличивать и уменьшать,её значеня берут от -100 до 100,а потом уже значение приводят к диапазону от 0 до 255. Вот формула для её вычисления:
/*http://esate.ru, Alexei16*/
Bitmap Test1 = Brightness.ProcessImage(new Filter(TestImage),85); //TestImage - это ваше изображение
Оригинал
Яркость + 85
• Контрастность
/*http://esate.ru, Alexei16*/
Bitmap Test1 = Contrast.ProcessImage(new Filter(TestImage),35); //TestImage - это ваше изображение
Оригинал
Контрастность + 35
Понравилась публикация? Сохраните ее, чтобы вернуться к изучению материала!
0 1068
26.12.2010
3
Внимание!
Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 2). К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации. Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
Стоит ли переходить на Windows 10?Windows 10 установлена на каждый 3-й компьютер. Какие плюсы от перехода? DirectX 12 работает только в Windows 10?
Как установить Windows 10?Как бесплатно и легально скачать? Как записать и установить с последними обновлениями?
Сохраните страницу!
Регистрация
Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не
забудьте проверить папку спам.
×
Восстановление пароля
Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш Email. Если код не пришел в течении нескольких минут - проверьте папку спам.
×
Авторизация
Авторизуйтесь с помощью соц. сети или с помощью аккаунта на сайте:
Перенес в «Новые уроки OpenGL и мультимедиа»