Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laba1_1_Shleev_Bliznuk.docx
Скачиваний:
21
Добавлен:
26.03.2016
Размер:
947.3 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННО АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Институт компьютерных технологий и информационной безопасности

Кафедра Интеллектуальных и Многопроцессорных Систем

ОТЧЕТ

по курсу «Обработка и анализ изображений»

По лабораторной работе № 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.

Задание:

  1. Выполните сглаживание изображений с помощью различных фильтров. Сравните результаты численно и количественно.

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

  3. Работа с подобластями. Измените яркость и контраст заданной части изображения. Впишите в одно изображение другое меньшего размера.

  4. Постройте гистограмму изображения. Примените эквализацию гистограммы.

  5. Используйте преобразование Хау для поиска прямых на изображении.

  6. По найденным прямым постройте аффинное преобразование и выровняйте изображение.

  7. Используйте элементы 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);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]