Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 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
1304
26.12.2010
3
Внимание!
Эта публикация перенесена в раздел уроков по адресу Графические фильтры на основе попиксельной обработки изображений (Часть 2). К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.
Перенес в «Новые уроки OpenGL и мультимедиа»