43712

Разработка программного обеспечения для сжатия изображения

Дипломная

Информатика, кибернетика и программирование

Особенность изображений состоит в том, что отдельные элементы изображения находятся в определенной связи с соседними элементами. Поэтому большинство алгоритмов преобразования изображений носит групповой характер (то есть группа пикселей)

Русский

2013-11-07

4.51 MB

94 чел.

Содержание

[1] Содержание

[2] Введение

[3] Преобразования Фурье и БПФ (Быстрое преобразование Фурье)

[3.1] Общие описания

[3.2] Преобразования Фурье

[3.3] Быстрое преобразование Фурье:

[3.4] Области применения алгоритма Фурье

[4]  Алгоритм сжатия изображений

[4.1] 2.1.  Разновидности сжатия изображений

[4.2] 2.2   Алгоритмы сжатия изображений

[5] Программная реализация алгоритма сжатия изображений

[5.1] 3.1.  Выбор языка программирования для реализации поставленной задачи

[5.2] 3.2.  Структура приложения и форматов данных

[5.3] 3.3.  Описание пользовательского интерфейса

[5.4] 3.4.  Вывод при выборе среды разработки

[6]  Анализ эффективности программной реализации

[6.1] 4.1.  Анализ зависимости качества изображения от степени сжатия

[6.2] 4.2.  Данные участвующие в эксперименте

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

[8] Приложения


Введение

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

Изображение в математическом представлении - двумерный сигнал, несущий огромное количество информации. Чем больше само изображение, тем больше оно представляет информации.  Обрабатывать такую информацию можно лишь организацией всевозможных вычислений. Для конкретных задач обработки изображений можно применять эффективные способы обработки с учетом особенностей и ограничений этой конкретной задачи или самого типа изображения. Но если говорить об обработке изображений для решения широкого класса задач, то необходимо выделить набор стандартных операций, из которых можно строить алгоритмы для решения произвольных задач. К их числу относятся линейные преобразования, двумерная свертка и двумерное дискретное преобразование Фурье.

Особенность изображений состоит в том, что отдельные элементы изображения находятся в определенной связи с соседними элементами. Поэтому большинство алгоритмов преобразования изображений носит групповой характер (то есть группа пикселей), располагающихся в окрестности вокруг данного. Линейные преобразования удовлетворяют свойству локальности и допускают построение алгоритмов, вычислительная сложность которых мало зависит от размеров охватываемой окрестности. Такие же свойства требуются и от нелинейных преобразований изображений. Их называют алгоритмами ранговой фильтрации, основанными на вычислении локальных ранговых статистик изображений. При вычислении ранговых статистик и производных от них возможны упрощения, связанные с информационной избыточностью (к примеру не все пиксели нужны, что бы понять что отображено на изображении) изображений. Наиболее известный алгоритм этого класса — алгоритм медианной фильтрации. Другими примерами ранговых алгоритмов могут служить алгоритмы экстремальной фильтрации, которые заменяют анализируемый элемент изображения максимумом или минимумом по окрестности. Еще одно свойство ранговых алгоритмов - локальная адаптация к характеристикам обрабатываемого изображения и потенциальные возможности их использования не только для сглаживания и очистки от шумов, но и для выделения признаков при автоматическом распознавании изображений.

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

Сжатие изображений — применение алгоритмов сжатия данных к изображениям, хранящимся в цифровом виде. В результате сжатия уменьшается размер изображения, из-за чего уменьшается время передачи изображения по сети и экономится пространство для хранения. Сжатие изображений подразделяют на сжатие с потерями качества и сжатие без потерь. Сжатие без потерь часто предпочтительней для искусственно построенных изображений, таких как графики, иконки программ, либо для специальных случаев, например, если изображения предназначены для последующей обработки алгоритмами распознавания изображений. Алгоритмы сжатия с потерями при увеличении степени сжатия, как правило, порождают хорошо заметные человеческому глазу изменения.

И так с уверенностью  можно сказать, что применить алгоритмы сжатие возможно только к оцифрованным изображениям.  Понятие «оцифровка» отражает суть, что изначально изображение было не на электроном носители (к примеру фотографией). Но в по следствии ее по пиксельно  преобразовали в электронный вид.

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

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

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

К примеру если мы сделаем оцифровку фотографии размерами листа А4, то  на выходе можем получить  до 30 мегабайт занятого пространства на носителе. Конечно, все зависит от целей, но если нам необходимо разместить это изображение на сайте, то мы получим значительную нагрузку на ресурс. Для того что бы избежать нецелесообразных нагрузок систем или каналов передачи информации, мы можем осуществить сжатие изображения. В итоге можем получить объект размером до мегабайта (грубо говоря, в 30 раз меньше), а представьте, если изображение ни одно, мы выигрываем колоссальную экономию ресурсов [5].

Алгоритмов сжатия оцифрованных изображений много, какие то более эффективные, какие то менее. Все зависит от поставленной задачи. В этой работе остановились на описании и реализации алгоритма преобразования Фурье.

Для начала необходимо изложить суть преобразования Фурье и его более простой версией быстрого преобразования  (БПФ) и в каких областях его возможно применить.

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

Проанализировать языки и среды разработки, с наиболее оптимальной реализацией поставленной задачи (разработка программного обеспечения для решения алгоритма Фурье).

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


Реферат

Махмутов И.И. Исследование и программная реализация двумерного преобразования Фурье для сжатия графических данных, дипломная работа: стр. 72, рис. 20 , табл.1 , библ. назв. 16, прил. 1.

Ключевые слова: ПРЕОБРАЗОВАНИЕ ФУРЬЕ, БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ, ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ, ИЗОБРАЖЕНИЕ.

Объект исследования — изображение, двумерное преобразование Фурье, формат JPG.

Цель работы – разработка программного обеспечения для сжатия графических данных  с целью экономия ресурсов.

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

Получен результат компрессии по окончанию тестирования разных вариаций оцифрованного изображения (формат, объем). Была выявлена зависимость конечного материала от загружаемого эталона.

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


  1.  Преобразования Фурье и БПФ (Быстрое преобразование Фурье)

  1.  Общие описания

В 1807 французский математик и физик Жан Батист Жозеф Фурье представил во Французский Институт (InstitutdeFrance) доклад о синусоидальном представлении температурных распределений. Доклад содержал спорное утверждение о том, что любой непрерывный периодический сигнал может быть представлен суммой выбранных должным образом сигналов синусоидальной формы. Среди членов комитета, занимавшихся обзором публикаций, были два известных математика – Жозеф Луи Лагранж и Пьер Симон де Лаплас. Лагранж категорически возразил против публикации на основании того, что подход Фурье неприменим к разрывным функциям, таким как сигналы прямоугольной формы. Работа Фурье была отклонена, прежде всего из-за возражения Лагранжа, и была издана после смерти Лагранжа, приблизительно пятнадцатью годами позже. Интересно, что времена Фурье совпали с важными политическими событиями: экспедициями Наполеона в Египет и попытками избежать гильотины после Французской Революции.

На самом деле и Фурье, и Лагранж были, по крайней мере частично, правы. Лагранж был прав в том, что суммированием сигналов синусоидальной формы невозможно точно сформировать сигнал, содержащий вертикальный фронт. Но можно очень точно к нему приблизиться, если использовать достаточное количество гармонических сигналов. (Это описывается эффектом Гиббса и сегодня хорошо понятно ученым, инженерам и математикам).

Анализ Фурье закладывает основы многих методов, применяющихся в области цифровой обработки сигналов (ЦОС). По сути дела, преобразование Фурье (фактически существует несколько вариантов таких преобразований) позволяет сопоставить сигналу, заданному во временной области, его эквивалентное представление в частотной области. Наоборот, если известна частотная характеристика сигнала, то обратное преобразование Фурье позволяет определить соответствующий сигнал во временной области.

В дополнение к частотному анализу, эти преобразования полезны при проектировании фильтров. Частотная характеристика фильтра может быть получена посредством преобразования Фурье его импульсной реакции. И наоборот, если определена частотная характеристика сигнала, то требуемая импульсная реакция может быть получена с помощью обратного преобразования Фурье над его частотной характеристикой. Цифровые фильтры могут быть созданы на основе их импульсной реакции, поскольку коэффициенты фильтра с конечной импульсной характеристикой (КИХ) идентичны дискретной импульсной реакции фильтра.

Семейство преобразований Фурье (преобразование Фурье, ряды Фурье, дискретные ряды Фурье и дискретное преобразование Фурье) представлено на (Рис.1).

Рис.1 Виды преобразование Фурье

