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

Автор работы: Пользователь скрыл имя, 22 Января 2013 в 22:55, дипломная работа

Краткое описание

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

Содержание

ВВЕДЕНИЕ
1.ОСНОВНАЯ ЧАСТЬ
1.1 Цифровая обработка изображений
1.1.1 Представление изображения в цифровом виде
1.1.2 Области применения цифровой обработки изображений
1.1.3 Обзор методом цифровой обработки изображений
1.2. Морфологический анализ изображений
1.2.1. Символическое описание изображений
1.2.2. Связность
1.2.3. Сжатие, утончение и построение остова
1.2.4. Эрозия, наращение, размыкание и замыкание
1.2.5. Описание линий
1.2.6. Описание формы
1.2.7. Сегментация по яркости
1.2.ПРАКТИЧЕСКАЯ ЧАСТЬ
2. ЭКОНОМИЧЕСКАЯ ЧАСТЬ
2.1 СЕТЕВАЯ МОДЕЛЬ
2.1.1.ПЕРЕЧЕНЬ СОБЫТИЙ И РАБОТ
2.1.2.ПОСТРОЕНИЕ СЕТЕВОЙ МОДЕЛИ
2.1.3.ПАРАМЕТРЫ СЕТЕВОЙ МОДЕЛИ
2.1.4.АНАЛИЗ СЕТЕВОЙ МОДЕЛИ
2.2.РАСЧЕТ ЗАТРАТ НА СОЗДАНИЕ ПРОГРАММНОГО ПРОДУКТА
2.3. ОЦЕНКА ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ
3.ОХРАНА ТРУДА И ОКРУЖАЮЩЕЙ СРЕДЫ
3.1.ОСВЕЩЕННОСТЬ РАБОЧЕГО МЕСТА
3.2.ПАРАМЕТРЫ МИКРОКЛИМАТА НА РАБОЧЕМ МЕСТЕ
3.3.НОРМИРОВАНИЕ ШУМА
3.4.МЕТОДЫ ЗАЩИТЫ ОТ ШУМА
3.5. ВЕНТИЛЯЦИЯ
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ

Прикрепленные файлы: 1 файл

Дипл.doc

— 7.59 Мб (Скачать документ)

 

 
 

Фокусировка

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

% Load image

I = im2double(imread('image_src.png'));

figure(1); imshow(I); title('Исходное изображение');

 

% Blur image

PSF = fspecial('disk', 15);

Blurred = imfilter(I, PSF,'circular','conv' );

 

% Add noise

noise_mean = 0;

noise_var = 0.00001;

Blurred = imnoise(Blurred, 'gaussian', noise_mean, noise_var);

figure(2); imshow(Blurred); title('Размытое изображение');

estimated_nsr = noise_var / var(Blurred(:));

 

% Restore image

figure(3), imshow(deconvwnr(Blurred, PSF, estimated_nsr)), title('Wiener');

figure(4); imshow(deconvreg(Blurred, PSF)); title('Regul');

figure(5); imshow(deconvblind(Blurred, PSF, 100)); title('Blind');

figure(6); imshow(deconvlucy(Blurred, PSF, 100)); title('Lucy');

 
Результаты: 
 
 
Фильтр Винера 
 
 
Регуляризация по Тихонову 
 
 
Фильтр Люси-Ричардсона 
 
 
Слепая деконволюция 
 

Заключение

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

 

% Load image

I = im2double(imread('IMG_REAL.PNG'));

figure(1); imshow(I); title('Исходное изображение');

 

%PSF

PSF = fspecial('disk', 8);

noise_mean = 0;

noise_var = 0.0001;

estimated_nsr = noise_var / var(I(:));

 

I = edgetaper(I, PSF);

figure(2); imshow(deconvwnr(I, PSF, estimated_nsr)); title('Результат');

 
И получаем следующий результат: 
 
 
 
Как видно, на изображении появились новые детали, четкость стала гораздо выше, правда появились и помехи в виде «звона» на контрастных границах.   
 
Скрипт примерно тот же, только тип PSF теперь «motion»: 
 

 

% Load image

I = im2double(imread('IMG_REAL_motion_blur.PNG'));

figure(1); imshow(I); title('Исходное изображение');

 

%PSF

PSF = fspecial('motion', 14, 0);

noise_mean = 0;

noise_var = 0.0001;

estimated_nsr = noise_var / var(I(:));

 

I = edgetaper(I, PSF);

