Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кгизображение.doc
Скачиваний:
13
Добавлен:
11.11.2019
Размер:
2.45 Mб
Скачать

Пилообразное контрастирование

Рис. 1. Функции препарирования типа пилообразное контрастирование

void NotchedContrast(IplLUT* lut) { // Подготовка lookup-таблицы к пилообразному контрастированию     lut->interpolateType = IPL_LUT_INTER; // режим интерполяции     lut->num = 4; // количество ключевых значений     lut->key[0] = 0;     lut->key[1] = 85;     lut->key[2] = 170;     lut->key[3] = 255;     lut->factor[0] = 3; // наклон     lut->factor[1] = 3; // наклон     lut->factor[2] = 3; // наклон     lut->value[0] = 0; // величина сдвига     lut->value[1] = 0; // величина сдвига     lut->value[2] = 0; // величина сдвига }

 

Соляризация

Рис. 1. Функции препарирования типа соляризация

Смысл соляризации заключается в том, что участки исходного изображения, имеющие уровень белого или близкий к нему уровень яркости, после обработки имеют уровень черного. При этом сохраняют уровень черного и участки, имеющие его на исходном изображении. Уровень же белого на выходе приобретают участки, имеющие на входе средний уровень яркости (уровень серого).

void Solarize(IplImage* img, IplLUT* lut) { // Построение гистограммы для нахождения максимумов     iplComputeHisto(img, plut); // Определение максимальной интенсивности     int mx = 255;     while(!lut->value[mx])         mx--; // Подготовка lookup-таблицы к соляризации     lut->interpolateType = IPL_LUT_LOOKUP; // режим интерполяции     lut->num = 257; // количество ключевых значений     for(int i = 0; i < 257; ++i)     {         lut->key[i] = i;         lut->factor[i] = 0; // наклон         lut->value[i] = 4 * int(i - i * i / (double)mx); // величина сдвига     }           lut->key[i] = i; }

 

Эквализация

На первом этапе измеряется гистограмма исходного изображения. Для цифрового изображения, шкала яркостей которого, например, принадлежит целочисленному диапазону 0...255, гистограмма представляет собой таблицу из 256 чисел. Каждое из них показывает количество точек в кадре, имеющих данную яркость. Разделив все числа этой таблицы на общий размер выборки, равный числу используемых точек изображения, получают оценку распределения вероятностей яркости изображения.

На втором этапе выполняется само нелинейное преобразование, обеспечивающее необходимые свойства выходного изображения. При этом вместо неизвестного истинного интегрального распределения используется его оценка, основанная на гистограмме. С учетом этого все методы поэлементного преобразования изображений, целью которых является видоизменение законов распределения, получили название гистограммных методов. В частности, преобразование, при котором выходное изображение имеет равномерное распределение, называется эквализацией (выравниванием) гистограмм.

Характерной чертой многих изображений, получаемых в реальных изображающих системах, является значительный удельный вес темных участков и сравнительно малое число участков с высокой яркостью. Эквализация призвана откорректировать картину, выровняв интегральные площади участков с различными яркостями.

void CTestDoc::Equalize(IplImage* img) { // Создание lookup-таблиц     IplLUT lut[3] ={{256 + 1, NULL, NULL, NULL, IPL_LUT_LOOKUP},         {256 + 1, NULL, NULL, NULL, IPL_LUT_LOOKUP},         {256 + 1, NULL, NULL, NULL, IPL_LUT_LOOKUP}};

// Создание и инициализация массива указателей на lookup-таблицы     IplLUT* plut[3];     plut[0] = &lut[0];     plut[1] = &lut[1];     plut[2] = &lut[2]; // Инициализация членов lookup-таблиц     CreateLUT(plut[0]);     CreateLUT(plut[1]);     CreateLUT(plut[2]); // Построение гистограммы для нахождения максимумов     iplComputeHisto(img, plut); // Эквализация     iplHistoEqualize(img, img, plut); // Удаление членов lookup-таблиц     DeleteLUT(plut[0]);     DeleteLUT(plut[1]);     DeleteLUT(plut[2]); }