русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Эквализация


Дата добавления: 2014-02-04; просмотров: 1519; Нарушение авторских прав


Соляризация

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

Рис. 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]);
}

 



<== предыдущая лекция | следующая лекция ==>
Линейное контрастирование | Выполнение логических операций


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.358 сек.