24
Государственное образовательное учреждение высшего профессионального образования «Московский государственный технический университет имени Н.Э. Баумана» (МГТУ им. Н.Э. Баумана) ФАКУЛЬТЕТ _________Информатика и Системы управления______________ КАФЕДРА ___________Системы автоматического управления_____________ ______________________________________________________________________ РАСЧЁТНО - ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе на тему: _______________Исследование и разработка программного _________________ _______________обеспечения интерполяции изображений__________________ ______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ ______________________________________________________________________ Студент ___________________________ __________________ ___________________ (Подпись, дата) (И.О.Фамилия) Руководитель квалификационной работы __________________ __________________ (Подпись, дата) (И.О.Фамилия) Москва, 2009

Исследование и разработка программного обеспечения интерполяции изображений

Embed Size (px)

DESCRIPTION

В ходе курсовой работы, проведенной на первом семестре магистратуры МГТУ им. Баумана, были исследованы алгоритмы решения задачи интерполяции изображений. Разработаны алгоритмы трех методов решения поставленной задачи. Проведены их экспериментальные исследования в части зависимости производительности от размера изображения и метода обработки. По результатам анализа экспериментов определен наиболее оптимальный алгоритм обработки. Работа была выполнена в конце 2009 года. Исходные коды вложены на GitHub https://github.com/asimkin/20091201_Interpolation. This work was carried out during the first term of the master program «Intelligent Systems and Control» at the Bauman University. In this work, Anatoly researched and developed algorithms for image interpolation. He examined three algorithms and analyzed how their performance depends on the image size and the interpolation method. The coursework was completed at the end of 2009. The source code of this work has been published under the GPL license at GitHub at https://github.com/asimkin/20091201_Interpolation, and research notes at http://www.slideshare.net/asimkin/ss-25037557.

Citation preview

Page 1: Исследование и разработка программного обеспечения интерполяции изображений

Государственное образовательное учреждение высшего профессионального образования

«Московский государственный технический университет имени Н.Э. Баумана»

(МГТУ им. Н.Э. Баумана)

ФАКУЛЬТЕТ _________Информатика и Системы управления______________

КАФЕДРА ___________Системы автоматического управления_____________

______________________________________________________________________

Р А С Ч Ё Т Н О - П О Я С Н И Т Е Л Ь Н А Я З А П И С К А

к курсовой работе на тему:

_______________Исследование и разработка программного_________________

_______________обеспечения интерполяции изображений__________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

______________________________________________________________________

Студент ___________________________ __________________ ___________________ (Подпись, дата) (И.О.Фамилия)

Руководитель квалификационной работы __________________ __________________

(Подпись, дата) (И.О.Фамилия)

Москва, 2009

Page 2: Исследование и разработка программного обеспечения интерполяции изображений

2

Содержание

стр.

Обозначения и сокращения ............................................................................................................................................. 3

Аннотация ................................................................................................................................................................................. 3

Введение .................................................................................................................................................................................... 3

1 Постановка задачи и первичное исследование ................................................................................................ 4

1.1 Постановка задачи ................................................................................................................................................... 4

1.2 Оценка современного состояния решаемой научно-технической проблемы ........................ 4

1.3 Обоснование необходимости проведения работы ................................................................................. 5

1.4 Назначение и цели создания программного обеспечения ................................................................ 5

2 Проектирование ПО ......................................................................................................................................................... 5

2.1 Структура модулей ПО ........................................................................................................................................... 5

2.2 Постановка задачи на реализацию подсистем АС .................................................................................. 6

3 Теоретические исследования ..................................................................................................................................... 6

3.1 Обоснование направления исследований .................................................................................................. 7

3.2 Математическая интерполяция ....................................................................................................................... 8

3.2.1 Определение ....................................................................................................................................................... 8

3.2.2 Методы интерполяции .................................................................................................................................. 9

3.3 Одномерная сплайн-интерполяция ................................................................................................................ 9

3.3.1 Сплайн-функция ............................................................................................................................................... 9

3.3.2 Интерполяция сплайном третьей степени ..................................................................................... 10

3.3.2.1 Линейный сплайн ................................................................................................................................. 11

3.3.2.3 Кубический сплайн .............................................................................................................................. 12

3.4 Двухмерная сплайн-интерполяция ............................................................................................................. 14

3.4.1 Билинейный сплайн .................................................................................................................................... 14

3.4.1.1 Алгоритм ................................................................................................................................................... 14

3.4.1.2 Недостатки метода .............................................................................................................................. 15

3.4.2 Бикубический сплайн ................................................................................................................................. 16

3.4.3 Сравнение билинейной и бикубической интерполяции ........................................................ 17

3.4.4 Билинейное и бикубическое ресемплирование ........................................................................... 18

4 Практические результаты и экспериментальные исследования ....................................................... 18

4.1 Изменение размера изображения ................................................................................................................ 18

4.2 Экспериментальные исследования ............................................................................................................. 19

4.2.1 Описание программного стенда ........................................................................................................... 19

4.2.1.1 Интерфейс программного стенда ..................................................................................................... 20