С течением времени принятые определения получили развитие (не обязательно вполне логичное) в зависимости от того, является ли сигнал непрерывно-апериодическим (continuous–aperiodic), непрерывно-периодическим (continuous–periodic), дискретно-апериодическим (sampled–aperiodic) или дискретно-периодическим (sampled–periodic). В данном контексте термин sampled означает то же самое, что discrete (дискретный) (то есть дискретные по времени выборки).

Место применения:

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

Преобразование Фурье используется во многих областях науки – в физике, теории чисел, комбинаторике, обработке сигналов, теории вероятности, статистике, криптографии, акустике, океанологии, оптике, геометрии, и многих других. При обработке сигналов различной природы преобразования [14].

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

Преобразования обратимы, причем обратное преобразование имеет практически такую же форму, как и прямое преобразование.

Быстрое преобразование Фурье применяется во многих областях: радиолокации, сжатии видео и изображений, геологии. Многие из данных задач требуют выполнения преобразований в реальном времени, с минимальной временной задержкой вычислений [8].

  1.  Преобразования Фурье

Дискретный вещественный сигнал в виде конечной временной последовательности  запишем как ), где , N – число отсчетов, T – период дискретизации.

N – точечное дискретное преобразование Фурье (ДПФ) задается формулой

где X(k) – частотный k–ый отсчет или k–ая спектральная составляющая сигнала  (определяет выходную частотную последовательность, спектр сигнала),

    - комплексная экспонента,

                 - ядро преобразования.

При изменении значения n-k на величину кратную N ядро  не изменяется (в силу периодичности синуса и косинуса). То есть ядро по верхнему индексу является периодической функцией с периодом N. Поэтому вместо произведения n-k можно вставить остаток от деления его на N , то есть  (или). Спектральная функция X(k) также имеет период N по аргументу k.

Число умножений действительных отсчетов сигнала на комплексное ядро в   равно N 2 , а число сложений комплексных чисел – (N -1)N. Количество этих операций резко возрастает с увеличением N и приводит к слишком большому времени преобразования.

ДПФ стало широко применяться после изобретения быстрых алгоритмов, в основе которых лежит принцип сведения многоточечного преобразования к мало точечным. Один из них (ставший уже классическим) называется БПФ с прореживанием по времени. Этот алгоритм получен при условии, если N является степенью числа 2, то есть  , где V- целое число, V>=0.

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

По существу эта операция представляет собой изменение порядка суммирования (перегруппировку слагаемых), от которого сумма не меняется.

Можно записать . С учетом этого   примет вид

Заметим, что суммы   представляют собой N/2 – точечные ДПФ временных отсчетов с четными номерами в первой сумме, и нечетными номерами во второй сумме.

Обозначим, следуя

ДПФ всех  – входных отсчетов дискретного сигнала,

ДПФ  входных отсчетов с четными номерами (первое число в нижнем индексе равно V-1, а второе - четному числу (нулю)). Номерами (второе число в нижнем индексе равно нечетному числу (единице)). С учетом введенных обозначений получим краткую форму записи  

Спектры и  являются периодическими функциями с периодом N/2 (в ядре преобразования вместо N стоит N/2). Величина                    называется множителем поворота и обладает следующим интересным свойством . Это свойство предоставляет при вычислении WN с номерами k от N/2 до (N –1) использовать соответствующие значения ранее вычисленных WNk с номерами от 0 до (N/2 –1) (нужно только изменить знак).

Обычно формулу разбивают на два соотношения для указанных выше номеров и получают основные формулы (базовые соотношения) преобразования Фурье в виде

          

Базовые соотношения уже можно назвать быстрым преобразованием Фурье (БПФ), так как число операций уменьшилось. Число умножений вещественных отсчетов сигнала на комплексное ядро равно. К этому нужно добавить  умножений комплексных чисел. Число сложений равно

Процесс разбиения по схеме базовых соотношений можно продолжать до тех пор, пока не придем к преобразованиям Фурье единичных отсчетов (совпадающих с самими отсчетами). Требуемое число операций при этом будет значительно меньше. В таком виде это БПФ называют БПФ с прореживанием по времени.

Для пояснения процесса разбиений рассмотрим более детально, чем в, пример БПФ при .

Обозначим, оператор ДПФ определенных входных отсчетов через F и запишем соответствия между символами ДПФ, введенными выше, и этим оператором.

Связи между ДПФ с большим и меньшим числом точек согласно базовым соотношениям записываются следующим образом:

     

      

      

       

       

       

Работу БПФ можно пояснить графически, если базовые соотношения, записанные в очень краткой форме

изобразить графом

Верхней стрелке соответствует сложение, а нижней – вычитание. Предварительно bm-1 умножается на множитель поворота WN.

Используя вышеприведенное и располагая символы ДПФ в упорядоченном виде, изобразим БПФ геометрически с помощью графа.

Граф БПФ с прореживанием по времени при N = 8.

Отметим, что отсчеты входной последовательности переходят в соответствующие ДПФ нулевого уровня согласно инверсии их двоичных номеров (операция называется перестановкой входных отсчетов). Например, десятичный номер 4|10 в двоичном виде запишется как 100|2. Инверсия числа 100|2 (в прочтении справа налево) запишется как 001|2 = 1|10. Таким образом, входной отсчет под номером 4 совпадет с первым ДПФ X0, 1Перестановку для всех отсчетов можно показать стрелками перехода: 0 → 0, 1 → 4, 2 → 2, 3 → 6, 4 → 1, 5 → 5, 6 → 3, 7 → 7.

Практика:

Составной частью решения многих прикладных задач является осуществление прямого и обратного дискретных преобразований Фурье. Эта подзадача встречается в таких приложениях, как обработка сигналов, решение эллиптических задач математической физики, решение систем линейных алгебраических уравнений специального вида и т.д. Здесь мы рассмотрим, что это за преобразование и как его можно выполнить быстрее [13].

Пусть T - исходный вектор, который нужно умножить на матрицу Фурье F c элементами

Для получения вектора T по формуле . Тогда для элемента искомого вектора умножение даст формулу:

Как известно, в общем случае умножение матрицы на вектор требует O(N2) арифметических операций. Следует рассмотреть вопрос о сокращении этого числа.

Рассмотрим структуру вычислений классического Преобразования Фурье (далее ПФ), предположив, что суммирование происходит по порядку от малых значений индексов к большим. Казалось бы, что сложного в банальном умножении матрицы на вектор. В отличие от стандартного умножения, где каждый элемент матрицы используется только один раз, в ПФ матрица - специального вида. Это приводит к тому, что одни и те же элементы матрицы используются в совершенно разных местах схемы вычислений. На (Рис.2) представлена структура ПФ с N=6.

Рис.2 Структура ПФ, где N=6

Чёрными линиями обозначены собственно ветви вычислений, при этом передачи осуществляются слева направо, в крайнем справа столбце результатом будет соответствующий элемент вычисляемого вектора. В одном столбце расположены те операции, которые используют в качестве одного из данных один и тот же элемент исходного вектора. А вот цвет вершины (все они соответствуют операции a+bc) соответствует тому, какой из элементов матрицы Фурье умножается на элемент исходного вектора. Серым цветом окрашены вершины, где из матрицы Фурье в качестве множителя берётся нулевая степень комплексного числа, т.е. просто единица (и где, следовательно, умножение можно пропустить). Как видно, её как раз больше всего в структуре вычислений. Далее степени одного и того же комплексного множителя растут от 1 до 5 в вершинах соответственно зелёного, голубого, синего (элемент там умножается на -1 и потому можно, как и в серых вершинах, отказаться от умножения, заменив сложение вычитанием), фиолетового и жёлтого цветов. Как видно, структура использования этих степеней довольно хаотична,  хотя на самом деле все тут идет по определённому порядку.

В случае простого N структура будет отличаться тем, что «серых» вершин, кроме как на левой и верхней границах соответствующего рисунка, больше не будет вообще.

В случае же N=2 у нас будут только 3 сложения и одно вычитание, так что использование двойки в качестве базового сомножителя ПФ несёт несомненные выгоды.

Рассмотрим случай N = p1 p2, причём сомножители не равны 1. Тогда, представим индексы элементов векторов и матрицы q, j в виде

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

и то, что мнимая экспонента периодична с периодом 2π, получим, что

где  

 

При вычислении по представленному алгоритму требуется всего

O (p12 p2) + O (p22 p1)

арифметических операций. В случае, когда сомножители равны друг другу, общее количество операций составит

O(N3/2).

  1.  Быстрое преобразование Фурье:

