Соляризация
Рис. 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;
}
|