Дипломная работа: Разработка программного обеспечения для фильтрации растровых изображений

Изменение яркости заключается в изменении интенсивности цвета всех пикселов на заданное значение. Данное преобразование является точечным. Для его реализации добавим в программу класс CBrightCont, производный от класса CDotFilter. Интерфейс класса приведён в листинге 3.6.1

Листинг 3.6.1 – Интерфейс класса CBrightCont. Файл Filter.h

// Яркость/контраст

class CBrightCont: public CDotFilter

{

public:

BOOL Init(int b_offset, int c_offset);

};

Переменные b_offset, c_offset – это объекты, связанные с ползунками, могут принимать положительные и отрицательные значения, что соответствует увеличению или уменьшению яркости/контрастности изображения.

Реализация метода CBrightCont::Init() приведена в листинге 3.6.2 Этот метод инициализирует таблицы преобразования. Сначала выполняется смещение яркости на заданную величину, а затем либо "сжатие", либо "растяжение" диапазона яркости. Причем при сжатии значения яркости изменяются не равномерно, а пропорционально их удаленности от "серой середины", определенной константой CONTRAST_MEDIAN. После преобразования яркости работа по коррекции контрастности происходит со значениями таблицы преобразования, полагая при этом, что они являются индексами в таблице, полученной после коррекции яркости.

Листинг 3.6.2 – Метод CBrightCont::Init().Файл Filter.cpp

// "Серая середина" –уровень 159

#define CONTRAST_MEDIAN 159

BOOL CBrightCont::Init(int b_offset, int c_offset)

{int i=0,//Индекс цвета в таблице преобразований

t=0,//Индекс таблицы

//Индекс цвета, соответствующего нижней границе яркости

t_index=0,

// Индекс цвета, соответствующего верхней границе яркости

b_index=0,

value_offset; //Смещение значения цвета

double value=0.; //Новое значение цвета

//Изменяем яркость

for(i, t=0; t<3; t++)

for(i=0; i<256; i++)

{if(i+b_offset>255) BGRTransTable[t][i]=255;

else if(i+b_offset<0) BGRTransTable[t][i]=0;

else BGRTransTable[t][i]=i+b_offset; }

// Изменяем контрастность

К-во Просмотров: 378
Бесплатно скачать Дипломная работа: Разработка программного обеспечения для фильтрации растровых изображений