Приведённые выше формулы показывают интересную вещь. Оказывается, если записать исходный вектор f по столбцам прямоугольной таблицы размера p2 на p1, то его преобразование Фурье в вектор a может быть выполнено в следующие три действия(на рисунках-примерах, будем считать, что исходная размерность равна 15):

  •  Этап 1. Вычисление преобразований Фурье порядка p1 всех строк таблицы (черной линией на рисунке показаны группы элементов массива, над которыми выполняются ПФ размерности p1=3) (Рис.3).

Рис.3 Вычисление ПФ всех строк таблицы

  •  Этап 2. Умножение элементов полученной таблицы на так называемые поворачивающие множители (серым на рисунке показаны элементы массива, которые не нужно умножать, разными цветами - умножаемые на разные поворотные множители. Как видно, часть поворачивающих множителей повторяется) (Рис.4).

Рис.4 Умножение элементов полученной таблицы

  •  Этап 3. Вычисление преобразований Фурье порядка p2 всех столбцов таблицы (черной линией показаны группы элементов массива, над которыми выполняются ПФ размерности p2=5).

Рис.5 ПФ по столбцам

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

В случае, когда БПФ адаптируется для реализации на параллельной вычислительной системе (мы имеем в виду случай, когда нужно распараллеливать само преобразование Фурье, а не те алгоритмы, в которых преобразований Фурье разных векторов много и они сами могут выполняться параллельно), логическая сложность алгоритма, и сложность деления данных по частям алгоритма, становится существенным тормозом для эффективной реализации. Кроме того, большинство многопроцессорных вычислительных систем с раздельной памятью (кластерная архитектура) часто предоставляет максимальное число узлов, являющееся степенью двойки. Системы, не имеющие таких ограничений, вроде ПЛИСов, имеют другие ограничения. Например, при программировании на COLAMO усложнение логической структуры при равной вычислительной мощности будет фактором, снижающим производительность базовых модулей, поскольку часть процессорных элементов при сложной логике программы будет либо простаивать, либо работать, но вхолостую (без использования результата). На кластерной архитектуре также, в случае разбиения схемы БПФ на блоки по процессорам, возникнут сложности, если разбивать придётся части схемы, реализующие ПФ меньшей размерности (разных делителей N). Всё это также приводит к тому, что реализации для степеней двойки вытесняют остальные алгоритмы БПФ.

К сожалению, нелинейная схема вызовов различных элементов рабочих массивов сказывается на различных реализациях БПФ порядка степени двойки, когда речь заходит об адаптации с минимизацией обменных операций (как на кластерах), либо при ограниченных ресурсах, выделенных на параллельную ветвь (как на ускорителях). При этом ряд разработчиков, сталкиваясь с тем, что все поворачивающие множители, предвычисленные им, не могут быть либо размещены в имеющейся памяти, либо быстро доставлены к месту их использования, идут на их перевычисление на каждом шаге. Это сразу сказывается на быстроте их реализаций, поскольку существенно увеличивает количество операций по сравнению с эталонным БПФ.

Более правильным шагом по преодолению ограниченности ресурсов либо минимизации пересылок, видимо, является использование такой схемы, которая заложена сама в БПФ, при её конструировании. Идея, в общем-то, настолько очевидная, что, когда у программиста есть полное разложение N на простые множители N=2k, она не всем приходит в голову: это использовать не полное разложение на простые множители, а разложение типа N=ML, где M, L - довольно большие числа, тоже являющиеся степенями двойки. Тогда мы видим, что все поворачивающие множители БПФ порядка N будут использованы только однажды - между БПФ порядка M и БПФ порядка L. Сами же эти БПФ порядков M, L можно, в зависимости от ресурсов, реализовать как БПФ степени двойки, либо тоже разложить на меньшие множители, и так - до той степени, пока ресурсов хватит, либо пересылок между компонентами МВС станет достаточно мало.

  1.  Области применения алгоритма Фурье

Преобразование Фурье используется во многих областях науки и техника строении - в теории чисел, физике, теории вероятностей, комбинаторике, обработке сигналов, статистике, криптографии, акустике, океанологии, оптике, геометрии и электроники. В обработке сигналов и связанных областях преобразование Фурье обычно рассматривается как декомпозиция сигнала на частоты и амплитуды, то есть обратимый переход от временного пространства в частотное пространство. Богатые возможности применения основываются на нескольких полезных свойствах преобразования и сжатия изображений.

Огромным плюсом и можно сказать так, что вывело преобразования, именно то, что они обратимы. Причем обратное преобразование имеет практически такую же форму, как и прямое преобразование.


  1.   Алгоритм сжатия изображений

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

Частотные коэффициенты, полученные в результате преобразования Фурье, лучше характеризует исходное изображение. Одно из свойств такого преобразования – это учёт двухмерности изображения путём его свёртки, как по вертикали, так и по горизонтали. Полученная таким образом информация является частотной характеристикой изображения и успешно используется для дальнейшей классификации.

Само преобразование имеет следующий вид:

Дано полутоновое изображение MxN, M – ширина, N – высота изображения. Тогда:

Где  – комплексное число,  – амплитуда,  – фаза.

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

Быстрое преобразование Фурье, основанное на разделимости его частей, которая заключается в том, что левая и правая части внутри экспоненты независимы. Преобразование может быть вычислено сначала по строкам, затем используя эти результаты – по столбцам (или наоборот) [7].

2.1.  Разновидности сжатия изображений

Формат JPEG

JPEG (произносится «джейпег», англ. JointPhotographicExpertsGroup, по названию организации-разработчика) — один из популярных графических форматов, применяемый для хранения фотоизображений и подобных им изображений. Файлы, содержащие данные JPEG, обычно имеют расширения (суффиксы) .jpeg, .jfif, .jpg, .JPG, или .JPE. Однако из них .jpg является самым популярным на всех платформах.

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

С другой стороны, JPEG малопригоден для сжатия чертежей, текстовой и знаковой графики, где резкий контраст между соседними пикселями приводит к появлению заметных искажений изображений. Сам формат не подходит для сжатия изображений при многоступенчатой обработке, так как искажения в изображения будут вноситься каждый раз при сохранении промежуточных результатов обработки. Аналогичным образом обстоят дела и с изображениями очень больших объемов, когда при  сжатии возникают заметные следы искажения изображения.

Стандарт JPEG предусматривает два основных способа представления кодируемых данных. Наиболее распространённым, поддерживаемым большинством доступных кодеков, является последовательное (sequential JPEG) представление данных, предполагающее последовательный обход кодируемого изображения поблочное, слева направо, сверху вниз. Над каждым кодируемым блоком изображения осуществляются описанные выше операции, а результаты кодирования помещаются в выходной поток в виде единственного массива кодированных данных, соответствующего последовательно пройденному (просканированному) изображению. Основной или «базовый» (baseline) режим кодирования допускает только такое представление. Расширенный (extended) режим наряду с последовательным допускает также прогрессивное (progressive JPEG) представление данных. [16]

В случае progressive JPEG сжатые данные записываются в выходной поток в виде набора сканов, каждый из которых описывает изображение полностью с всё большей степенью детализации. Это достигается либо путём записи в каждый скан не полного набора коэффициентов ДКП, а лишь какой-то их части: сначала  — низкочастотных, в следующих сканах — высокочастотных (метод «spectralselection» то есть спектральных выборок), либо путём последовательного, от скана к скану, уточнения коэффициентов ДКП (метод «successiveapproximation», то есть последовательных приближений). Такое прогрессивное представление данных оказывается особенно полезным при передаче сжатых изображений с использованием низкоскоростных каналов связи, поскольку позволяет получить представление обо всём изображении уже после передачи незначительной части JPEG-файла.

К недостаткам сжатия по стандарту JPEG следует отнести появление на восстановленных изображениях при высоких степенях сжатия характерных  повреждениях изображения (к примеру, местами фрагменты оттенках пикселей, ни как не соответствующие динамике изображения). Изображение рассыпается на блоки размером 8x8 пикселей (этот эффект особенно заметен на областях изображения с плавными изменениями яркости).

Формат BMP

BMP (от англ. Bitmap Picture) — формат хранения растровых изображений, разработанный компанией Microsoft.

С форматом BMP работает огромное количество программ, так как его поддержка интегрирована в операционные системы Windows и OS/2. Файлы формата BMP могут иметь расширения .bmp, .dib и .rle. Кроме того, данные этого формата включаются в двоичные файлы ресурсов RES и в PE-файлы.

Компания Microsoft также разработала для своих нужд форматы ICO и CUR, которые имеют похожую на BMP структуру. Кроме этого, структуры из этого формата используются некоторыми WinAPI-функциями подсистемы GDI.

Глубина цвета в данном формате может быть 1, 4, 8, 16, 24, 32, 48 бит на пиксель. При этом для глубины цвета меньше 16 бит используется палитра с полноцветными компонентами глубиной 24 бита.