Page 3: Исследование и разработка программного обеспечения интерполяции изображений

3

4.2.1.2 Описание разработанной библиотеки ........................................................................................... 20

4.2.2 Эксперименты ................................................................................................................................................. 21

4.2.2.1 Тесты на качество обработки ........................................................................................................ 21

4.2.2.2 Тесты производительности ............................................................................................................ 21

4.3 Обобщение и оценка результатов исследований ................................................................................ 22

Заключение ........................................................................................................................................................................... 23

Список использованных источников ...................................................................................................................... 24

Обозначения и сокращения

АС – Автоматизированная система;

Задача АС – Задача автоматизированной системы;

НИР – Научно-исследовательская работа;

ПО – Программное обеспечение;

ТЗ – Техническое задание на автоматизированную систему;

Аннотация

В данной работе рассмотрена задача разработки программного обеспечения

интерполяции изображений.

Для поставленной задачи была разработана структура системы, модулей и

схемы их взаимодействия. Предложена среда разработки и реализации

автоматизированной системы. Сделан выбор технических и трудовых средств и

ресурсов, обслуживающих автоматизированную систему.

Исследованы и приведены алгоритмы решения задачи интерполяции

изображений. Алгоритмизированы три метода решения данной задачи. Проведены

их экспериментальные исследования зависимости производительности от размера

изображения и метода обработки. Сделаны выводы по полученным результатам и

предложены наиболее оптимальные алгоритмы обработки.

На основании экспериментов были сделаны выводы о производительности

алгоритмов.

Введение

Рост интенсивного развития человеческой деятельности в области

современных информационных технологий влечет за собой необходимость

упрощения способов идентификации и обработки различных данных. На

Page 4: Исследование и разработка программного обеспечения интерполяции изображений

4

сегодняшний день одним из актуальных классов задач, являются задачи

автоматического обнаружения и распознания данных, содержащихся на

графических изображениях. Результаты решения подобного класса задач могут

быть использованы в современных системах компьютерного зрения: системы

идентификации изображений, зрение роботов, компьютерная анимация,

видеосъемка (автоматическое слежение за движущимися объектами).

В связи с последними достижениями в области развития интеллектуальных

разработок, появляется возможность решения многих задач путем создания

прикладных систем интеллектуального анализа данных.

Таким образом, данная работа посвящена исследованию методов обработки

изображений.

1 Постановка задачи и первичное исследование

1.1 Постановка задачи

Наименование задачи (НИР): Исследование и разработка программного

обеспечения интерполяции изображений.

Входные данные: Изображение, подлежащее обработке.

Выходные данные: Интерполированное изображение.

Задача заключается в том, чтобы разработать программное обеспечение (ПО)

задачей которого будет обработка изображений для последующего анализа.

В рамках задачи дипломного проекта1 эта задача является связующим звеном

между подсистемой получения и предварительной обработки изображения и

подсистемой анализа и распознавания.

1.2 Оценка современного состояния решаемой научно-технической

проблемы

Исследование современного рынка решений поставленной задачи приводит к

выводу о том, что существует множество ПО для решения подобной задачи. Однако,

во многих случаях интеграция с подсистемами затруднена, как вследствие этого

необходима разработка собственного модуля для обработки изображений.

Общий анализ технологической базы существующих прикладных решений

приводит к следующим выводам: 1 Под Системой понимается «Автоматизированная система контроля доступом» подробное описание назначения и целей создания АС имеется в ТЗ к дипломному проекту.

Page 5: Исследование и разработка программного обеспечения интерполяции изображений

5

Используется большое количество методов и алгоритмов интерполяции

изображений.

Обеспечивается высокое качество и производительность.

Решения не обладают универсальностью, используются в контексте

подсистем ПО.

Таким образом, можно сделать вывод о том, существующие системы обладают

хорошей технологической базой, но не обладают достаточной универсальностью. В

существующих ПО нет модульного решения для интеграции в существующую

задачу.

1.3 Обоснование необходимости проведения работы

В результате оценки современного состояния решаемой задачи мы приходим

к выводу о том, что существующие решения, не дают полной возможности (без

доработок) произвести интеграцию с реализованной подсистемой.

Проведение НИР в области исследования и разработки программного

обеспечения интерполяции изображений, которое будет обладать модульной

структурой, является в рамках задачи дипломного проектирования очень важной

задачей.

1.4 Назначение и цели создания программного обеспечения

Назначение ПО – интерполяция входящего изображения.

Основная цель создания ПО – создания модуля для системы распознавания

изображений.

Создание данного ПО, как модуля системы, решает конкретные задачи:

Повышает скорость последующей обработки изображений;

Повышает эффективность распознавания изображения;

Расширяет функционал системы.

2 Проектирование ПО

2.1 Структура модулей ПО

В автоматизированную систему должны входить следующие модули:

библиотека типов;

библиотека расширенной работы с массивами;

Page 6: Исследование и разработка программного обеспечения интерполяции изображений

6

библиотека обработки изображений;

библиотека основных функций;

