- •Задание
- •Выполнение задание 1: Выполните сглаживание изображений с помощью различных фильтров. Сравните результаты численно и количественно.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 2: Изучите морфологические операции над изображениями, выполните фильтрацию тонких линий с помощью морфологических фильтров.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 3: Работа с подобластями. Измените яркость и контраст заданной части изображения. Впишите в одно изображение другое меньшего размера.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 4: Постройте гистограмму изображения. Примените эквализацию гистограммы.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 5: Используйте преобразование Хау для поиска прямых на изображении.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 6: По найденным прямым постройте аффинное преобразование и выровняйте изображение.
- •Фрагмент кода выполнения
- •Список используемых источников
Результаты:
Рис.8. Результат работы с ROI
Фрагмент кода выполнения
//========================================================================================
#define FILENAME2 "text_aria.jpg"
------------------------------------------------------------------------------------
cv::namedWindow("Region Of Interest", CV_WINDOW_AUTOSIZE);
IplImage *img = cvCloneImage(&(IplImage)dst); // convert
// задаём ROI
int x = 100;
int y = 200;
int width = 200;
int height = 100;
// добавочная величина
int add = 200;
// устанавливаем ROI
cvSetImageROI(img, cvRect(x, y, width, height));
cvAddS(img, cvScalar(add), img);
// сбрасываем ROI
cvResetImageROI(img);
IplImage *addimg = cvLoadImage(FILENAME2, 1); // загружаем изображение
assert(addimg != 0); // проверка
// задаём ROI
x = 300;
y = 0;
width = 150;
height = 100;
// устанавливаем ROI
cvSetImageROI(img, cvRect(x, y, width, height));
// обнулим изображение
cvZero(img);
// копируем изображение
cvCopy(addimg, img);
// сбрасываем ROI
cvResetImageROI(img);
cvShowImage("Region Of Interest", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&addimg);
cvDestroyWindow("Region Of Interest");
//==========================================================================================
Задание 4: Постройте гистограмму изображения. Примените эквализацию гистограммы.
Один из наиболее распространенных дефектов фотографических, сканерных и телевизионных изображений – слабый контраст. Дефект во многом обусловлен ограниченностью диапазона воспроизводимых яркостей. Под контрастомпонимается разность максимального и минимального значений яркости. Контрастность изображения можно повысить за счет изменения яркости каждого элемента изображения и увеличения диапазона яркостей. Существует несколько методов, основанных на вычислении гистограммы.
Для анализа участков изображений можно использовать гистограммы яркости. В книге «Learning OpenCV» приведён хороший рисунок, иллюстрирующий построение гистограмм, я без изменений приведу его ниже.
Из рисунка становится совершенно понятно, как строятся гистограммы. Естественно, что гистограммы (в совокупности с другими методами) можно использовать для распознавания изображений. Для получения гистограммы используется функция cvCreateHist().
Число измерений гистограммы. sizes Массив, содержащий в себе столбцы гистограммы. type Формат гистограммы. CV_HIST_ARRAY или CV_HIST_SPARSE, характеризующие способ хранения гистограммы. ranges Массив диапазонов гистограммы, используемый для определения к какому элементу относится входной пиксель. uniform Флаг однородности. Функция создаёт гистограмму указанного размера и возвращает указатель на созданный объект.
Эквализация гистограмм повышает качество монохромных изображений. Относительно цветных изображений: цветовое пространство HSI очень хорошо подходит для использования эквализации, так как позволяет оперировать более привычными для человека понятиями цветового тона – насыщенностью и интенсивностью. В этой модели цветовой тон Hзадаётся углом относительно оси красного цвета, насыщенностьSхарактеризует чистоту цвета (1означает совершенно чистый цвет, а0соответствует оттенку серого). При нулевом значении насыщенности тон не имеет смысла и не определен.
В RGB-модели, необходимо добавить вертикальную ось светлоты (или интенсивности).
Считается, что для повышения качества цветных изображений наиболее эффективно применять процедуру эквализации к каналу интенсивности.
В результате эквализации гистограммы в большинстве случаев существенно расширяется динамический диапазон изображения, что позволяет отобразить ранее не замеченные детали. Особенно сильно этот эффект проявляется на тёмных изображениях. Кроме того, стоит отметить важную особенность: эквализация гистограммы может выполняться в полностью автоматическом режиме без участия оператора