В формате BMP изображения могут храниться как есть или же с применением некоторых распространённых алгоритмов сжатия. В частности, формат BMP поддерживает RLE-сжатие без потери качества, а современные операционные системы и программное обеспечение позволяют использовать JPEG и PNG (эти форматы встраиваются в BMP как в контейнер).

Палитра может содержать последовательность четырёхбайтовых полей по числу доступных цветов (256 для 8-битного изображения). Три младшие байта каждого поля определяют интенсивность красной, зелёной и синей компоненты цвета, старший байт не используется. Каждый пиксель изображения описан в таком случае одним байтом, содержащим номер поля палитры, в котором сохранен цвет этого пикселя.

Если пиксель изображения описывается 16-битным числом, палитра может хранить три двухбайтных значения, каждое из которых определяет маску для извлечения из 16-битного пикселя красной, зелёной и синей компоненты цвета.

Файл BMP может не содержать палитры, если в нём хранится несжатое полноцветное изображение.

Данные изображения

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

В bmp-файлах с глубиной цвета 24 бита, байты цвета каждого пикселя хранятся в обратном порядке BGR (Blue, Green, Red)

B bmp-файлах с глубиной цвета 32 бита, байты цвета каждого пикселя хранятся в прямом порядке ARGB(Alpha, Red, Green, Blue)

Битность изображения

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

1 бит — монохромное изображение (два цвета).

2 бита — 4 возможных цвета (режимы работы CGA) (2-битовый режим официально не стандартизован, но используется).

4 бита — 16-цветное изображение (режимы работы EGA).

8 бит (1 байт) — 256 цветов, последний из режимов, поддерживавших индексированные цвета (см. ниже).

16 бит (2 байта) — режим HiColor, Для 5-6-5 = 65536 возможных оттенков, для 5-5-5 = 32768 возможных оттенков.

24 бита (3 байта) — TrueColor. В связи с тем, что 3 байта не очень хорошо соотносятся со степенями двойки (особенно при хранении данных в памяти, где выравнивание данных по границе слова имеет значение), вместо него часто используют 32-битное изображение. В режиме TrueColor на каждый из трёх каналов (в режиме RGB) отводится по 1 байту (256 возможных значений), общее количество цветов равно 16777216.

32 бита (4 байта) — этот режим практически аналогичен TrueColor, четвёртый байт обычно не используется, или в нём располагается альфа-канал (прозрачность).

48 бит (6 байт) — редко используемый формат с повышенной точностью передачи цвета (16 бит на канал), поддерживается относительно малым количеством программ и оборудования.

Индексированные цвета

При количестве бит 1 (2 цвета), 2 (4 цвета), 4 (16 цветов) или 8 (256 цветов) на каждый пиксель, может использоваться специальный режим индексированных цветов. В этом случае число, соответствующее каждому пикселю, указывает не на цвет, а на номер цвета в палитре. Благодаря использованию палитры имеется возможность адаптировать изображение к цветам, присутствующим на изображении. В таком случае изображение ограничено не заданными цветами, а максимальным количеством одновременно используемых цветов.

2.2   Алгоритмы сжатия изображений

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

Эти методы можно приблизительно разделить на два крайних класса. Первый класс методов осуществляет сжатие исходного изображения таким образом, чтобы как можно точнее восстановить его впоследствии. В общем случае повышение качества реконструкции не даёт повышения точности распознавания. Так же информации, достаточной для распознавания, часто бывает недостаточно для качественной реконструкции.

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

В отдельный, третий, класс можно вынести методы, которые извлекают характеристики изображения, имея информацию об изображённых объектах. Например, для изображений лиц это может быть нахождение ключевых точек (уголки/центры глаз, носа, рта), нахождение ключевых участков различными методами, выборка некоторых важных областей (вроде области носа, глаз, рта).

Как правило, ни один из методов нельзя отнести только к одному из таких классов. В большинстве методов количество извлекаемых характеристик можно изменять, и при различном их числе метод будет ближе к одному из классов [9].

Масштабирование

Это уменьшение размеров изображения, причём значения пикселей вычисляются, например, при помощи усреднения нескольких соседних пикселей или с использованием медианных фильтров. Для распознавания лиц, например, изменение масштаба с 100х160 на 25х80 (в четыре раза по горизонтали и по вертикали) не оказывает заметного влияния на точность распознавания. Аналогичная ситуация с другими приложениями в этой области. Но для больших наборов изображений, возможно, придется отказаться от чрезмерного уменьшения масштаба, поскольку при этом стираются более мелкие отличия между изображениями. Тоже самое касается остальных методов, не обеспечивающих реконструкцию по сжатому представлению.

Свертка

Существуют методы, которые вычисляют свёртку по строкам и столбцам матрицы изображения, и затем дальнейшая обработка ведётся с использованием результатов свёртки. Это на порядок снижает трудоемкость последующих вычислений, однако по полученным характеристикам изображение невозможно восстановить.

Частотные преобразования

Переход в частотную область, такими преобразованиями как Фурье, косинусное, Уолша-Адамара, позволяет получить набор коэффициентов, характеризующих изображение в частотном виде. Некоторую функцию можно представить в виде суммы синусоид различного периода, умноженных на некоторые коэффициенты. Набор синусоидальных функций представляют собой ортонормальный базис, и поэтому коэффициенты несут максимально независимую информацию. Частотные преобразования позволяют вычислить эти коэффициенты. Таким образом, каждый коэффициент характеризует всю функцию целиком, а не в окрестности одной точки в отличие, например, от коэффициентов полиномов при разложении в ряды Тейлора. Коэффициенты, соответствующие низким частотам, характеризуют общую форму изображения, высоким частотам – резкие грани и различные мелкие детали. Причём по небольшой части низкочастотных коэффициентов (10-50% от всего числа коэффициентов) можно с высокой степенью точности реконструировать исходное изображение (на глаз практически неотличимо). Задачи реконструкции и распознавания связаны между собой, потому что многие современные форматы хранят изображения в сжатом виде, и в большинстве из них используются частотные преобразования (JPEG, MPEG). Алгоритмы распознавания, основанные на частотных коэффициентах, при небольшой модификации позволяют распознавать изображение в сжатом виде. Возможно так же использование блочных частотных преобразований. Частотные преобразования в этом случае вычисляются для блоков изображения, что значительно уменьшает время преобразования. Но при этом уменьшение размерности будет не таким большим (порядка 2%-20%). Такое преобразование может быть использовано вместо масштабирования, т.к. оно лучше представляет изображение и в то же время менее избыточно.

Вейвлеты

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

Моменты

При вычислении различных моментов, таких как Лежандра, Зернике и т.п., так же получается набор коэффициентов, по небольшому набору первых из них можно достаточно точно восстановить изображение. Для распознавания используются часть таких коэффициентов (обычно первые). Различные моменты обладают дополнительными преимуществами, такими как инвариантность к различным аффинным преобразованиям: сдвиг, поворот, масштаб. Кроме того, реконструкция зашумленных изображений по первым коэффициентам более близка к исходному изображению, а не к зашумленному. Реконструкция с применением большего числа коэффициентов приближает реконструкцию к зашумленному оригиналу. Наилучшими, в соотношении точность распознавания/производительность показывают себя моменты Лежандра. Было отмечено, что использование моментных функций выше 20-го порядка не даёт дальнейшего повышения производительности, а в ряде случаев её ухудшает. Предыдущие методы работали с единственным изображением. Последующие методы работают с набором изображений и основываются на том факте, что изображения в наборе имеют некоторое сходство. Эти методы извлекают характеристики, анализируя все изображения в наборе. Полученные характеристики отражают наиболее общие черты таких изображений [9] [15].

Главные компоненты

Изображение представляется в виде n-мерного (n-число пикселей) вектора. Каждое изображение можно представить в виде линейной комбинации векторов той же размерности что и само изображение. Собственные вектора линейно независимы и позволяют реконструировать изображение с максимальным качеством. Каждому вектору соответствует собственное число, величина которого определяет степень вклада собственного вектора в реконструкцию изображения. Собственные вектора, имеющие большие собственные числа, становятся первыми. Количество собственных векторов равно числу изображений в наборе, поэтому выбирают небольшое число собственных векторов (10-100), имеющих наибольшие собственные числа. Коэффициенты при таких векторах называются главными компонентами. Изображение может быть разложено на главные компоненты, а затем реконструировано по ним с высокой точностью. Для изображений собственные вектора иногда называют собственными картинками (eigenpictures). Для изображений лиц – собственными лицами (eigenfaces). Если лица одинаково отцентрированы, имеют одинаковые ракурсы съёмок и углы поворота, то получившиеся собственные лица будут иметь лицеподобную форму. В этом случае будет очень хорошее качество реконструкции, а главные компоненты отражают характеристики конкретного человека. Если изображения лиц имеют различный ракурс, поворот и т.п., то собственные лица не будут иметь чёткой лицеподобной формы, реконструкция в этом случае будет хуже, главные компоненты будут отражать так же изменения условий съёмки (ракурс, освещение), а точность распознавания при этом будет хуже.


  1.  Программная реализация алгоритма сжатия изображений

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

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