библиотека быстрой работы с изображениями;

библиотека построения линейных сплайнов;

библиотека построения двухмерных сплайнов;

Необходимая взаимосвязь компонентов приложения изображена в диаграмме

компонентов (см. рисунок 2.1) по нотации UML 2.0 [1].

Interpolate Image

«library»

ImgLibTypes

«library»

ImgLibArrayExt

«library»

ImgLibImageExt

«library»

ImgLibImpl

«library»

QPixels

«library»

SplineLibLinear

«library»

SplineLibBilinear

Рисунок 2.1. Взаимосвязь модулей приложения

2.2 Постановка задачи на реализацию подсистем АС

В поставленной задаче НИР стоит разработка ПО интерполяции изображений.

Будем реализовывать поставленную задачу таким образом, чтобы соблюдать

модульную структуру Системы.

Наибольший практический интерес представляет собой задача билинейной

интерполяции, входящая в модуль «Библиотека обработки изображений».

3 Теоретические исследования

Основная задача исследований заключается в изучении современных

алгоритмов интерполяции изображений и их реализация в ПО.

Page 7: Исследование и разработка программного обеспечения интерполяции изображений

7

В данном разделе отчета о НИР рассматриваются методы интерполяции

изображений. Таким образом, далее следует описание проведенных исследований и

разработанных алгоритмов для решения задачи разработки ПО.

3.1 Обоснование направления исследований

Все большее распространение получили системы автоматизированного ввода

информации через различные типы сканеров, а также цифровые фото- и

видеокамеры. При этом по разрешающей способности такие системы ввода вполне

приближаются к зрению человека или животных, а с учетом быстродействия

ближайшей технической моделью глаза, очевидно, являются видео- и цифровые

фотокамеры. Так ПЗС матрица цифровой фотокамеры обеспечивает разрешение до 3

млн. пикселей на кадр, а современным высокопроизводительным компьютерам

вполне доступна несложная обработка в реальном масштабе времени.

Под обработкой изображений следует понимать совокупность методов и

задач, где входной информацией являются изображения [2]. Круг решаемых задач

очень широк и используется в различных областях, таких как математика,

нейробиология, оптическая физика и других. Можно назвать две основные

прикладные области, активно развиваемые в последнее время, это «Машинное

зрение» и «Компьютерное зрение». Данные области достаточно близки и часто

пересекаются по классу задач, поэтому иногда их объединяют в одну (см. рисунок

3.1).

Современные исследования и развития данных областей, позволяют

сформулировать их основные задачи [2].

Обработка изображений фокусируется на обработке двумерных (2D)

изображений.

Машинное зрение - это решение промышленных и производственных задач

(робототехника и прочее).

Компьютерное зрение включает в себя класс задач связанных с

восстановлением трехмерного изображения (3D) по входным двумерным (2D)

изображениям.

В рамки задач по обработке изображений входят и задачи преобразования

размеров изображения, и соответственно их интерполяция.

Интерполяция изображений происходит во всех цифровых фотографиях на

определённом этапе, например, при масштабировании. Она происходит всякий раз,

Page 8: Исследование и разработка программного обеспечения интерполяции изображений

8

когда вы изменяете размер или развёртку изображения из одной сетки пикселей в

другую. Изменение размера изображения необходимо, когда вам нужно увеличить

или уменьшить число пикселей, тогда как изменение положения может происходить

в самых различных случаях: исправление искажений объектива, смена перспективы

или поворот изображения.

3.2 Математическая интерполяция

Интерполяция – в вычислительной математике способ нахождения

промежуточных значений величины по имеющемуся дискретному набору известных

значений.

Часто в научных и инженерных расчетах приходится оперировать наборами

значений, полученных экспериментальным путём или методом случайной выборки.

На основании этих наборов данных требуется построить график функции, на

которую могли бы с высокой точностью попадать другие получаемые значения.

Такая задача называется аппроксимацией кривой. Интерполяцией называют такую

разновидность аппроксимации, при которой кривая построенной функции проходит

точно через имеющиеся точки данных.

Также существует близкая к интерполяции задача, которая заключается в

аппроксимации какой-либо сложной функции другой, более простой функцией. В

случае, когда некоторая функция слишком сложна для производительных

вычислений, можно попытаться вычислить её значение в нескольких точках, а по

ним построить, то есть интерполировать, более простую функцию. Использование

упрощенной функции не позволяет достичь первоначальной точности, но в

определенных классах задач достигнутый выигрыш в простоте и скорости

вычислений перевешивает получаемую погрешность в результатах.

Существует также совершенно другая разновидность математической

интерполяции, известная под названием «интерполяция операторов».

3.2.1 Определение

Рассмотрим систему несовпадающих точек 0,1,...,ix i N из некоторой

области D . Пусть значения функции f известны только в этих точках

, 1,...,i iy f x i N (3.1)

Page 9: Исследование и разработка программного обеспечения интерполяции изображений

9

Задача интерполяции состоит в поиске такой функции F из заданного класса

функций, что

, 1,...,i iF x y i N , (3.2)