figure(2); imshow(deconvwnr(I, PSF, estimated_nsr)); title('Результат');

 
Результат: 
 
 
Качество, опять же, заметно улучшилось — стали различимы рамы на окнах, машины. Артефакты уже другие, нежели в предыдушем примере с расфокусировкой. 
 

 

Примеры деконволюции

 

 

.

 

 

 

 

 

 

 

Способы получения PSF

 
Итак, возьмем за отправную точки  описанный фильтр Винера — вообще говоря, существует множество других подходов, но все они дают примерно одинаковые результаты. Так что все описанное ниже будет справедливо и для остальных методов деконволюции. 
 
Основная задача — получить оценку функции распределения точки (PSF). Это можно сделать несколькими способами: 
1. Моделирование. Очень непросто и трудоемко, т.к. современные объективы состоят из десятка, другого различных линз и оптических элементов, часть из которых имеет асферическую форму, каждый сорт стекла имеет свои уникальные характеристики преломления лучей с той или иной длиной волны. В итоге задача корректного расчета распространение света в такой сложнейшей оптической системе с учетом влияния диафрагмы, переотражений и т.п. становится практически невозможной. И решение ее, пожалуй, доступно только разработчикам современных объективов. 
2. Непосредственное наблюдение. Вспомним, что PSF — это то, во что превращается каждая точка изображения. Т.е. если мы сформируем черный фон и одну белую точку на нем, а затем сфотографируем это с нужным значением расфокусировки, то мы получим непосредственно вид PSF. Кажется просто, но есть много нюансов и тонкостей. 
3. Вычисление или косвенное наблюдение. Присмотримся к формуле (1) процесса искажение и подумаем, как можно получить H(u,v)? Решение приходит сразу — нужно иметь исходное F(u,v) и искаженное G(u,v) изображения. Тогда поделив фурье-образ искаженного изображения на фурье-образ исходного изображения мы получим искомую PSF.  
 

Про боке

 
Идеальный объектив имеет PSF в виде круга, соответственно каждая точка превращается в круг некоторого диаметра. Кстати, это для многих неожиданность, т.к. с первого взгляда кажется, что дефокус просто растушевывает все изображение. На самом деле это два разных типа размытия — по Гауссу каждая точка превращается в нечеткое пятно (колокол Гаусса), а дефокус каждую точку превращает в круг. Соответственно и разные результаты. 
 
Но идеальных объективов у нас нет и в реальности мы получаем то или иное отклонение от идеального круга. Именно это и формирует неповторимый рисунок боке каждого объектива, заставляя фотографов тратить кучу денег на объективы с красивым боке(рисунком фона объектива) . Боке можно условно разделить на три типа: 
— Нейтральное. Это максимальное приближение к кругу 
— Мягкое. Когда края имеют меньшую яркость, чем центр 
— Жесткое. Когда края имеют большую яркость, чем центр. 
 
Рисунок ниже иллюстрирует это: 
 
 
Более того, тип боке — мягкое или жесткое зависит еще и от того, передний это фокус или задний. Т.е. фотоаппарат сфокусирован перед объектом или же за ним. К примеру, если объектив имеет мягкий рисунок боке в переднем фокусе (когда, скажем, фокус на лице, а задний план размыт), то в заднем фокусе боке того же объектива будет жестким. И наоборот. Только нейтральное боке не меняется от вида фокуса. 
 
Но и это еще не все — поскольку каждому объективу присущи те или иные геометрические искажения, то вид PSF зависит еще и от положения. В центре — близко к кругу, по краям — эллипсы и другие сплюснутые фигуры. Это хорошо видно на следующем фото — обратите внимание на правый нижний угол: 
 
 
А теперь рассмотрим подробнее два последних метода получения PSF. 
 

 

PSF — Вычисление  или косвенное наблюдение

 
Следующий подход — косвенное  наблюдение. Для этого, как писалось выше, нам нужно иметь исходное F(u,v) и искаженное G(u,v) изображения. Как их получить? Необходимо иметь один резкий и один размытый снимок одного и того изображения. Далее с помощью деления фурье-образа искаженного изображения на фурье-образ исходного изображения мы получим фурье-образ нашей искомой PSF. После чего применив обратное преобразование Фурье получим PSF в прямом виде. 
Имеем два снимка: 
 
 
 
 
И в результате получим вот такую PSF: 
 
