- •Задание
- •Выполнение задание 1: Выполните сглаживание изображений с помощью различных фильтров. Сравните результаты численно и количественно.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 2: Изучите морфологические операции над изображениями, выполните фильтрацию тонких линий с помощью морфологических фильтров.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 3: Работа с подобластями. Измените яркость и контраст заданной части изображения. Впишите в одно изображение другое меньшего размера.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 4: Постройте гистограмму изображения. Примените эквализацию гистограммы.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 5: Используйте преобразование Хау для поиска прямых на изображении.
- •Результаты:
- •Фрагмент кода выполнения
- •Задание 6: По найденным прямым постройте аффинное преобразование и выровняйте изображение.
- •Фрагмент кода выполнения
- •Список используемых источников
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННО АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Институт компьютерных технологий и информационной безопасности
Кафедра Интеллектуальных и Многопроцессорных Систем
ОТЧЕТ
по курсу «Обработка и анализ изображений»
По лабораторной работе № 1
На тему:
«Знакомство с библиотекой OpenCV»
Выполнили студенты группы КТмо1-1:
Шлеев Дмитрий Александрович
Близнюк Даниил Вадимович
Проверил
Шишеня Александр Владимирович
г. Таганрог 2015
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ 2
ЗАДАНИЕ 3
ВЫПОЛНЕНИЕ 3
ЗАДАНИЕ 1: Выполните сглаживание изображений с помощью различных фильтров. Сравните результаты численно и количественно. 3
Результаты: 4
ЗАДАНИЕ 2: Изучите морфологические операции над изображениями, выполните фильтрацию тонких линий с помощью морфологических фильтров. 6
Результаты: 7
ЗАДАНИЕ 3: Работа с подобластями. Измените яркость и контраст заданной части изображения. Впишите в одно изображение другое меньшего размера. 12
Результаты: 13
ЗАДАНИЕ 4: Постройте гистограмму изображения. Примените эквализацию гистограммы. 14
Результаты: 16
ЗАДАНИЕ 5: Используйте преобразование Хау для поиска прямых на изображении. 18
Результаты: 20
ЗАДАНИЕ 6: По найденным прямым постройте аффинное преобразование и выровняйте изображение. 21
ВЫВОД 23
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 23
Задание
Библиотека OpenCV предоставляет высокоуровневый интерфейс для разработки прикладных программ в области машинного зрения. OpenCV включает следующие группы функций: работа с растровыми изображениями и их форматами, работа с видеоданными и их форматами, интерфейс для работы с камерами, машинное обучение с помощью деревьев решений и других моделей, реализация упрощенного оконного интерфейса, операции над векторами и матрицами и другие.
Цель работы: Ознакомиться сAPIпрограммной библиотеки для обработки изображенийOpenCV.
Задание:
Выполните сглаживание изображений с помощью различных фильтров. Сравните результаты численно и количественно.
Изучите морфологические операции над изображениями, выполните фильтрацию тонких линий с помощью морфологических фильтров.
Работа с подобластями. Измените яркость и контраст заданной части изображения. Впишите в одно изображение другое меньшего размера.
Постройте гистограмму изображения. Примените эквализацию гистограммы.
Используйте преобразование Хау для поиска прямых на изображении.
По найденным прямым постройте аффинное преобразование и выровняйте изображение.
Используйте элементы GUIдля управления параметрами функций в предыдущих пунктах.
Все перечисленные пункты должны быть выполнены с помощью библиотеки OpenCV.
Справка по OpenCV:http://docs.opencv.org/doc/tutorials/tutorials.html
Выполнение задание 1: Выполните сглаживание изображений с помощью различных фильтров. Сравните результаты численно и количественно.
Сглаживание изображений выполняется функцией cvSmooth():
CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,
int smoothtype CV_DEFAULT(CV_GAUSSIAN),
int size1 CV_DEFAULT(3),
int size2 CV_DEFAULT(0),
double sigma1 CV_DEFAULT(0),
double sigma2 CV_DEFAULT(0));
src — исходная картинка для обработки
dst — картинка для сохранения результата операции
smoothtype — тип сглаживания:
CV_BLUR_NO_SCALE — суммирование без масштабирования size1 x size2
CV_BLUR — суммирование с масштабированием 1/size1 x size2
CV_GAUSSIAN — свёртка изображения с гауссовым ядром size1 x size2
CV_MEDIAN — поиск среднего значения в окрестности size1 x size2
CV_BILATERAL — двусторонняя фильтрация окрестности size1 x size2 с цветовой сигмой = sigma1 и пространственной сигмой = sigma2 (для квадратной окрестности, т.е. size1 = size2)
size1 — размер области сглаживания (чем больше, тем сильнее сглаживание)
size2 — (при Гауссиане можно не задавать (0), тогда он будет равен size1)
sigma1 — при Гауссиане задаёт параметр отклонения g.
Результаты:
Рис. 1. Сглаживание
Рис. 2. Численное сравнение оригинала и обработанного изображения
Фрагмент кода выполнения
Подключение библиотек и инициализация основной картинки:
#include <stdio.h>
#include <tchar.h>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#pragma comment (lib, "opencv_core2410d.lib")
#pragma comment (lib, "opencv_highgui2410d.lib")
#pragma comment (lib, "opencv_imgproc2410d.lib")
#define FILENAME "aria.jpg"
Код задания
cv::Mat src;
cv::Mat dst;
int morph_elem = 0;
int morph_size = 0;
int morph_operator = 0;
int const max_operator = 4;
int const max_elem = 2;
int const max_kernel_size = 21;
void MorphOperations(int, void*);
int _tmain(int argc, _TCHAR* argv[])
{
// Создание окон
cv::namedWindow("Original Picture", CV_WINDOW_AUTOSIZE);
cv::namedWindow("Homogeneous Blur", CV_WINDOW_AUTOSIZE);
cv::namedWindow("Gaussian Blur", CV_WINDOW_AUTOSIZE);
cv::namedWindow("Median Blur", CV_WINDOW_AUTOSIZE);
cv::namedWindow("Bilateral Filter", CV_WINDOW_AUTOSIZE);
src = cv::imread(FILENAME, 1); // загружаем изображение
if (!src.data) return -1; // проверка
dst = src.clone(); // копируем изображение
imshow("Original Picture", src); // отображаем оригинал
// Применяем фильтр "Homogeneous Blur"
blur(src, dst, cv::Size(5, 5), cv::Point(-1, -1));
imshow("Homogeneous Blur", dst); // отображаем обработанное изображение
// Применяем фильтр "Gaussian blur"
GaussianBlur(src, dst, cv::Size(5, 5), 0, 0);
imshow("Gaussian Blur", dst); // отображаем обработанное изображение
// Применяем фильтр "Median blur"
medianBlur(src, dst, 5);
imshow("Median Blur", dst); // отображаем обработанное изображение
// Применяем фильтр "Bilateral Filter"
bilateralFilter(src, dst, 6, 6 * 2, 6 / 2);
imshow("Bilateral Filter", dst); // отображаем обработанное изображение
cvWaitKey(0);