где

Точки ix называют узлами интерполяции, а их совокупность —

интерполяционной сеткой;

Пары ,i ix y называют точками данных или базовыми точками;

Разность между «соседними» значениями 1i i ix x x — шагом

интерполяционной сетки, который может быть как переменным, так и

постоянным;

Функцию F x — интерполирующей функцией.

3.2.2 Методы интерполяции

Интерполяция полиномами

Линейная интерполяция;

Интерполяционная формула Ньютона;

Метод конечных разностей;

Полином Лагранжа;

Сплайн-функция;

Обратное интерполирование

Полином Лагранжа;

Обратное интерполирование по формуле Ньютона;

Обратное интерполирование по формуле Лагранжа;

Рациональная интерполяция;

Тригонометрическая интерполяция.

Методы сплайн интерполяции подробно рассмотрены в книге [3].

3.3 Одномерная сплайн-интерполяция

3.3.1 Сплайн-функция

Сплайн - это агрегатная функция, совпадающая с более простой функцией на

каждом элементе разбиения своей области определения [4].

Page 10: Исследование и разработка программного обеспечения интерполяции изображений

10

Сплайн-функция является особым видом кусочно-непрерывного полинома. В

монографии [5] указано, что интерполяция сплайн-функция является более

предпочтительным полиномиальной интерполяции, т.к. ошибка может быть

намного меньше, даже при низкой степени многочлена сплайн-функции.

Следовательно, позволяет избежать проблем возникающих при высокой степени

аппроксимирующего полинома2.

Таким образом, сформулируем задачу интерполяции.

Пусть дано 1n точек ix таких, что

0 1 1... n nx x x x , (3.3)

с известными 1n значениями ( )i iy x .

Необходимо определить сплайн-функцию степени n

0 0 1

1 1 2

1 1 1

, ,

, ,

...

, ,n n

S x x x x

S x x x xS x

S x x x x

, (3.4)

где каждая из функций iS x является многочленом степени K .

Рассмотрим интерполяцию сплайном третьей степени.

3.3.2 Интерполяция сплайном третьей степени

В основе данной сплайн-интерполяции лежит следующий принцип. Интервал

интерполяции разбивается на небольшие отрезки, на каждом из которых функция

задается полиномом третьей степени. Коэффициенты полинома подбираются таким

образом, чтобы выполнялись определенные условия, которые зависят от метода

интерполяции. Общие требования для всех типов сплайнов третьего порядка:

Непрерывность функции;

Прохождение через все заданные точки.

К дополнительным требованиям относятся:

Линейность функции между узлами;

Непрерывность высших производных;

И прочее.

2 Berrut, Jean-Paul, Trefethen, Lloyd N. Barycentric Lagrange interpolation // SIAM Review 46. –

pp.501–517. – ISSN 1095-7200

Page 11: Исследование и разработка программного обеспечения интерполяции изображений

11

Как уже было показано, основными достоинствами сплайн-интерполяции

являются её устойчивость и малая трудоемкость. Системы линейных уравнений,

которые требуется решать для построения сплайнов, хорошо обусловлены, что

позволяет получать коэффициенты полиномов с высокой точностью. В результате

при очень больших значениях N вычислительная схема не теряет устойчивость.

Построение таблицы коэффициентов сплайна требует N операций, а

вычисление значения сплайна в заданной точке - всего лишь log N .

Рассмотрим некоторые виды кубических сплайнов, т.е. сплайны, являющиеся

кусочно-кубическими функциями.

3.3.2.1 Линейный сплайн

Линейный сплайн - это сплайн, составленный

из полиномов первой степени, т.е. из отрезков

прямых линий. Точность интерполяции линейными

сплайнами невысока, кроме того они не

обеспечивают непрерывности первых

производных. Однако в некоторых случаях кусочно-

линейная аппроксимация функции может оказаться

предпочтительнее, чем аппроксимация более

высокого порядка. Например, линейный сплайн

сохраняет монотонность переданного в него набора

точек.

На рисунке 3.1 приведен пример линейного

сплайна, интерполирующего функцию cos 0.5f x x на отрезке 1,1 .

3.3.2.2 Сплайн Эрмита

Сплайн Эрмита - это сплайн третьего порядка, производная которого

принимает в узлах сплайна заданные значения. В каждом узле сплайна Эрмита

задано не только значение функции, но и значение её первой производной. Сплайн

Эрмита имеет непрерывную только первую производную.

На рисунке 3.2.а приведен пример сплайна Эрмита, интерполирующего

функцию cos 0.5f x x на отрезке 1,1 . Можно заметить, что точность

интерполяции значительно лучше, чем у линейного сплайна.

Рисунок 3.1. Аппроксимация

линейным сплайном

Page 12: Исследование и разработка программного обеспечения интерполяции изображений

12

Рисунок 3.2а и 3.2б. Аппроксимация сплайном Эрмита (слева) и кубическим сплайном (справа)

3.3.2.3 Кубический сплайн

Кубический сплайн – это такой сплайн, обеспечивающий непрерывность