3.1.  Выбор языка программирования для реализации поставленной задачи

BASIC

(Beginner'sAll-purposeSymbolicInstructionCode) Рожденный в 60-е годы в Америке (столь любящей простые решения), Бейсик был задуман как простой язык для быстрого освоения. Бейсик стал фактическим стандартом для МикроЭВМ именно благодаря своей простоте как в освоении так и в реализации.

Однако для достижения этого качества был принят ряд решений (отсутствие типизации, нумерация строк и неструктурное GOTO, и др.), негативно сказывающихся на стиле изучающих программирование. Кроме того, недостаток выразительных средств привел к появлению огромного количества диалектов языка, не совместимых между собой.

Современные, специализированные версии Бейсика (такие как VisualBasic) несмотря на приобретенную "структурность" обладают все теми же недостатками, прежде всего - небрежностью по отношению к типам и описаниям.

Пригоден для использования на начальном этапе обучения, как средство автоматизации (в случаях, когда он встроен в соответствующие системы) либо как средство для быстрого создания приложений [10].

Pascal

Разработанный известным теоретиком Н.Виртом на основе идей Алгола-68, Паскаль предназначался прежде всего для обучения программированию. Построенный по принципу "необходимо и достаточно", он располагает строгим контролем типов, конструкциями для описания произвольных структур данных, небольшим, но достаточным набором операторов структурного программирования.

К сожалению, обратной стороной простоты и строгости является громоздкость описаний конструкций языка. Наиболее известная реализация - Turbo/BorlandPascal - несмотря на отличия от стандарта Паскаля, представляет из себя среду и набор библиотек, сделавшие из учебного языка промышленную систему для разработки программ в среде MS-DOS.

Assembler

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

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

C и C++

В основе языка C - требования системного программиста: полный и эффективный доступ ко всем ресурсам компьютера, средства программирования высокого уровня, переносимость программ между различными платформами и операционными системами. С++, сохраняя совместимость с C, вносит возможности объектно-ориентированного программирования, выражая идею класса (объекта) как определяемого пользователем типа.

Благодаря перечисленным качествам, C/C++ занял позицию универсального языка для любых задач. Но его применение может стать неэффективным там, где требуется получить готовый к употреблению результат в кратчайшие сроки, либо там, где невыгодным становится сам процедурный подход.

Delphi

После продолжительной борьбы на фронте программных сред для Windows, Borland (ныне Inprise) ушла на рынок корпоративных систем. Delphi - это не продолжатель дела BorlandPascal / Borland C, его ниша - т.н. быстрое создание приложений (RapidApplicationDeveloping, RAD).

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

Java

Как яркий пример специализации, язык Java появился в ответ на потребность в идеально переносимом языке, программы на котором эффективно исполняются на стороне клиента .Ввиду специфики окружения, Javaможет быть хорошим выбором для системы, построенной на Internet/Intranet технологии.


3.2.  Структура приложения и форматов данных

Необходимо должным образом уделить внимание внешней структуре программы. Как можно лучше сделать ее интуитивно понятной, а так же простой  в использовании, а так же обладать дружественным интерфейсом. Да бы у пользователя оставалось как можно меньше вопросов в ее использовании. Программное обеспечение должно отображать одновременно входные и выходные данные (обратный процесс Фурье), для возможного их визуального анализа.  

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

Для отображения изображение использоваться стандартные компоненты TImage, они отлично работаю со всем стандартными форматами, и предоставляют полотно попиксельно, для дальнейшего преобразования функций.  Что, касаясь самих функций, то была необходимость отдельно подключения математических библиотек «math.h». Это стандартная математическая библиотека, которая поставляется практически к каждой среде разработки.

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

Что, касаясь преобразования изображений, то понадобится отдельно задавать класс для формата JPG, на случаи, если изначально формат изображения, к примеру «bmp» или другой. Нам будет необходимо брать полотно эталона и импортировать его в формат jpg и лишь только после применять к нему функции.

Для того что бы  предоставить возможность увеличивать разные участки изображений, и возможность точно строить математический график на основе входных и выходных данных, были применены дополнительные библиотеки «Alpha» и «TChart». Эти библиотеки являются свободными в распространении и подходят для большинства основных сред разработки.

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


3.3.  Описание пользовательского интерфейса

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

Системные требования:

  •  Операционная система:  Windows 95 / 98/ 2000 /2003/ XP /7 / 8
  •  Процессор:  Pentium 90 МГц,
  •  Память: 16 МБ ОЗУ,
  •  Дисплей: 640x480 8-битный

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

  1.  Открыть директорию с программой (Рис.1)

Рис.1 Папка с программным обеспечением

  1.  Выделить файл и запустить двойным нажатием мыши или кнопкой «Enter» (Рис.2)

Рис.2 Запущенная программа

Загрузка изображения

Загрузка изображения осуществляется стандартным способом «Файл -> Загрузить» (Рис.3).

Рис.3 Кнопка «Загрузить»

Далее через диалоговое окно программы необходимо задать  директорию и выбрать изображение. Нажать «Открыть» (Рис.4)

Рис.4 Выбор изображения

Выбранное изображение отобразится в первой рамке программы (Рис.5). Одновременно с загрузкой будет автоматически вычислен объем изображения, его длина и ширина, которые отображены на графике программы и в меню «Информация об эталоне изображения» (Рис.6).

Рис.5 Загруженное изображение

Рис.6 Размер эталонного изображения

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

Преобразования изображения

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

  •  Light -минимальное
  •  Medium -среднее
  •  High -максимальное

В зависимости от выбранной компрессии (поле «Функционал» (Рис.7)), будет осуществлено сжатие изображения.

Рис.7 Типы компрессии

По выбору компрессии необходимо нажать «Преобразовать». Результаты работы программы (изначальное сжатие а далее автоматическое восстановление изображения,а так же масса результата) будут отображены во второй рамке программы (Рис.8).

Рис.8 Среднее сжатие изображения

Управление

Программа оснащена электронной лупой. Это необходимо для детального визуального сравнения эталона и восстановленной копией изображения между собой.

Запустить гаджет можно по нажатию кнопки «Увеличить» в меню «Функционал» программы (Рис.9)

Рис.9 Вызов электронной лупы программы

Функционал лупы распространяется на все элементы видимых частей экрана. Путем нажатия правой кнопки, можно выбрать степень увеличения изображения под лупой (Рис.10).

Рис.10 Возможно 2 , 4, 8 или 16 кратное увеличение

Закрытие увеличителя, возможно просто по нажатию «Esc» или «Close» по нажатию правой кнопки мыши.

Сохранение результатов

Сохранение результатов возможно, только при наличии результата компрессии в программе, путем нажатия «Файл -> Сохранить» (Рис.11).

Рис.11 Кнопка «Сохранить»

Далее в окне программы необходимо задать название сохраненным результатам (Рис.12). По умолчанию система определит им название «Test». Нажать «Сохранить».

Рис.12 Диалоговое окно сохранения результатов

Программа автоматически сохранит результат работы. (Рис.13).

Рис.13 Сохранение результата программы

График

Для удобства анализа данных, были предусмотрены некоторые настройки отображения данных на графике. Путем отмечания галок, возможно, скрывать или отображать необходимые колонки. График автоматически пересчитает объем отображения фигур  (Рис.14).

Рис.14 Выбран только один столбец для отображения

Есть возможность отключения, как сетки, так и 3D отображения фигур. В некоторых случаях это позволит более детально визуально воспринять разницу между столбцами (Рис.15).

Рис 15 Отключение сетки и 3D отображения фигур.

3.4.  Вывод при выборе среды разработки

Проанализировав спецификации основных языков программирования и их направленность, был выделен язык C++. Исходя из поставленной задачи, он является наиболее гибким и применим к ее решению. Вторым и немало важным фактором является то, что по своей структуре относится так сказать к языку с быстрой функциональностью и надежностью (стабильная и быстрая обработка большого количества данных).

К тому же не мало важно, что под язык С++ есть не малое количество удобных компиляторов и готовых библиотек, которые могут ускорить процесс реализации поставленной задачи.

Перебрав наиболее популярный компилятор языка С++, я оставил выбор на среде Borland C++ Builder. Важным плюсом среды является частичная готовность компонент визуализации для пользователя, что может на порядок может сократить работу над программой.


  1.   Анализ эффективности программной реализации

Рассмотренная архитектура и многообразие различных алгоритмов быстрого преобразования Фурье позволяют выполнять вычисления, значительно превосходящие возможности обычного персонального компьютера. Вычислительные возможности параллельных вычислительных систем позволяют получить планируемые результаты для выполнения дискретного двумерного быстрого преобразования Фурье в реальном времени для больших изображений.

Как вывод проделанной работы можно сказать следующее. Почти каждая научное направление человечества невозможно представить без преобразований Фурье. В этой работе необходимо было предоставить возможность метода сжатия изображения на предмете программной реализации. В эру наиболее развитой компьютерной промышленности, а так же развитие все новых областей  с применением оцифровки изображение, их хранением, а так же перенос и отображением в массы. Тема конвертации и компрессии изображения будет актуальна. Также мы понимаем, что компрессия затрагивает не только области развития работы с изображением, а так же понижает и удешевляет системы требования для их вычисления и хранения.

К примеру, на момент написания статьи, средняя стоимость в год аренда сервера хранения изображений, была около 300$ в год за один гигабайт информации. Конечно, понимается, что благодаря качественному сжатию, можно увеличить объемы хранимой информации, без повышения стоимости. Это всего один из немногих примеров, которые указывает на актуальность данной темы.

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

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

За основу было взято такие входящие данные как размер и объем изображения, его формат. Так как программа в процессе работы самостоятельно приводит все форматы к единому JPG, было интересно играет ли весомую роль фактор преобразования форматов внутренними средствами языка с++.

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

К примеру, работая с изображением больших объемов (800кб и выше), мы получаем довольно качественное и весомое сжатие (около 80 кб). Это в 10 раз меньше искомого. Мы вполне можем нагружать таким продуктом ресурсы, не боясь за возможные нагрузки и нехватки физического пространства для их хранения. Но, как и у многого есть и обратная сторона медали. В случаи если необходимости произвести обратную функцию (восстановления) изображения, не получится вернуть и 50% от эталона. Где это может сказаться? К примеру, в тех случаях, когда нужно все детали оцифрованного изображения, но вследствие сжатия для хранения и дальнейшего восстановления не сможем получить отчетливую схему.

С изображениями малого объема (до 100кб к примеру), дела обстоят иначе. Небольшие картинки плохо сжимаются, и практически идентично позволяют себя восстановить. Преследуя цель как можно больше уменьшить небольшую картинку, прибегаем к большому уровню сжатия, что приводит к большой потери качество (что не было необходимости у больших картинок). В следствии можно потерять, если не частично, так полную концепцию доносимой до нас информации. Таким образом, производя компрессию и так уже небольших изображений, выигрывается мало.

Что касается экспериментов с все возможными форматами изображений, то тут дела обстоят не менее интересными, чем с размерами. Можно напомнить, что каждый формат для чего предрасположен, где то с ним проще работать, а где то только с ним и можно работать.  В этой работе преследована цель, только уменьшения изображения. Опыт показал, что даже не значительная картинка формата bmp, может весить до 1mb. Вследствие ее клона, но в формате jpg, мы получим 24kb без каких-то либо потерь (или в некоторых случаях не весомых потерь). В следствии вывод для меня очевиден, преследуя цель уменьшения объема картинки, необходимо производить ее экспорт.

4.2.  Данные участвующие в эксперименте

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

Формат эталона

Размер эталона

Объем эталона

Результат сжатия

BMP

800х800

1200kb

60,9 kb

BMP

80х80

56 kb

8,3 kb

JPG

80800

400 kb

23,7 kb

JPG

80х80

2,2 kb

1,2

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

Можно отметить колоссальный прирост экономии физического место хранения для результатов Фурье. В связке с импортом в JPG, избавление от зависимости от других форматов, и получение на выходе интересующий  продукт в удовлетворяющем объеме.


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

  1.  Методические указания по выполнению дипломных работ для студентов специальности 010501 (010200) – прикладная математика и информатика / сост. Е.В.Хмельницкая; Владим. гос. ун-т. – Владимир: Изд-во Владим. гос. ун-т, 2006. –52 с.
  2.  Требования к дипломным и курсовым работам и отчетам о производственной практике по специальности 010501 – прикладная математика и информатика. Методические указания / сост. Ф.И.Иванов, Ю.Д.Корольков, Л.В.Рожина. – Иркутск: ИГУ, 2005. –18 с.
  3.  ГОСТ 19.105-78 Общие требования к программным документам. Настоящий стандарт устанавливает общие требования к оформлению программных документов для вычислительных машин, комплексов и систем, независимо от их назначения и области применения и предусмотренных стандартами Единой системы программной документации (ЕСПД) для любого способа выполнения документов на различных носителях данных.
  4.  ГОСТ 19.103-77 Обозначения программ и программных документов.Настоящий стандарт устанавливает структуру обозначения программ и программных документов для вычислительных машин, комплексов и систем независимо от их назначения и области применения.
  5.  ГОСТ 34.601-90 Автоматизированные системы. Стадии создания .Настоящий стандарт распространяется на автоматизированные системы (АС), используемые в различных видах деятельности (исследование, проектирование, управление и т.п.), включая их сочетания, создаваемые в организациях, объединениях и на предприятиях (далее - организациях).
  6.  Сойфер В.А. Компьютерная обработка изображений. Часть 2. Методы и алгоритмы. – Соросовский образовательный журнал №3, 1996.
  7.  Апальков И.В., Хрящев В.В. Удаление шума из изображений на основе нелинейных алгоритмов с использованием ранговой статистики. - Ярославский государственный университет, 2007.
  8.  А.Н.Божко, Д.М.Жук, В.Б.Маничев. Компьютерная графика
  9.  Павлидис Т. Алгоритмы машинной графики и обработки изображений.
  10.  Яншин В. В., Калинин Г. А. Обработка изображений на языке Си для IBM PC: Алгоритмы и программы.  
  11.  Яне Б. Цифровая обработка изображений.
  12.  Р Гонсалес, Р. Вудс. Цифровая обработка изображений
  13.  Анисимов Б.В., Курганов В.Д., Злобин В.К. Распознавание и цифровая обработка изображений.
  14.  Краткое описание разновидностей преобразования  Фурье: [Электронный ресурс]. / сост. А. Б Сергиенко, М. А. Павлейно, В. М. Ромаданов. : Дата обновления: 23 февраля 2013 URL  http://ru.vlab.wikia.com/wiki/Преобразование_Фурье  (дата обращения 7.05.2013)
  15.  Методы компрессии и сжатия изображений : [Электронный ресурс]. / сост. Евгений Кузнецов. : [1999 – 2009]. Дата обновления: 9:34, 10 июля 2009. URL http://www.infocity.kiev.ua/graf/content/graf143.phtml (дата обращения  5.05.2013)
  16.   Описание формата JPEG : [Электронный ресурс]. / сост.: Джимми Уэйлс; USA. SF : Своб. Энцикл. [2001 –          ]. Дата обновления: 22:37, 25 апреля 2013. URL:   http://ru.wikipedia.org/wiki/JPEG (дата обращения 10.05.2013)


Приложения

Рис. Блок-схема алгоритма программной реализации ДПФ для сжатия графических данных

Рис. Блок-схема алгоритма программной реализации ДПФ для сжатия графических данных

Листинг 1. Исходный код программы «cpp» файл

Unit2.cpp

//---------------------------------------------------------------------------

//Далее перечень библиотек необходимых для кореектной работы прграммы

#include<vcl.h>

#pragmahdrstop

#include<math.h> //  для работы с мат. функциями.

#include<jpeg.hpp>// для работы с JPG форматом

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

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

#pragma link "sSkinManager"

#pragma link "sDialogs"

#pragma link "acAlphaImageList"

#pragma link "acPNG"

#pragma link "sPanel"

#pragma link "sGroupBox"

#pragma link "acMagn"

#pragma link "sLabel"

#pragma link "sBitBtn"

#pragma link "sTrackBar"

#pragma link "sRadioButton"

#pragma link "sButton"

#pragma link "sMemo"

#pragma link "sSkinProvider"

#pragma link "sBevel"

#pragma link "sCheckBox"

#pragma resource "*.dfm"

TForm2 *Form2;

inta,b,c;  //размер изображений

boolsa=0;//промежуточная переменная

doubleRef,Imf,Amf;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

 : TForm(Owner)

{

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

Form2->DoubleBuffered=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::N2Click(TObject *Sender)

{

//Загрузка эталона изображения

//Открываем директорию с изображением

if(sOpenPictureDialog1->Execute())

{

 // Загружаем и отбражаем эталон на форме програмы

 Image3->Picture->LoadFromFile(sOpenPictureDialog1->FileName);

//Отображаем данные об эталоне  на форме

 sLabel1->Caption="Имя: "+ExtractFileName (sOpenPictureDialog1->FileName);

sLabel2->Caption="Формат: "+ExtractFileExt (sOpenPictureDialog1->FileName);

sLabel3->Caption="Объем: "+ IntToStr(GetFileSize (sOpenPictureDialog1->FileName));

sLabel4->Caption="Размер: "+IntToStr(Image1->Width)+" X "+IntToStr(Image1->Height);

//Очищаем первый блок на графике

 Series1->Clear();

  // Строим новую колонку с весом  в кб эталона

 Series1->AddXY(10,GetFileSize (sOpenPictureDialog1->FileName),"", Series1->Color);

//Запоминаем размер эталанона, далее он нам пригодится в построении отчета

 a= GetFileSize (sOpenPictureDialog1->FileName);

}

}

//---------------------------------------------------------------------------

void __fastcall TForm2::sBitBtn1Click(TObject *Sender)

{

//Запуск преобразования Фурье

//проверяем естьли картинка , если нет, то не чиго не делаем

if(sLabel3->Caption!="Объем:")

{

//Очищаем столбец графика перед  построением обратного процесса Фурье новым вычислением

Series3->Clear();

//создаемпеременую JPG, далее в нее будут записан эталон

TJPEGImage * img = new TJPEGImage();

//Peremenayatipastrokidlya, onabudetotobrajat' vyvod

AnsiStringst;

//Была выбрана минимальная нагрузка

switch(sTrackBar1->Position)

{

case 0:

N=2;

break;

st="МИНИМАЛЬНОЕ";

}

case 1:

 

   //Былавыбранасредняянагрузка

   N=10;

break;

   st="СРЕДНЕЕ";

  

case 2:    

//Была выбрана максимальная нагрузка

    N=20;

    st="МАКСИМАЛЬНОЕ";

 break;

  

BYTE*LinePtrIm;

BYTE*LinePtrFur;

double col;

intu,v,x,y,S;

//строиммасивпикселейотэталона

int W=Image1->Picture->Bitmap->Width;

int H=Image1->Picture->Bitmap->Height;

S=W*H;

 //izna4al'no dubliruemizobrajenieidaleebudem ego sjymat'

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

Image2->Picture->Bitmap->Assign(Image1->Picture->Bitmap);

double arg;

Ref=0;

Imf=0;

for (v=0;v<H;v++)

 {

LinePtrFur=(BYTE*)Image2->Picture->Bitmap->ScanLine[v];

   {

       for(u=0;u<3*W;u=u+3)

  {

  Ref=0;

 Imf=0;

   for(y=0;y<H;y++)

  {

  LinePtrIm=(BYTE*)Image1->Picture->Bitmap->ScanLine[y];

   // pomassivumohnosti N osuhestvlaemkonverciyu

   for(x=0;x<N*W;x=x+N)

    {

     col=LinePtrIm[x];

  arg=M_PI*2*(u*x*H+v*y*W)/S;

     Ref=Ref+col*cos(arg);

  Imf=Imf+col*sin(arg);

    }

           }

Amf=pow((Ref*Ref+Imf*Imf),0.5);

Amf=log(1+Amf);

LinePtrFur[u]=Amf;

LinePtrFur[u+1]=Amf;

 LinePtrFur[u+2]=Amf;

  }

   }

 }

//Осуществляемобратнуюфункцию

 W=Image2->Picture->Bitmap->Width;

 H=Image2->Picture->Bitmap->Height;

S=W*H;

 Image3->Picture->Bitmap->Assign(Image2->Picture->Bitmap);

double arg;

Ref=0;

Imf=0;

for (v=0;v<H;v++)

 {

LinePtrFur=(BYTE*)Image3->Picture->Bitmap->ScanLine[v];

   {

       for(u=0;u<3*W;u=u+3)

  {

  Ref=0;

 Imf=0;

   for(y=0;y<H;y++)

  {

  LinePtrIm=(BYTE*)Image2->Picture->Bitmap->ScanLine[y];

   // pomassivumohnosti N osuhestvlaemkonverciyu

   for(x=0;x<N/W;x=x+N)

    {

     col=LinePtrIm[x];

  arg=M_PI*2*(u*x*H+v*y*W)/S;

     Ref=Ref+col*cos(arg);

  Imf=Imf+col*sin(arg);

    }

           }

Amf=pow((Ref*Ref+Imf*Imf),0.5);

Amf=log(1+Amf);

LinePtrFur[u]=Amf;

LinePtrFur[u+1]=Amf;

 LinePtrFur[u+2]=Amf;

 }

   }

 }

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

img->SaveToFile("result"+".jpg");

//Строим столбец обратного результата на графике

Series3->AddXY(50,GetFileSize ("result"+".jpg"),"", Series3->Color);

//удаляет временый файл для взвешивания обратного результата

DeleteFile( SavePictureDialog1->FileName+".result"+".jpg");

//Строим позамером второй столбец

//

//Series2->AddXY(50,GetFileSize (SavePictureDialog1->FileName+".start"+".jpg"),"", Series2->Color);

img->Clear();

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

img->Assign(Image5->Picture->Graphic);

img->SaveToFile(SavePictureDialog1->FileName+".return" +".jpg");

//Строимпозамеромтретийстолбец

  Series3->AddXY(90,GetFileSize (SavePictureDialog1->FileName+".return" +".jpg"),"", Series3->Color);

  //в целях экономии памяти удаляем переменную, так как она нам больше не нужна

deleteimg;

}

}

}

//---------------------------------------------------------------------------

void __fastcall TForm2::G1Click(TObject *Sender)

{

//кнопка нажатия "увеличить"

//Отображаем экраннуюлуппу с координатами

sMagnifier1->Execute(100,100);

}

//---------------------------------------------------------------------------

void __fastcall TForm2::N3Click(TObject *Sender)

{

//кнопка нажатия "о программме"

//выводим сообщене с моими именем

ShowMessage ("             Дипломная работа\nМахмутовИльфатИльгизарович\n                  ГРУППА 40806");

}

//---------------------------------------------------------------------------

void __fastcall TForm2::N1Click(TObject *Sender)

{

//функциясохранения

if (SavePictureDialog1->Execute())

{

img->SaveToFile(SavePictureDialog1->FileName+".jpg");

}

}

//---------------------------------------------------------------------------

void __fastcall TForm2::sCheckBox1Click(TObject *Sender)

{

//galka 3Д , включает и включает объемнось столбцов

if(sCheckBox1->Checked)

 Chart1->View3D=true;

  else

    Chart1->View3D=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::sCheckBox2Click(TObject *Sender)

{

//galka сетки , включает и включает сетку графика

if(sCheckBox2->Checked)

 Chart1->AxisVisible=true;

  else

    Chart1->AxisVisible=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::sCheckBox3Click(TObject *Sender)

{

//скрыветграфик,при том эталанноеизобраение помещается на его место

if(sCheckBox3->Checked)

{

Chart1->Visible=true;

   sPanel1->Height= 150;

   sPanel1->Width= 150;

   sPanel1->Left=272;

   sPanel1->Top=8;

   Image1->Visible=true;

}

  else

  {

   sPanel1->Height= Chart1->Height;

   sPanel1->Width= Chart1-> Width;

   sPanel1->Left=Chart1->Left;

   sPanel1->Top=Chart1->Top;

   Chart1->Visible=false;

   Image1->Visible=false;

  }

}

//---------------------------------------------------------------------------

void __fastcall TForm2::D1Click(TObject *Sender)

{

// выходизпрограммы

exit(0);

}

//---------------------------------------------------------------------------

void __fastcall TForm2::sTrackBar1Change(TObject *Sender)

{

//отображаем на форме какой вариант сжатия выбран

switch(sTrackBar1->Position)

{

case 0: sLabelFX2->Caption="Light";break;

case 1: sLabelFX2->Caption="Medium";break;

case 2: sLabelFX2->Caption="High";break;

}

}

void __fastcall TForm2::Image2Click(TObject *Sender)

{

//создаем новую форму, и на ней размещаем компонент типа Image, поему нажатию будет открываться обратный вариант в новом окне

TForm* Form3 = new TForm(this);

Form3->Parent= Form3;

TImage * im =new TImage (Form3);

im->Parent= Form3;

im->Picture=Image2->Picture;

im->AutoSize=true;

Form3->AutoSize=true;

Form3->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Image1Click(TObject *Sender)

{

//создаем новую форму, и на ней размещаем компонент типа Image, поему нажатию будет открываться эталон в новом окне

TForm* Form3 = new TForm(this);

Form3->Parent= Form3;

TImage * im =new TImage (Form3);

im->Parent= Form3;

im->Picture=Image1->Picture;

im->AutoSize=true;

Form3->AutoSize=true;

Form3->Show();

}

//---------------------------------------------------------------------------

Листинг 2. Исходный код программы «h» файл

Unit2.h

//---------------------------------------------------------------------------

#ifndef Unit2H

#define Unit2H

//---------------------------------------------------------------------------

#include <System.Classes.hpp>

#include <Vcl.Controls.hpp>

#include <Vcl.StdCtrls.hpp>

#include <Vcl.Forms.hpp>

#include "sSkinManager.hpp"

#include "sDialogs.hpp"

#include <Vcl.Dialogs.hpp>

#include <Vcl.ExtDlgs.hpp>

#include <Vcl.Menus.hpp>

#include "acAlphaImageList.hpp"

#include <Vcl.ImgList.hpp>

#include "acPNG.hpp"

#include "sPanel.hpp"

#include <Vcl.ExtCtrls.hpp>

#include "sGroupBox.hpp"

#include <VCLTee.Chart.hpp>

#include <VCLTee.TeEngine.hpp>

#include <VCLTee.TeeProcs.hpp>

#include "acMagn.hpp"

#include "sLabel.hpp"

#include "sBitBtn.hpp"

#include <Vcl.Buttons.hpp>

#include "sTrackBar.hpp"

#include <Vcl.ComCtrls.hpp>

#include <VCLTee.TeeFilters.hpp>

#include <Vcl.Imaging.jpeg.hpp>

#include <Vcl.Graphics.hpp>

#include "sRadioButton.hpp"

#include <VCLTee.Series.hpp>

#include "sButton.hpp"

#include "sMemo.hpp"

#include "sSkinProvider.hpp"

#include "sBevel.hpp"

#include "sCheckBox.hpp"

//---------------------------------------------------------------------------

class TForm2 : public TForm

{

__published: // IDE-managed Components

TsOpenPictureDialog *sOpenPictureDialog1;

TsAlphaImageList *sAlphaImageList1;

TsPanel *sPanel1;

TImage *Image1;

TImage *Image2;

TsGroupBox *sGroupBox1;

TsGroupBox *sGroupBox2;

TsGroupBox *sGroupBox3;

TChart *Chart1;

TsLabel *sLabel1;

TsLabel *sLabel2;

TsLabel *sLabel3;

TsBitBtn *sBitBtn1;

TImage *Image3;

TPanel *Panel1;

TPanel *Panel2;

TsRadioButton *sRadioButton1;

TsRadioButton *sRadioButton2;

TsRadioButton *sRadioButton3;

TMainMenu *MainMenu1;

TMenuItem *A1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *G1;

TMenuItem *N3;

TsSkinManager *sSkinManager1;

TBarSeries *Series2;

TBarSeries *Series1;

TsMagnifier *sMagnifier1;

TsMemo *sMemo1;

TBarSeries *Series3;

TSavePictureDialog *SavePictureDialog1;

TsBevel *sBevel1;

TsCheckBox *sCheckBox1;

TsCheckBox *sCheckBox2;

TsCheckBox *sCheckBox3;

TMenuItem *D1;

TImage *Image4;

TImage *Image5;

void __fastcall N2Click(TObject *Sender);

void __fastcall sBitBtn1Click(TObject *Sender);

void __fastcall G1Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

void __fastcall sCheckBox1Click(TObject *Sender);

void __fastcall sCheckBox2Click(TObject *Sender);

void __fastcall sCheckBox3Click(TObject *Sender);

void __fastcall D1Click(TObject *Sender);

private: // User declarations

public:  // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm2 *Form2;

//---------------------------------------------------------------------------

#endif

PAGE   \* MERGEFORMAT 4


 

А также другие работы, которые могут Вас заинтересовать

83541. Режим морських портів 36.21 KB
  Прибережна держава самостійно вирішує питання про характер порту зокрема його закритість або відкритість для міжнародного судноплавства. Прибережна держава не повинна проте відмовляти у дозволі на вхід до закритого порту судну яке знаходиться в небезпеці у випадку аварії або штормової погоди судну що зазнає лихо. З метою забезпечення власної безпеки прибережна держава може. Прибережна держава зазвичай не втручається у відносини між капітаном екіпажем та пасажирами.
83542. Правовий режим архіпелажних вод 38.18 KB
  Суверенна влада прибережної держави обмежена правом безперешкодного проходу та правом архіпелажного проходу морськими коридорами що надається іноземним морським та повітряним суднам в архіпелажних водах ст. Архіпелажний прохід морськими коридорами означає що усі судна і літальні апарати користуються правом архіпелажного проходу такими морськими коридорами і прольоту по таким повітряним коридорам з ціллю безперервного і швидкого транзиту через архіпелажні води з однієї частини відкритого моря або виключної економічної зони до іншої частини...
83543. Поняття і межі територіального моря. Право мирного проходу. Правовий режим територіальних вод 37.22 KB
  Правовий режим територіальних вод Територіальне море це пояс морських вод шириною до 12 морських миль що розташований між берегом чи безпосередньо за внутрішніми морськими водами або архіпелажними водами держави та відкритим морем або водами спеціальних зон. Територіальне море як й внутрішні морські води є частиною території прибережної держави. На підставі цього права торгівельні судна можуть проходити через територіальне море іноземної держави без спеціального дозволу лише за умови дотримання права прибережної держави. Прохід...
83544. Поняття та правовий режим прилеглої зони 36.05 KB
  Сстановлює що прилегла зона не може пролягати далі ніж на 12 морських миль від вихідної лінії від якої відміряється ширина територіального моря проте Конвенція з морського права 1982 р. містить положення що прилегла зона не може пролягати за межі 24 морських миль від цієї лінії Розвитком інституту прилеглої зони стала практика встановлення прибережними державами за межами свого територіального морязон виключного рибальства. Ширина морських зон виключного рибальства в практиці держав різниться.
83545. Виключна економічна зона та її правовий режим 33.18 KB
  Ширина виключної економічної зони не повинна перевищувати 200 морських миль що відраховуються від вихідних ліній від яких відмірюється ширина територіального моря. Прибережна держава в межах виключної економічної зони має суверенні права на розвідку розробку і збереження природних ресурсів як живих так і неживих що знаходяться у її водах на морському дні або його надрах. Прибережна держава в межах своєї виключної економічної зони користується не тільки економічними повноваженнями але й юрисдикцією щодо створення і використання штучних...
83546. Континентальний шельф і його правовий режим. Межі континентального шельфу. Делімітація континентального шельфу 36.65 KB
  Межі континентального шельфу. Делімітація континентального шельфу Відповідно до Конвенції ООН з морського права 1982 р. Підводна околиця материка включає продовження континентального масиву прибережної держави що знаходиться під водоюі складається з поверхні і надр шельфу схилу і підйому. внутрішнім кордоном континентального шельфу є зовнішня межа територіального моря лінії на відстані 12 морських миль від вихідної лінії.
83547. Відкрите море І його правовий режим. Свободи відкритого моря 37.48 KB
  Свободи відкритого моря За зовнішньою межею територіального моря знаходяться простори морів і океанів які не входять до складу територіальних вод будьякої держави і утворюють відкрите море. відкрите море визначено як усі частини моря які не входять ані до територіального моря ані до внутрішніх вод будьякої держави. встановила що положення Частини VII Відкрите море застосовуються до всіх частин моряякі не входять ані до виключної економічної зони ані до територіальною моря або внутрішніх вод будьякої держави ані до архіпелажних...
83548. Правовий статус Міжнародного району морського дна. Використання ресурсів Міжнародного району морського дна. Міжнародний орган з морського дна 35.92 KB
  Використання ресурсів Міжнародного району морського дна. Міжнародний орган з морського дна Морське дно за межами континентального шельфу і економічної зони є територією з міжнародним режимом і утворює міжнародний район морського дна далі Район. 1 Конвенції ООН з морського права 1982 р.
83549. Поняття і види міжнародних проток. Правовий статус і режим міжнародних проток 36.7 KB
  Берега протоки можуть належати одній державі або двом чи більше державам. Якщо ширина протоки перевищує подвійну ширину територіального моря прибережної держави або держав на тій частини протоки що знаходиться поза межами територіального моря діє принцип свободи судноплавства. Якщо ж ширина протоки не є більшою ніж подвійна ширина територіального моря міжнародноправовий статус протоки є подібним до статусу територіального моря так звані територіальні протоки. Традиційно на підставі звичаєвої норми міжнародного морського права в водах...