На горизонтальную линию не обращайте внимания, это артефакт после преобразования Фурье в матлабе. Результат, скажем так, средненький — очень много шумов и детали PSF видны не так хорошо. Тем не менее, метод имеет право на существование. 
 
Описанные методы можно и нужно использовать для построения PSF при восстановлении размытых изображений. Т.к. от того, насколько эта функция приближена к реальной напрямую зависит качество восстановления исходного изображения. При несовпадении предполагаемой и реальной PSF будут наблюдаться многочисленные артефакты в виде «звона», ореолов и снижения четкости. В большинстве случаев предполагается форма PSF в виде круга. 
 

Краевые эффекты

 
Следующая проблема заключается  в том, что если напрямую применить  фильтр Винера, то на краях изображения  будет своеобразный «звон». Его причина, если объяснять на пальцах, заключается  в следующем — когда делается деконволюция для тех точек, которые расположены на краях, то при сборке не хватает пикселей, которые находятся за краями изображения и они принимаются либо равным нулю, либо берутся с противоположной стороны (зависит от реализации фильтра Винера и преобразования Фурье). Выглядит это так: 
 
 
Одно из решений, чтобы избежать этого состоит предобработке краев изображения. Они размываются с помощью той же самой PSF. На практике это реализуется следующем образом — берется входное изображение F(x,y), размывается с помощью PSF и получается F'(x,y), затем итоговое входное изображение F''(x,y) формируется суммированием F(x,y) и F'(x,y) с использованием весовой функции, которая на краях принимает значение 1 (точка целиком берется из размытого F'(x,y)), а на расстоянии равном (или большем) радиусу PSF от края изображения принимает значение 0. Результат получается такой — звон на краях исчез: 
 
 

 

 

 

 

ЭКОНОМИЧЕСКАЯ ЧАСТЬ

 

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

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

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

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

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

 

    1. СЕТЕВАЯ МОДЕЛЬ

 

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

 

2.ПЕРЕЧЕНЬ СОБЫТИЙ И РАБОТ

 

Составим полный перечень событий и работ по разработке программного продукта и определим их базовые показатели в соответствии с методом PERT  Результаты представлены в таблице 1.

Каждая работа имеет определенную продолжительность. Поскольку не всегда заранее известно точное время выполнения работ, для  этого зададим для продолжительности каждой работы две вероятностные оценки: tmin – минимальную (оптимистическую) и tmax – максимальную (пессимистическую). Эти величины являются исходными для расчета ожидаемого времени выполнения работ tож:

                                                                      (1)

Также рассчитаем дисперсии работ по формуле:

                                                                     (2)

 

Таблица 1.

Перечень событий и работ по проекту

Наименование

событий

Код

работы

Наименование

работы

Продолжительность

(дни)

tmin

tmax

tож

1

2

3

4

5

6

7

8

0

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

0 – 1

Составление технического задания и анализ плана разработки

6

10

5,6

0,64

1

Начало подбора данных для наполнения комплекса

1 – 2

Подбор данных для  наполнения комплекса

22

24

22,8

0,16

2

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

2 – 3

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

5

7

5,8

0,16

3

Начало разработки общей  структуры комплекса и интерфейса

3 – 4

Разработка общей структуры  комплекса и интерфейса ввода  данных

5

7

5,8

0,16

4

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

4 – 5

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

5

7

5,8

0,16

5

Начало согласования модели с руководителем проекта

5 – 6

Согласование  созданной  модели с руководителем

2

4

2,8

0,16

 

6

Начало разработки комплекса

6 – 7

Разработка общего  интерфейса комплекса

22

24

22,8

0,16

6 – 8

Заполнение комплекса  подобранными материалами

22

24

22,8

0,16

6 – 9

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

4

6

4,8

0,16

 

7

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

7 – 8

Тестирование комплекса

5

7

5,8

0,16

7 – 9

Формирование комплекса

2

4

2,8

0,16

8

Начало тестирования комплекса в работе

8 – 9

Устранение ошибок

5

7

5,8

0,16

9

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

9 – 10

Сдача готового комплекса

4

6

4,8

0,16

10

Окончание работ

           

 

2.1.2.ПОСТРОЕНИЕ СЕТЕВОЙ МОДЕЛИ

График сетевой  модели, построенный на основании  таблицы 2, представлен на рис. 8. Он представляет собой граф, вершины которого обозначают события, дуги - работы. На дугах указана продолжительность соответствующих им работ. Сетевая модель состоит из 11 событий и 13 работ.

Единственное  событие, наступающее без предшествующих ему работ – событие «Начало работ», помеченное номером«0».«Окончание работ»– событие номер«8» не имеет работ, начинающихся с него. Для корректности дальнейшего расчета необходимо, чтобы в графе «наименование события»  начало события с  номером i не зависело от начала событий с номерами, большими, чем i. Если такие случаи есть, необходимо перенумеровать начало событий, чтобы исключить их. Как видно из рисунка, это условие соблюдено: ни одна дуга не выходит из вершины с большим номером в вершину с меньшим.


 

 

 

 

Рис.7 – Сетевой график

 

 

2.1.3.ПАРАМЕТРЫ СЕТЕВОЙ МОДЕЛИ

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

 

Для всех работ рассчитаем следующие показатели:

Ранний срок начала работы:

                                         (3)

Ранний срок окончания работы:

                                        (4)

Поздний срок начала работы:

                                         (5)

Поздний срок окончания  работы:

                                       (6)

Полный резерв времени:

                                       (7)

Свободный резерв времени:

                                      (8)

 

Результаты  расчета занесем в таблицу 2.

 

 

 

 

 

Таблица 2.

Расчет параметров сетевой  модели

Код работы

Ранний срок

Поздний срок

Резервы

кр. пути

кр. пути

1

2

3

4 = 2 + 3

5 = 6 – 2

6

7 = 5 – 3

8

9

10

0 – 1

5,6

0

5,6

0

5,6

0

0

5,6

0,64

1 – 2

22,8

5,6

29,4

5,6

29,4

0

0

22,8

0,16

2 – 3

5,8

29,4

35,2

29,4

35,2

0

0

5,8

0,16

3 – 4

5,8

35,2

41

35,2

41

0

0

5,8

0,16

4 – 5

5,8

41

46,8

41

46,8

0

0

5,8

0,16

5 – 6

2,8

46,8

49,6

46,8

34,8

0

0

2,8

0,16

6 – 7

22,8

49,6

72,4

49,6

100

0

0

22,8

0,16

6 – 8

22,8

72,4

95,2

45,0

82,6

10,2

10,2

0

0

6 – 9

4,8

95,2

100

63,2

113,6

28,4

28,4

0

0

7 – 8

5,8

100

105,8

100

108,6

0

0

5,8

0,16

7 – 9

2,8

105,8

108,6

64,6

116,0

16,2

16,2

0

0

8 – 9

5,8

108,6

114,4

108,6

116,0

0

0

5,8

0,16

9 – 10

4,8

114,4

119,2

114,4

119,2

0

0

4,8

0,16

Суммарные время и дисперсия критического пути:

118,2

2,08


 

 

2.1.4.АНАЛИЗ СЕТЕВОЙ МОДЕЛИ

Проведем анализ сетевого графика на основе рассчитанных выше (см. таблицу 2) временных характеристик.

Критическим путем  является путь, состоящий из событий с нулевым запасом времени, т.е. это:

.

Продолжительность критического пути равна   дня, его суммарная дисперсия – 2,08. На рис. 7 (см. выше) критический путь дополнительно отмечен пунктирной линией.

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

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

Построим доверительный  интервал: .

 

2.2.РАСЧЕТ ЗАТРАТ НА СОЗДАНИЕ ПРОГРАММНОГО ПРОДУКТА

Затраты делятся  на следующие группы:

    • материальные затраты (бумага, картридж, диски, канцелярские товары, лицензионное программное обеспечение);
    • заработная плата за выполненную работу и дополнительные выплаты (например, за стаж, условия труда, прочие надбавки);
    • отчисления на социальные нужды (страховые взносы по ставке, равной 30%);
    • оборудование (ноутбук, принтер) и программное обеспечение;
    • прочие затраты (например, затраты на проезд, накладные расходы).

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

Расчеты затрат на создание программного продукта приведены  ниже.

    1. Материальные затраты приведены в таблице 3.

Таблица 3.

Материальные затраты

Показатель

Сумма (руб)

1

Картридж для принтера

2000

2

Бумага для принтера HP DeskJet 1280 500 листов

300

3

Набор канцелярских товаров

200

4

Flash-накопительна 4 Гб

430

5

Диск DVD – RW (1шт.)

50

6

Программное обеспечение С++

36000

ИТОГО

38980

Информация о работе Восстановление расфокусированного изображения