первой и второй производной в каждой точке. Кубический сплайн задается

значениями функции в узлах и значениями производных на границе отрезка

интерполяции (либо первых, либо вторых производных).

Если известно точное значение первой производной на обеих границах, то

такой сплайн называют фундаментальным. Его погрешность интерполяции равна

4h , где h - это шаг заданной дискретной функции, т.е. 1i ix x .

Если значение первой (или второй) производной на границе неизвестно, то

можно задать т.н. естественные граничные условия '' '' 0S A S B , и получить

естественный сплайн. Погрешность интерполяции естественным сплайном

составляет 2h . Максимум погрешности наблюдается в окрестностях граничных

узлов, во внутренних узлах точность интерполяции значительно выше.

Ещё одним видом граничного условия, которое можно использовать, если

неизвестны граничные производные функции, является условие типа "сплайн,

завершающийся параболой". В этом случае граничный отрезок сплайна

представляется полиномом второй степени вместо третьей (для внутренних

отрезков по-прежнему используются полиномы третьей степени). В ряде случаев

это обеспечивает большую точность, чем естественные граничные условия.

Так же можно сочетать различные типы граничных условий на разных

границах. Обычно так имеет смысл делать, если у нас есть только часть информации

Page 13: Исследование и разработка программного обеспечения интерполяции изображений

13

о поведении функции на границе (например, производная на левой границе - и

никакой информации о производной на правой границе).

На рисунке 3.2б приведен пример кубического сплайна, интерполирующего

cos 0.5f x x на отрезке 1,1 . Можно видеть, что точность интерполяции

близка к точности сплайна Эрмита.

Недостатком кубических сплайнов является то, что они склонны

осциллировать в окрестностях точки, существенно отличающейся от своих соседей.

На рисунке 3.3. приведен набор точек, содержащий один выброс. Зеленым цветом

обозначен кубический сплайн с естественными граничными условиями. На отрезках

интерполяции, граничащих с выбросом, сплайн заметно отклоняется от

интерполируемой функции - сказывается влияние выброса.

Для устранения данного недостатка используют сплайн Акимы.

Б.2.2.4 Сплайн Акимы

Сплайн Акимы - это особый вид

сплайна, устойчивый к выбросам. На

рисунке 3.3. красным цветом

обозначен сплайн Акимы. Можно

заметить, что, в отличие от

кубического сплайна, сплайн Акимы в

меньшей мере подвержен влиянию

выбросов - на отрезках, граничащих с

выбросом, практически отсутствуют

признаки осцилляции.

Важным свойством сплайна Акимы является его локальность - значения

функции на отрезке 1,i ix x зависят только от значений 2 1 1 2 2, , , , ,i i i i i if f f f f f .

Вторым свойством, которое следует принимать во внимание, является

нелинейность интерполяции сплайнами Акимы - результат интерполяции суммы

двух функций не равен сумме интерполяционных схем, построенных на основе

отдельных функций.

Для построения сплайна Акимы требуется не менее 5 точек. Во внутренней

области (т.е. между 2 3 3, ,..., Nx x x при нумерации точек от 0 до 1N ) погрешность

интерполяции имеет порядок 2h .

Рисунок 3.3. Аппроксимация сплайном Акимы

Page 14: Исследование и разработка программного обеспечения интерполяции изображений

14

В данном разделе приведены не все существующие виды сплайнов, большое

количество информации можно найти в литературе [3], [4] и [5].

3.4 Двухмерная сплайн-интерполяция

Двухмерная интерполяция имеет ряд особенностей, отличающих её от

одномерного случая [6]. Главной такой особенностью является то, что подавляющее

большинство алгоритмов двухмерной интерполяции может быть применено только

на наборе точек специального вида - на прямоугольной сетке, ориентированной по

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

типа интерполирующих функций: билинейный сплайн и бикубический сплайн.

3.4.1 Билинейный сплайн

Билинейная функция - это функция двух аргументов t и u , которая при

фиксированном значении t линейна по u и наоборот. Билинейный сплайн является

двухмерным обобщением одномерного линейного сплайна и имеет те же

достоинства и недостатки. Он составляется из билинейных функций, определенных

на каждой ячейке сетки так, что в узлах сетки они принимают предписанные

значения. Этот способ интерполяции хорош своей простотой и быстродействием.

Основной недостаток - разрывность производной интерполирующей функции на

границах ячеек сетки. Также можно отметить сравнительно невысокую точность

такой интерполяционной схемы.

3.4.1.1 Алгоритм

В вычислительной математике билинейной интерполяцией называют

расширение линейной интерполяции для функций в двух переменных. Ключевая

идея заключается в том, чтобы провести обычную линейную интерполяцию сначала

в одном направлении, затем в другом.

Допустим, что необходимо интерполировать значение функции ( , )f x y в

точке ,P x y . Для этого необходимо знать значения функций в (окружающих P)

точках 11 1 1 12 1 2 21 2 1 22 2 2, , , , ,Q x y Q x y Q x y Q x y . Первым шагом

интерполируется (линейно) значение вспомогательных точек R1 и R2 вдоль оси

абсцисс, где 1 1 2 2, ; ,R x y R x y :

Page 15: Исследование и разработка программного обеспечения интерполяции изображений

15

2 11 11 21

2 1 2 1

2 12 12 22

2 1 2 1

( ) ( ) ( )

( ) ( ) ( )

x x x xf R f Q f Q

x x x x

x x x xf R f Q f Q

x x x x

(3.5)

Рисунок 3.43 Теперь проводится линейная интерполяция между вспомогательными

точками R1 и R2.

2 11 2

2 1 2 1

( ) ( ) ( )y y y y

f P f R f Ry y y y

(3.6)

Это и есть приблизительное значение функции в точке P, т.е. ( , )f x y .

11 212 2 1 2

2 1 2 1 2 1 2 1

12 222 1 1 1

2 1 2 1 2 1 2 1

( ) ( )( , ) ( )( ) ( )( )

( )( ) ( )( )

( ) ( )( )( ) ( )( )

( )( ) ( )( )

f Q f Qf x y x x y y x x y y

x x y y x x y y

f Q f Qx x y y x x y y

x x y y x x y y

(3.7)

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

сначала интерполировать между известными точками вдоль оси ординат и затем,

получив два вспомогательных значения, интерполировать между ними вдоль оси

абсцисс.

3.4.1.2 Недостатки метода

Главным минусом билинейной интерполяции при масштабировании

изображений является тот факт, что при увеличении в N раз изображения размером

3 Четыре красные точки представляют собой известные значения функции. Значение в зеленой точке должно быть интерполировано.

Page 16: Исследование и разработка программного обеспечения интерполяции изображений

16

W на H пикселей в результате будет получено изображение размером не NW на NH

пикселей, а (N(W − 1) + 1) на (N(H − 1) + 1) пикселей.

Связано это с тем, что в исходном изображении, например, по горизонтали

имеется W точек, т.е. (W − 1) смежных пар. При увеличении изображения в N раз

между каждой парой основных точек вставляется по (N − 1) дополнительных точек

(т.е. при увеличении вдвое между основными точками вставляется еще по одной,

при увеличении втрое - по две и т.д.). Итого в результате ширина результирующего

изображения будет равна сумме количества основных и дополнительных точек:

1 1 1 1W W N N W .

Проще говоря, для последнего пикселя (в каждой строке и столбце) исходного

изображения не находится пары, с которой можно было бы провести

интерполирование.

3.4.2 Бикубический сплайн

В ряде случаев оказывается недостаточно точности, которую обеспечивают

билинейные сплайны. Разрывность производной также часто оказывается

мешающим фактором. В таких случаях можно применить бикубический сплайн,

который гарантирует непрерывность первых производных dS dx и dS dy , а также

непрерывность смешанной производной 2d S dxdy .

Здесь можно проследить аналогию с одномерными сплайнами (смотри

раздел 3.2), однако есть и различия. Кубический сплайн гарантирует непрерывность

первой и второй производных функции. Бикубический сплайн гарантирует

непрерывность только градиента и смешанной производной, а непрерывность

вторых производных 2 2d S dx и 2 2d S dy не гарантируется.

Для построения бикубического сплайна требуются значения функции в узлах

сетки, а также значения её градиента и смешанной производной. При наличии этой

информации, мы можем сразу приступить к вычислению коэффициентов сплайна.

Однако обычно имеются только значения функции, а значения градиента и

смешанной производной требуется вычислять самостоятельно на их основе.

Например, используя разностные схемы.

Бикубическая интерполяция часто используется в обработке изображений,

давая более качественное изображение по сравнению с билинейной интерполяцией.

Page 17: Исследование и разработка программного обеспечения интерполяции изображений

17

3.4.3 Сравнение билинейной и бикубической интерполяции

Результат бикубической интерполяции функции заданной на сетке

[0,3] [0,3] . Данную сетку можно рассматривать как состоящую из 9 единичных

квадратов. Черными точками обозначены известные значения функции до

интерполяции. Цветом обозначены интерполированные значения в каждой точке

полученного изображения.

Результат билинейной интерполяции на тех же входных данных. Частные

производные не являются непрерывными и терпят разрыв на границах квадратов.

Рисунок 3.5а и 3.5б. Результат бикубической интерполяции (слева) и результат билинейной интерполяции (справа)

Matlab code: Билинейная интерполяция

[Xcoarse, Ycoarse] = meshgrid([0 1 2 3], [0 1 2 3]); [Xfine, Yfine] = meshgrid(linspace(0,3,1500), linspace(0,3,1500)); DataCoarse = [ 1 2 4 1; ... 6 3 5 2; ... 4 2 1 5; ... 5 4 2 3]; DataBilinearFine = interp2(Xcoarse, Ycoarse, DataCoarse, Xfine, Yfine, 'bilinear'); figure surf(Xfine, Yfine, DataBilinearFine); shading flat; colormap(jet); view(0, 90) hold on; plot3(Xcoarse, Ycoarse, 10*ones(size(Xcoarse)), 'k.', 'MarkerSize', 20) colorbar print -dpng -r300 BilinearInterpolExample.png

Matlab code: Бикубическая интерполяция

[Xcoarse, Ycoarse] = meshgrid([0 1 2 3], [0 1 2 3]); [Xfine, Yfine] = meshgrid(linspace(0,3,3000), linspace(0,3,3000)); DataCoarse = [ 1 2 4 1; ... 6 3 5 2; ... 4 2 1 5; ... 5 4 2 3];

Page 18: Исследование и разработка программного обеспечения интерполяции изображений

18

DataBicubicFine = interp2(Xcoarse, Ycoarse, DataCoarse, Xfine, Yfine, 'bicubic'); figure surf(Xfine, Yfine, DataBicubicFine); shading flat; colormap(jet); view(0, 90) hold on; plot3(Xcoarse, Ycoarse, 10*ones(size(Xcoarse)), 'k.', 'MarkerSize', 20) colorbar print -dpng -r300 BicubicInterpolationExample.png

3.4.4 Билинейное и бикубическое ресемплирование

Основной задачей, которая решается с помощью двухмерной интерполяции,

является ресемплирование. Эта задача, которая возникает, когда имеются значения

функции на регулярной сетке размером 1 1M N узлов, и требуется перейти от этой

сетки к сетке размером 2 2M N узлов, покрывающей ту же область, и вычислить

значения функции на новой сетке. При этом новая сетка может быть как более, так и

менее плотная, чем старая.

Ресемплирование - это получение по известным значениям в одних точках

значений функции в других точках, т.е. задача интерполяции. Но данный случай

является особым - требуется вычислять значение функции не в произвольных

точках, а в узлах сетки, и вычисления проводятся только один раз, после чего мы

получаем новую сетку и больше не возвращаемся к ресурсоемкой интерполяции.

Так как двухмерный сплайн может быть билинейным или бикубическим, так

и ресемплирование делится на билинейное и бикубическое.

Алгоритмы двухмерной интерполяции и их математическое описание

подробно рассмотрены в литературе [6].

4 Практические результаты и экспериментальные исследования

4.1 Изменение размера изображения

Изменять размер изображения, в первую очередь необходимо для его

последующей обработки [7]. В поставленной задаче в большинстве случаев

необходимо уменьшать изображение, в данной главе рассмотрим общие принципы

интерполяции изображений.

Как уже отмечалось выше, интерполяция - это пространственный (или

временной) прогноз значений неизвестных значений пикселей между истинными

значениями пикселей. Например, для изменения размеров изображений

используется один из методов интерполяции. Методы двумерной интерполяции

используются также при повороте изображений [8].

Page 19: Исследование и разработка программного обеспечения интерполяции изображений

19

На рисунках 4.1 и 4.2 приведены результаты интерполяции изображения

небольшого исходного размера. Как видно из результатов, наиболее гладкое

получается изображение интерполированное сплайном Акимы.

Рисунок 4.1а и 4.1б. Исходное изображение (слева) и интерполированное билинейным сплайном (справа)

Рисунок 4.2а и 4.2б. Интерполяция изображения бикубическим (слева) и акима сплайном (справа)

4.2 Экспериментальные исследования

В данной главе приводятся проведенные экспериментальные исследования

разработанных и исследованных методов интерполяции. Эксперименты будут

проводиться в искусственных условиях с программным изменением параметров

изображений, таких как яркость, шум и геометрические искажения.

4.2.1 Описание программного стенда

Для проведения экспериментов был разработан программный стенд,

позволяющий проводить эксперименты. Программный стенд является интерфейсом

к разработанным модулям библиотеки.

Page 20: Исследование и разработка программного обеспечения интерполяции изображений

20

4.2.1.1 Интерфейс программного стенда

Рисунок 4.3. Интерфейс программного стенда

Программный стенд позволяет выполнять интерполяцию изображения

различными алгоритмами. Программный стенд так же позволяет выбирать размер

будущего изображения. Одна из основных оценочных характеристик – измерение

производительности (время выполнения обработки), так же добавлена в

возможности программного стенда.

4.2.1.2 Описание разработанной библиотеки

В процессе работы над данной задачей была разработана специальная

библиотека «ImgLib».

Данная библиотека позволяет совершать большое количество действий с

массивами, изображениями, объявленными типами. В библиотеку входят 4 модуля:

ImgLibTypes (Variables, Constantes and Types)

В данном модуле объявлены все используемые переменные, константы и

типы, а также функции работы с типами;

ImgLibImageExt (Image Extension Works)

В данном модуле содержатся процедуры и функции для расширенных

операций с изображениями;

ImgLibArrayExt (Array Extension Works)

В данном модуле содержатся процедуры и функции для расширенных

операций с изображениями;

ImgLibImpl (Implementation)

Page 21: Исследование и разработка программного обеспечения интерполяции изображений

21

В данном модуле содержится основные процедуры и функции для обработки

изображений и распознаванию.

4.2.2 Эксперименты

Учитывая особенности поставленной задачи, тестирование разработки можно

проводить в искусственных условиях.

4.2.2.1 Тесты на качество обработки

Приведение примеров тестов на качество обработки очень громоздко. Для

количественной оценки качественного критерия необходимо производить

экспертный анализ, что не являлось возможным в ходе выполнения данной работы.

4.2.2.2 Тесты производительности

4.2.2.2.1 Влияние метода интерполяции на производительность

Рисунок 4.4. Гистограмма влияния метода интерполяции на время обработки Методика проведения данного эксперимента состоит в том, что мы просто

берем изображение и интерполируем их разными методами до большого размера

(3000 пикселей). Усредняя значение, получили следующую гистограмму.

Полученная характеристика очень логична, т.к. чем сложнее математическое

описание сплайна, тем сложнее и дольше его вычисление.

Page 22: Исследование и разработка программного обеспечения интерполяции изображений

22

4.2.2.2.2 Влияние размера изображения и метода интерполяции на производительность

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

1000х1000 2000x2000 3000х3000

Ср

ед

не

е и

нте

рп

ол

яц

ии

изо

бр

аже

ни

я,

мс

Размерность интерполированного изображения, пиксель2

Влияние размера изображения на время обработки алгоритма

Линейный сплайн

Кубический сплайн

Акима сплайн

Рисунок 4.5. Гистограмма влияния метода интерполяции на время обработки

Методика проведения данного эксперимента состоит в том, что мы просто

берем изображение и интерполируем их разными методами до большого размера

(1000, 2000 и 3000 пикселей). Усредняя значение, получили следующую

гистограмму. Полученная характеристика очень логична, т.к. чем сложнее

математическое описание сплайна, тем сложнее и дольше его вычисление.

4.3 Обобщение и оценка результатов исследований

В результате проведенных экспериментов была исследована зависимость

эффективность и качество интерполяции от влияния различных параметров и

настроек. Следовательно, основываясь на результатах экспериментов можно

предложить наиболее эффективные настройки и методы интерполяции.

Рекомендуется:

Использовать интерполяцию сплайн функцией Акима для небольших по

размеру изображений;

Использовать билинейную интерполяцию в случае больших изображений,

если не требуется добиваться отличного качества изображения;

В результате проведенных исследований можно сделать вывод о том, что

билинейная интерполяция обладает хорошими качественными результатам

интерполяции и отличной скоростью работы.

Page 23: Исследование и разработка программного обеспечения интерполяции изображений

23

Таким образом, в результате проведенных исследований были детально

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

экспериментальные исследования и произведено тестирование реализованного ПО.

Заключение

Проведенная НИР в области интерполяции изображений дает возможности

для дальнейшего продолжения разработки Системы.

В данной работе исследовались и разрабатывались методы и алгоритмы

интерполяции изображений. В результате проведенных исследований были

алгоритмизированы три метода решения данной задачи и проведены их

экспериментальные исследования зависимости производительности от размера

изображения.

На основании экспериментов были сделаны выводы о том, что билинейная

интерполяция обладает хорошими качественными результатам интерполяции и

отличной скоростью работы.

Для поставленной задачи дипломного проекта («Разработка системы

контроля доступом на основании системы распознавания номерных знаков») был

разработан модуль интерполяции изображений.

Одним из важнейших плюсов данного модуля является то, что в отличие от

других он легко интегрируются с Системой.

В дальнейшем будет сделана попытка углубиться в исследования и

продолжение разработки Системы с целью внедрения новых разработанных

технологий.

Page 24: Исследование и разработка программного обеспечения интерполяции изображений

24

Список использованных источников

1. Рамбо Джеймс, Блаха Майкл. UML 2.0. Объектно-ориентированное

моделирование и разработка. – 2-е изд. – 2007. – 544 с. – ISBN 5-469-00814-2.

2. Pedram Azad, Tilo Gockel, Rudiger Dillmann. Computer Vision - Principles and

Practice // Elektor International Media BV. – ISBN 0905705718. – 2008. –

http://ivt.sourceforge.net/book.html.

3. Алберг Дж., Нильсон Э., Уолш Дж. Теория сплайнов и ее приложения. – М.: Мир,

1972. – 318 с.

4. Завьялов Ю.С., Квасов Б.И., Мирошниченко В.Л. Методы сплайн-функций. – М.:

Наука, 1980. – 352 с.

5. Быстрицкий В. Двухмерная сплайн-интерполяция. –

http://alglib.sources.ru/interpolation/spline2d.php

6. R. Keys. Cubic convolution interpolation for digital image processing // IEEE

Transactions on Signal Processing, Acoustics, Speech, and Signal Processing 29:

1153. – 1981. – http://dx.doi.org/10.1109%2FTASSP.1981.1163711

7. Роджерс Д., Адамс Дж. Математические основы машинной графики. – М.: Мир,

2001. – ISBN 5-03-002143-4

8. Журавель И.М. и др. Краткий курс теории обработки изображений. – Интернет

университет информационных технологий. –

http://matlab.exponenta.ru/imageprocess/book2/index.php