Исследование эффективности пространственно-временной обработки изображений с использованием статистик среднего ранга при наличии импульсных помех

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 10.06.2013
Размер файла 957,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

Критерии останова

Поскольку методы оптимизации носят итерационный характер, то при их практической реализации возникает задача определения специальных правил прерывания счета - критериев останова. Как правило, процесс оптимизации прекращается, если:

достигнута требуемая точность решения;

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

метод начал расходится или зациклился.

Этим условиям удовлетворяют следующие критерии останова, используемые в работе [11,16,17]:

,

.

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

3. Структура программы пространственно-временной обработки изображений

Результатом дипломного проекта стала рабочая версия программы пространственно-временной обработки изображений STIP32, обобщённая структурная схема которой приведена на рисунке 3.1. Программа состоит из трёх частей. Разработанный доцентом кафедры РУС Смирновым А.А. графический интерфейс пользователя (Graphical User Interface - GUI), в основу которого положена система окон и стандартных средств ввода / вывода информации (меню, таблицы, кнопки, радиокнопки, переключатели, строки ввода, списки и так далее), осуществляет взаимодействие с блоком ввода / вывода информации.

Рисунок 3.1 - Обобщенная структурная схема программы пространственно-временной обработки изображений

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

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

Структурная схема блока фильтрации изображений приведена на рисунке 3.2.

Рисунок 3.2 - Структурная схема блока фильтрации изображений

Библиотеки пространственных и временных фильтров включают в себя следующие типы фильтров:

Среднеарифметический.

Среднегеометрический.

Среднегармонический.

Среднеконтргармонический.

Медианный.

Модифицированный медианный.

Минимальный.

Максимальный.

Псевдомедианный.

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

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

Метод Ньютона.

Квазиньютоновский метод с DFP-формулой пересчета.

Квазиньютоновский метод с преобразованной BFGS-формулой.

Метод сопряженных градиентов.

В качестве метода глобальной оптимизации используется метод динамического программирования (ДП). В библиотеке алгоритмов оптимизации представлено три метода ДП:

Классический метод ДП.

Модифицированный метод ДП.

ДП со случайной сеткой.

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

4. Пользовательский интерфейс программы пространственно-временной обработки изображений

Исследование обработки реальных изображений с различными статистическими характеристиками проводится с использованием программного комплекса Space-time image processing 32 (STIP32), структура модели которого рассмотрена в предыдущем разделе.

Программа пространственно-временной обработки изображений разработана на языке Си и имеет удобный графический интерфейс пользователя. Табличный ввод данных, система окон и меню обеспечивают быстрое освоение программы, не требующее специальной подготовки. В программе реализован контроль информации, вводимой пользователем, при некорректных данных ему обеспечивается соответствующая подсказка. Вводимая информация, результаты фильтрации, а также весовые коэффициенты могут быть сохранены. Использование языка Си и Ассемблера при разработке математического ядра и интерфейса приводит к уменьшению размера исполняемого модуля и увеличению производительности базовых алгоритмов. Кроме этого, исследование влияния оптимизирующих свойств современных Си-компиляторов на производительность вычислительных программ показало, что наиболее компактный и производительный код генерирует компилятор Watcom C++ 10.0, который и был использован для создания данной программы. Программный комплекс работает на компьютерах типа IBM PC с VGA адаптером под управлением MS-DOS версии 3.30 и выше, занимает около 80K пространства на жестком диске.

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

Элементами ввода / вывода информации являются:

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

2. Выбор типа фильтрации:

3. Загрузка обрабатываемого изображения.

При нажатии на кнопку [F3] «Загрузить» появляется диалоговое окно «Обзор», в котором пользователю предоставляется возможность выбора тестового изображения в формате *.pcx.

4. Выбор параметров параметрической оптимизации.

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

Для задания параметров оптимизации пользователю необходимо:

1) Выбрать в выпадающем списке метод первого (глобального) этапа.

2) Выбрать в выпадающем списке метод второго (локального) этапа.

3) Выбрать в выпадающем списке вид барьерной функции.

4) Задать параметры локальных методов оптимизации:

– относительное приращение аргумента;

штрафной коэффициент;

пороговую точность адаптации;

относительное приращение градиента;

нижнюю границу весовых коэффициентов;

верхнюю границу весовых коэффициентов.

5) Задать параметры глобальных методов оптимизации:

– количество итераций;

– число точек на интервале.

6) Заполнить таблицу признаков оптимизации по следующему правилу: если признак оптимизации равен 0, то соответствующий весовой коэффициент не будет изменяться в ходе оптимизации, в противном случае (признак оптимизации не равен 0) - будет.

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

При нажатии клавиши F4 (кнопка «Веса»), у пользователя появляется возможность, в раскрывшемся окне «Весовые коэффициенты», редактировать или просмотреть весовые коэффициенты.

6. Загрузка ранее полученных весовых коэффициентов.

Нажатие клавиши F5 (кнопка «Загрузить веса») приводит к открытию окна «Открыть» в котором можно указать путь к ранее сохраненным весовым коэффициентам, записанным в файле с расширением *.txt, и открыть этот файл. Указание пути к файлу с весовыми коэффициентами осуществляется посредством окон «Папки» и «Диски», все найденные по указанному пути файлы с расширением *.txt будут отображены в окне «Файлы». Для выбора необходимого файла, потребуется навести на его имя, в окне «Файлы», курсор и нажать правую кнопку мыши, чтобы его подсветить, затем нажать OK.

7. Запуск процесса параметрической оптимизации.

При условии заданных ранее параметрах оптимизации, нажатие клавиши F9 (кнопка «Оптимизация») приводит к запуску процесса оптимизации.

8. Сохранение новых весовых коэффициентов.

В случае необходимости сохранения, полученных весовых коэффициентов, нажатие клавиши F2 (кнопка «Сохранить веса») приводит к открытию окна «Сохранить как».

Для сохранения коэффициентов в файле с расширением *.txt, необходимо ввести имя файла в графу «Имя файла» и указать путь сохранения, используя для этого окна «Папки» и «Диски». После этого нажать кнопку OK.

9. Установка параметров статистического анализа.

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

10. Выбор дополнительных способов обработки отфильтрованного ТВ изображения.

Нажатием клавиши F7 (кнопка «Доп. обработка»), открывается окно «Дополнительная обработка отфильтрованного изображения».

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

11. Запуск статистического анализа.

Если предварительно были заданы параметры статистического анализа, то нажатие комбинации клавиш Ctrl+F9 (кнопка «Стат. анализ») запускает процесс статистического анализа, информация о ходе которого отображается в окне «Информация о ходе статистического анализа».

12. Установка размера апертуры фильтра.

Размер апертуры устанавливается в пределах от 2 до 15.

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

Возможные значения лежат в пределах от 0 до 0.5.

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

15. Ввод значения СКО белого шума .

16. Установка значения параметра Q для контргармонического фильтра.

17. Индикаторы статистических характеристик:

1) СКО1 - СКО зашумленного изображения;

2) СКО2 - СКО отфильтрованного изображения;

3) - коэффициент улучшения СКО на выходе фильтра (дБ):

;

4) ПОСШ1 - пиковое отношение сигнал-шум на входе фильтра (дБ);

5) ПОСШ2 - пиковое отношение сигнал-шум на выходе фильтра (дБ):

;

6) Pч1 - вероятность появления черного импульсного шума на зашумленном изображении;

7) Pч2 - вероятность появления черного импульсного шума на отфильтрованном изображении (вероятность ложного воспроизведения);

8) Pб1 - вероятность появления белого импульсного шума на зашумленном изображении;

9) Pб2 - вероятность появления белого импульсного шума на отфильтрованном изображении (вероятность ложного воспроизведения);

10) Кп ср - средний коэффициент улучшения СКО на выходе фильтра, рассчитанный путем статистического усреднения по набору тестовых изображений (дБ);

11) ПОСШ1ср - среднее значение ПОСШ на входе фильтра, рассчитанное путем статистического усреднения по набору тестовых изображений (дБ);

12) ПОСШ2ср - среднее значение ПОСШ на выходе фильтра, рассчитанное путем статистического усреднения по набору тестовых изображений (дБ).

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

Таким образом, для выполнения весовой пространственной или временной фильтрации, пользователю необходимо выполнить следующие действия:

1) Выбрать в главном окне программы нужное изображение. Если же требуется произвести статистический анализ, то установить параметры статистического анализа (F8);

2) Выбрать требуемый вид фильтра;

3) Выбрать необходимый вид фильтрации;

4) Установить требуемый размер апертуры, требуемые значения СКО белого шума и вероятностей импульсного шума;

5) Выбрать метод 1-го (глобального) этапа (нет, ДП классический, ДП модифицированный или ДП со случайной сеткой);

6) Выбрать метод 2-го (локального) этапа (Ньютона, DFP, преобразованный BFGS или метод сопряженных градиентов);

7) Выбрать вид барьерной функции (логарифмическая или обратная);

8) Установить параметры глобальных и локальных методов и указать признаки;

9) Запустить оптимизацию, нажав кнопку «Оптимизация» (клавишу F9).

10) После этого результаты выполнения программы можно посмотреть на дисплее и при необходимости запустить оптимизацию повторно с другими параметрами.

5. Экспериментальная часть

В экспериментальной части дипломного проекта разработаны методика проведения и порядок выполнения лабораторной работы №1 «Исследование эффективности пространственно-временной обработки изображений с использованием статистик среднего ранга при наличии импульсных помех».

5.1 Порядок выполнения лабораторной работы №1

пространственный изображение интерфейс программа

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

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

3. Величину СКО белого шума задать равным 0.

4. Установить режим пространственной фильтрации.

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

5.1. Задать размер апертуры равным .

5.2. Снять зависимости средних значений (усредненных по набору из 10 тестовых изображений) коэффициента улучшения СКО на выходе фильтра , ПОСШ на входе и выходе фильтра от вероятности появления белого импульсного шума . Величину менять в пределах от 0.1 до 0.4 с шагом 0.1.

5.3. Снять зависимости средних значений (усредненных по набору из 10 тестовых изображений) коэффициента улучшения СКО на выходе фильтра и ПОСШ на выходе фильтра с использованием оптимальной весовой пространственной фильтрации от вероятности появления белого импульсного шума . Величину менять в пределах от 0.1 до 0.4 с шагом 0.1.

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

5.5. Задать размер апертуры равным . Повторить п.п. 5.2 - 5.4.

6. Установить режим временной фильтрации.

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

7.1. Задать размер апертуры равным .

7.2. Снять зависимости средних значений (усредненных по набору из 10 тестовых изображений) коэффициента улучшения СКО на выходе фильтра , ПОСШ на входе и выходе фильтра от вероятности появления белого импульсного шума . Величину менять в пределах от 0.1 до 0.4 с шагом 0.1.

7.3. Снять зависимости средних значений (усредненных по набору из 10 тестовых изображений) коэффициента улучшения СКО на выходе фильтра и ПОСШ на выходе фильтра с использованием оптимальной весовой временной фильтрации от вероятности появления белого импульсного шума . Величину менять в пределах от 0.1 до 0.4 с шагом 0.1.

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

7.5. Задать размер апертуры равным . Повторить п.п. 7.2 - 7.4.

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

5.2 Результаты выполнения лабораторной работы №1

Результаты выполнения лабораторной работы №1 с помощью разработанного программного комплекса STIP32 приведены на рисунках 5.1-5.20. При выполнении для примера был выбран вид фильтра с использованием статистик среднего ранга - медианный фильтр.

Режим пространственной фильтрации изображений, размер апертуры .

Таблица 5.1 - Результаты пространственной фильтрации изображений с апертурой

0,1

0,2

0,3

0,4

до оптимизации

11,39

8,05

4,13

1,49

после оптимизации

13,09

13,48

13,21

12,16

Выигрыш

1,700

5,430

9,080

10,67

ПОСШ1

14,81

11,81

10,03

8,769

ПОСШ2 до оптимизации

26,2

19,86

14,16

10,28

ПОСШ2 после оптимизации

27,9

25,27

23,26

20,95

Выигрыш ПОСШ2

1,70

5,41

9,10

10,67

В результате проведённого эксперимента следует, что при увеличении вероятности появления белого импульсного шума коэффициент улучшения СКО после использованием оптимальной весовой пространственной фильтрацией существенно не изменяется на всем диапазоне значений . В то время как коэффициент улучшения СКО до оптимизации стремится к нулю.

При увеличении вероятности появления белого импульсного шума выигрыш коэффициента улучшения СКО возрастает. Например, при выигрыш коэффициента улучшения СКО с оптимизацией примерно на 5 дБ больше, чем коэффициент улучшения без оптимизации.

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

Средний выигрыш ПОСШ на выходе фильтра, полученного в результате оптимальной весовой обработки, приблизительно на 5,2 дБ больше, чем до оптимизации при вероятности появления белого импульсного шума .

Режим пространственной фильтрации изображений, размер апертуры .

Таблица 5.2 - Результаты пространственной фильтрации изображений с апертурой

0,1

0,2

0,3

0,4

до оптимизации

10,09

11,5

8,52

3,24

после оптимизации

11,58

13,98

14,91

15,04

Выигрыш

1,490

2,480

6,390

11,800

ПОСШ1

14,83

11,82

10,05

8,78

ПОСШ2 до оптимизации

24,92

23,32

18,57

12,03

ПОСШ2 после оптимизации

26,4

25,79

24,96

23,83

Выигрыш ПОСШ2

1,48

2,47

6,39

11,80

При увеличении вероятности появления белого импульсного шума коэффициент улучшения СКО после использования оптимальной весовой пространственной фильтрацией стремится к постоянному значению, равному 15 дБ. В то время как коэффициент улучшения СКО до оптимизации стремится к нулю.

При увеличении вероятности появления белого импульсного шума выигрыш коэффициента улучшения СКО возрастает. При выигрыш коэффициента улучшения СКО с оптимизацией примерно на 3 дБ больше, чем коэффициент улучшения без оптимизации.

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

Средний выигрыш ПОСШ на выходе фильтра, полученного в результате оптимальной весовой обработки, приблизительно на 2,5 дБ больше, чем до оптимизации при вероятности появления белого импульсного шума .

Режим временной фильтрации изображений, размер апертуры .

Таблица 5.3 - Результаты временной фильтрации изображений с апертурой

0,1

0,2

0,3

0,4

до оптимизации

5,51

2,841

1,4

0,55

после оптимизации

10,13

7,3

6,2

6,12

Выигрыш

4,620

4,459

4,800

5,570

ПОСШ1

14,814

11,8

10,037

8,78

ПОСШ2 до оптимизации

20,29

14,64

11,44

9,33

ПОСШ2 после оптимизации

24,95

19,086

16,2

14,99

Выигрыш ПОСШ2

4,66

4,45

4,76

5,66

При увеличении вероятности появления белого импульсного шума коэффициент улучшения СКО до использования оптимальной весовой временной фильтрации уменьшается во всем диапазоне значений . В то время как коэффициент СКО после использования оптимальной весовой временной фильтрации стабилизируется в районе 6 дБ. При этом выигрыш от использования весовой временной фильтрации составляет 5 дБ во всем диапазоне значений .

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

Средний выигрыш ПОСШ на выходе фильтра, полученного в результате оптимальной весовой обработки, приблизительно на 4,5 дБ больше, чем до оптимизации при вероятности появления белого импульсного шума .

Режим временной фильтрации изображений, размер апертуры .

Таблица 5.4 - Результаты временной фильтрации изображений с апертурой

0,1

0,2

0,3

0,4

до оптимизации

10,72

5,4

2,62

1

после оптимизации

20,51

14,24

10,84

8,81

Выигрыш

9,790

8,840

8,220

7,810

ПОСШ1

14,79

11,8

10,04

8,78

ПОСШ2 до оптимизации

25,52

17,2

12,66

9,78

ПОСШ2 после оптимизации

35,3

26,04

20,88

17,6

Выигрыш ПОСШ2

9,78

8,84

8,22

7,82

При увеличении вероятности появления белого импульсного шума коэффициент улучшения СКО до использования оптимальной весовой временной фильтрации уменьшается во всем диапазоне значений . В то время как коэффициент улучшения СКО после использования оптимальной весовой временной фильтрации стабилизируется в районе 9 дБ. При этом выигрыш от использования весовой временной фильтрации составляет 8дБ во всем диапазоне значений .

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

Средний выигрыш ПОСШ на выходе фильтра, полученного в результате оптимальной весовой обработки, приблизительно на 8 дБ больше, чем до оптимизации при вероятности появления белого импульсного шума .

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

1. Отсутствие весовой обработки приводит к ухудшению эффективности подавления с ростом вероятности .

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

3. С точки зрения вычислительных затрат и эффективности подавления импульсных шумов наиболее эффективным является оптимальный весовой временной медианный фильтр с апертурой, равной 5.

6. Экономическая часть

6.1 Расчет ленточного графика

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

Принцип построения ленточного графика осуществляется в следующем порядке:

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

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

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

Продолжительность каждой работы Тп будет определяться по формуле:

,

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

Перечень проводимых работ указан в таблице 6.1. Там же приводятся исполнители и продолжительность выполнения работ.

Таблица 6.1 - Данные для построения ленточного графика

N

Наименование этапов

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

Исполнители

Численность исполнителей, человек

Трудоемкость, Tn

1

Составление и утверждение ТЗ

2

Р

1

2

2

Подбор литературы

2

И

1

2

3

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

3

И

1

3

4

Изучение операндов и библиотеки языка Cи

23

И

1

23

5

Разработка структуры программы

5

Р и И

2

2.5

6

Разработка алгоритмов обработки изображений

7

И

1

7

7

Написание программы по разработанному алгоритму

15

И

1

15

8

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

1

Р и И

2

0.5

9

Отладка программы

5

И

1

5

10

Оформление отчета по разработанному блоку для обработки изображений

7

И

1

7

11

Оформление чертежей на основе результатов обработки изображений

3

И

1

3

12

Утверждение отчета и чертежей

2

Р и И

2

1

13

Сдача проекта

1

И

1

1

Итого:

76

где Р - руководитель, И- исполнитель.

6.2 Расчет затрат на разработку

Составление сметы затрат на разработку

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

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

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

К этой статье относятся материалы, используемые при проектировании. Перечень материалов, цена, стоимость без учета НДС приведена в таблице 6.2.

Таблица 6.2 - Величина затрат на материалы

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

материала

Количество,

штук

Цена за единицу, руб.

Сумма, руб.

Программное средство разработки

1

4500

4500

USB - флеш-карта, 4 ГБ

1

400

400

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

1

600

600

Комплект канцелярских принадлежностей

1

150

150

Итого:

5650

В материальные затраты включаем расходы на электроэнергию:

где Р - потребляемая мощность оборудования, кВт/ч, Цэл - стоимость 1 кВт/ч, руб., Ти - время использования оборудования при проведении работ, ч.

Для выполнения работы использовался персональный компьютер потребляемой мощностью 360 Вт и принтер потребляемой мощностью 350 Вт. Время работы ПЭВМ составляет 65 дней по 8 часов в день, а принтера - 1 час.

Стоимость 1 кВт - 3,1 руб./кВт (на 2013 г.).

Получаем, что:

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

2. Затраты на оплату труда.

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

Примем, что руководитель имеет ставку 20000 рублей, исполнитель (инженер-конструктор 2 категории) имеет ставку 8000 рублей.

Таким образом, исходя из затрат времени на разработку (руководитель - 10 дней, инженер-конструктор - 74 дня), заработная плата равна:

Фонд оплаты труда составит:

3. Амортизационные отчисления.

Амортизационные отчисления учитываются в сметной стоимости научно-исследовательской работы и рассчитывается по следующей формуле:

где Фп - балансовая стоимость оборудования, Ти - время использования оборудования при проведении работ, На - норма амортизации.

где Тпи - срок службы оборудования, лет, Фэф - годовой эффективный фонд времени работы оборудования, для односменной работы он составляет Фэф = 256 дней.

Время работы на ПЭВМ в данном примере составляет 65 дней.

Срок службы компьютера - 2-3 года (на 2013 г.), тогда норма амортизации:

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

41000 рублей составят:

Общие прямые затраты составят следующую сумму:

4. Прочие расходы.

- страховые взносы берутся в размере 30,2% (в 2013 году) от величины фонда оплаты труда. В нашем примере они составят:

- величина остальных прочих расходов берется от суммы прямых общих затрат в установленном размере. Для разработки устройства они составят (20%):

Прочие расходы составят:

Общие затраты на разработку составят:

Необходимые расходы приведены в таблице 6.3.

Таблица 6.3 - Необходимые расходы на разработку

Наименование калькуляционных статей расходов

Сумма, руб.

Удельный вес, %

Материальные затраты, Зм

6231,41

9,5

Затраты на заработную плату, Фзп

36000

54,8

Амортизация оборудования, Анир

3435,35

5,23

Прочие расходы, Зпр

20005,35

30,46

Общие затраты, З

65672,11

100

Расчет цены для НИР

Цена для НИР определяется как сумма затрат на разработку, прибыли и НДС.

Прибыль составляет 40% от сметы затрат, то есть:

НДС составляет от суммы сметы затрат и прибыли, то есть:

Отсюда цена для НИР составляет:

Цена НИР разработки блока пространственно-временной обработки изображений составляет 108490,30 рублей.

6.3 Выводы по эффективности предложений

Экономическая эффективность использования разработанной программной модели очевидна. Затраты на разработку программы составляют 65672,11 рублей, а общая цена НИР - 108490,30 рублей, в то время как цена одного только осциллографа, необходимого для организации одного рабочего места в случае использования лабораторного макета, более рублей. А при стандартном оснащении, по минимуму 10 рабочих мест, это будет стоить 500000 рублей. К тому же, разработка и установка лабораторных макетов для организации подобной лабораторной работы потребует не только на порядок больших финансовых вложений, но и времени, затраченного на разработку, а также на обслуживание лабораторных макетов и измерительных приборов. Но в связи с заменой лабораторного оборудования на программный блок, установленный в ПК, осуществляется значительная экономия средств университета при закупке лабораторных макетов и оборудования. Дополнительных затрат на покупку новых ПЭВМ не потребуется, так как разработанная программа не требует больших ресурсов и может использоваться на имеющихся машинах.

С другой стороны, для аналогичных целей возможно приобретение лицензионного программного обеспечения и адаптация его для решения поставленных задач. При этом потребуется потратить значительное количество времени на адаптацию и материальных средств на приобретение лицензионного пакета программ. Так, цена лицензионного пакета MATLAB Individual составляет , вместе с приложением Statistics Toolbox Individual стоимость в пересчете по курсу около 112200 руб.

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

Заключение

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

Исследована эффективность применения методов глобальной и локальной оптимизации в задачах весовой пространственно-временной фильтрации изображений.

Разработаны методика проведения и порядок выполнения лабораторной работы №1 «Исследование эффективности пространственно-временной обработки изображений с использованием статистик среднего ранга при наличии импульсных помех».

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

Библиографический список

1. Батищев Д.И. Поисковые методы оптимального проектирования. М.: Сов. радио, 1975.

2. Гемирштерн В.И., Коган В.М. Методы оптимального проектирования. М.: Энергоиздат. 1980.

3. Гуткин Л.С. Оптимизация РЭУ. М.: Сов. радио. 1975.

4. Рейклейтис Г., Рейвиндран А., Рэгсдел К. Оптимизация в технике. В 2-х книгах. М.: Мир. 1986.

5. Аоки М. Введение в методы оптимизации. Основы и приложения нелинейного программирования. М.: Наука. 1977.

6. Базара М., Шетти К. Нелинейное программирование. Теория и алгоритмы. М.: Мир. 1982.

7. Бейко И.В., Бублик Б.Н., Зинько П.Н. Методы и алгоритмы решения. Киев: Вища школа. 1983.

8. Васильев Ф.П. Численные методы решения экстремальных задач. М.: Наука. 1988.

9. Гусин С.Ю., Омельянов Г.А., Резников Г.А., Сироткин В.С. Минимизация в инженерных расчетах на ЭВМ. М.: Машиностроение, 1981.

10. Зангвилл У.И. Нелинейное программирование. М.: Сов. радио. 1973.

11. Моисеев Н.Н., Иванилов Ю.П., Столярова Е.М. Методы оптимизации. М.: Наука. 1978.

12. Гилл Ф., Мюррей У., Райт М. Практическая оптимизация. М.: Мир. 1985.

13. Пшеничный Б.Н., Данилин Ю.М. Численные методы в экстремальных задачах. М.: Наука. 1975.

14. Сухарев А.Г., Тимохов А.В., Федоров В.В. Курс методов оптимизации. М.: Наука. 1986.

15. Химмельблау Д. Прикладное нелинейное программирование: Пер. с англ. М.: Мир, 1975.

16. Фиакко А., Мак-Кормик Г. Нелинейное программирование. Методы последовательной безусловной минимизации. М.: Мир. 1972.

17. Численные методы условной оптимизации / Под ред. Ф. Гилла и У. Мюррея. М.: Мир. 1977.

18. Поповкин В.И., Маторин А.В. Синтез антенных решеток методом типа динамического программирования // Радиотехника и электроника, 1974. Т.19. №10.

19. Маторин А.В., Смирнов А.А. Двухэтапный численный метод решения задач синтеза многоэлементных тонкопроволочных антенн и устройств сверхвысоких частот // Радиотехника и электроника. 2001. Т. 46. №6.

20. Смирнов А.А. Исследование и разработка алгоритмов параметрического синтеза устройств СВЧ в радиотехнических системах: Автореферат дис. канд. техн. наук. Рязань: РГРТА, 2000.

21. Катковник В.Я. Непараметрическая идентификация и сглаживание данных: методы локальной аппроксимации. - М.: Наука, 1985. - 336 с.

22. Гонсалес Р., Вудс Р. Цифровая обработка изображений. М: Техносфера, 2005.

23. Хуанг Т.С. (ред.) Быстрые алгоритмы в цифровой обработке изображений. Преобразования и медианные фильтры. М: Радио и связь, 1984.

24. Прэтт В.К. Цифровая обработка изображений. М: Мир, 1982.

25. Ярославский Л.П. Введение в цифровую обработку изображений. М: Советское радио, 1989.

26. Рабинер Л.Р., Голд Б. Теория и применение цифровой обработки сигналов. М: Мир, 1988.

27. Под ред. Гилла Ф., Мюррея У. Численные методы условной оптимизации. М.: Мир, 1977.

28. Васина Л.В., Евдокимова Е.Н., Рыжкова А.В. Выполнение экономической части дипломного проекта: Методические указания. Рязань: РГРТУ, 2013.

29. Зайцев Ю.В. Безопасность и экологичность проекта. Рязань: РГРТУ, 2006.

30. СанПиН 2.2.2/2.4.1340-03. Гигиенические требования к ПЭВМ и организации работы.

31. ГОСТ 12.1.038-82. Электробезопасность. Предельно допустимые значения напряжений прикосновения и токов.

32. СНиП 23-05-95. Естественное и искусственное освещение.

33. ГОСТ 12.1.004-91. Пожарная безопасность. Общие требования.

34. НПБ 166-97. Нормы пожарной безопасности. Пожарная техника. Огнетушители. Требования к эксплуатации.

35. СанПиН 2.2.2.548-96. Гигиенические требования к микроклимату производственных помещений.

36. СанПиН 2.2.4.1191-03 «Электромагнитные поля в производственных условиях»

37. ГОСТ Р 50948-2001. Средства отображения информации индивидуального пользования. Общие эргономические требования и требования безопасности.

Приложение

Листинг программы пространственно-временной обработки изображений

#define _Main_ /* Инициализация основных глобальных переменных */

#define _RUS_ /* Использовать русский язык в основных диалогах и кнопках */

#define _KEYS_ /* Включить определения основных клавиш на клавиатуре */

/* Определения для использования основных «классов» интерфейса */

#define Uses_ButtonBar

#define Uses_Cluster

#define Uses_ComboBox

#define Uses_Count

#define Uses_DTable

#define Uses_Graph

#define Uses_ImageBox

#define Uses_ListBox

#define Uses_FileList

#define Uses_StaticText

#define Uses_Table

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

#define cmFileNew 100

#define cmFileOpen 101

#define cmFileSaveAs 102

#define cmFileView 103

#define cmResultsRun 110

#define cmResultsCalc 111

#define cmResultsSaveAs 112

#define cmHelpAbout 120

#define cmFilterWeights 130

#define cmFilterWeightsSave 131

#define cmOptParams 140

#define cmOptRun 150

#define ID_Inset1 200

#define ID_Inset2 300

#define SZI sizeof(int)

#define SZF sizeof(float)

#define MAX_POINTS 128

#define NIMAGE 9+2

#define IMAGE_W 360

#define IMAGE_H 240

#define PAL_SIZE 768

#include «font.h»

#include «win.h»

#include <conio.h>

#include <dos.h>

#include <fcntl.h>

#include <float.h>

#include <math.h>

#include <io.h>

#include <i86.h>

#include <stdio.h>

#include «histo.c»

#include «filters2.c»

/* использование «класса» ImageBox */

#if defined (Uses_ImageBox)

extern void PASCAL ImageBoxHandleEvent(LPList);

extern void PASCAL ImageBoxRedraw(LPList);

extern void PASCAL ImageBoxItemRedraw (LPList, LPListItem);

#define HIMAGEBOX ImageBoxHandleEvent

#define ImageBoxNew ButtonNew

#endif

#include «imagebox.c»

OpenFileName aOf;

char *pImageBuff[NIMAGE],*pBuffer,*pImage;

LPSTR pProgName= «Обработка изображений»;

char aWinMainTitle[80],

aImagesPath[80],

aImagesDir[67]= «IMAGES\\»,

aScreensDir[67]= «C:\\IMSS\\»,

aFileName[13]= «test.pcx»;

float *pImageLine,*pPDF[2],*pHisto[2],

aSrv0 [6]={0,0,20,0,255,15},

aSrv1 [6]={0,255,15,0,0,0},

aSrv2 [6]={0,255,15,0,0,0},

aBuff1 [4]={2,9,1,0},

aBuff2 [4]={0,50,1,0},

aBuff3 [4]={0,0. 5,0. 01,0},

aBuff4 [4]={0,0. 5,0. 01,0},

aBuff5 [4]={-100,100,0. 01,0},

SquareSize=3, Var=0, Pa=0, Pb=0;

extern float pQ,*pWF;

int *pWSigns;

int nNumPoints=33, nNP, nNumPoints2=33, nNP2,

nFilterType=0, nFilterationType=0, aOptions[]={1,},

nW, nH, nSize;

float FilteringError[2];

/* Внешние переменные, необходимые для

отображения результатов оптимизации */

LPListItem pImgItem[NIMAGE];

LPList pImg;

LPTable pTable;

#include «opt2.c»

FILE *fp;

static LPSTR

/* Названия параметров */

pIPName[] = {

«Апертура:»,

«СКО б.ш.:»,

«Pч:»,

«Pб:»,

«Параметр Q:»,

«Весовые коэффициенты»,

},

/* Виды фильтрации */

pOptionsText[] = {

«Вид фильтрации:»,

«Пространственная»,

«Временная»,

},

/* Типы фильтров */

pFName[] = {

«Фильтр:»,

«Медианный»,

«Среднеарифметический»,

«Среднегеометрический»,

«Среднегармонический»,

«Среднеконтргармонический»,

«Модифицир. медианный»,

«Минимальный»,

«Максимальный»,

«Псевдомедианный»,

},

/* Ошибка фильтрации */

pErrorText[] = {

«СКО на входе:»,

«СКО на выходе:»,

};

#define MASK_FPU (SW_INVALID|SW_ZERODIVIDE|SW_OVERFLOW|SW_UNDERFLOW)

int matherr (struct exception *e) {return 1;}

/* LoadPCXFile - загружает файл в формате PCX */

static int PASCAL

LoadPCXFile (int hFile, int *nW, int *nH, int *nSize, Boolean IsPaletteLoad) {

int i, j, chr, cnt;

BYTE p1, p2, p3;

/* Узнаем размер файла, выделяем под него буфер памяти

и читаем его туда */

pHDR=(PCXHEADERPTR) (pBuffer=malloc (j=filelength(hFile)));

if (read (hFile, pBuffer, j)==-1) {

free(pBuffer);

close(hFile);

return False;

}

close(hFile);

/* Проверяем 256 цветное ли это изображение или нет? */

if (pHDR->manuf!=10 || pHDR->encod!=1 || pHDR->bitpx!=8) {

free(pBuffer);

return False;

}

/* Проверяем правильность размеров изображения */

if ((i=(int) pHDR->bplin)!=IMAGE_W ||

(j=pHDR->y2-pHDR->y1+1)!=IMAGE_H) {

free(pBuffer);

return False;

}

/* Декодируем изображение по алгоритму RLE */

*nSize=(aSrv0 [1]=*nW=i)*(*nH=j);

/* Распределяем память */

if (pImageLine==NULL) {

pImageLine=malloc (*nSize*sizeof(float));

for (i=0; i<NIMAGE; i++) pImageBuff[i]=malloc(*nSize);

}

pImage=pBuffer+sizeof(PCXHEADER);

for (j=0; j<*nSize;) {

cnt=1;

if (((chr=*pImage++)&0xC0)==0xC0) {

cnt=chr&0x3F;

chr=*pImage++;

}

if (chr==7 || chr==15) chr -;

else if (chr==8) chr++;

for (i=0; i<cnt; i++) pImageBuff[0] [j++]=chr;

}

/* Декодируем и загружаем палитру,

исключая системные регистры 7,8,15 */

if (IsPaletteLoad)

for (outp (0x3C8,0), i=1; i<PAL_SIZE+1; i+=3) {

if (i==22) p1=p2=p3=0x30;

else if (i==25) p1=p2=p3=0x20;

else if (i==46) p1=p2=p3=0xFF;

else {p1=pImage[i]>>2; p2=pImage [i+1]>>2; p3=pImage [i+2]>>2;}

outp (0x3C9, p1); outp (0x3C9, p2); outp (0x3C9, p3);

}

/* Освобождаем буфер памяти под тестовое изображение */

free(pBuffer);

return True;

}

/* GetFilterWeights - просмотр и редактирование весовых коэффициентов */

static int near PASCAL

GetFilterWeights(void) {

int i, j, w=50, h=280, x=(MaxX-w)>>1, y=(MaxY-h+40)>>1, nNSS=SquareSize;

float **pWeights;

LPSTR *pNameWeights;

LPTable p1;

/* Распределение памяти */

pWeights=malloc (nNSS*sizeof (float *));

pNameWeights=malloc (nNSS*sizeof(LPSTR));

for (i=0; i<nNSS; w+=69, i++) {

pWeights[i]=malloc (nNSS*sizeof(float));

pNameWeights[i]=calloc (nNSS, 4);

itoa (i+1, pNameWeights[i], 10);

for (j=0; j<nNSS; j++) pWeights[i] [j]=pWF [j*nNSS+i];

}

x=(MaxX-w)>>1;

/* Создание таблицы */

p1=ListInit (TableNew(x+5, y+25,22,20,9, nNSS),

HTABLE, isSelected,

TableItemNew («N/N», NULLSTR, 40,5, OUT|COUNT),

NULL);

for (i=0; i<nNSS; i++)

ListAdd (p1, TableItemNew (pNameWeights[i], pWeights[i], 70,9, IN|FLOAT));

WinCreate (pIPName[5], x, y, w, h, p1,

ListInit (ListNew(), HBUTTON, isSelected,

ButtonNew (HB_OK, x+w-141, y+h - 35,64,24, cmOk),

ButtonNew (HB_CANCEL, x+w-69, y+h - 35,64,24, cmCancel),

NULL),

NULL);

for(;) {

while (! getEvent()); WinHandleEvent();

switch (event.what) {

case Command:

if (event.p1==cmOk)

for (i=0; i<nNSS; i++)

for (j=0; j<nNSS; j++) pWF [j*nNSS+i]=pWeights[i] [j];

putEvent (Key, ESC, event.p1);

break;

case Key:

if (event.p1==ESC) {

/* Освобождение памяти и выход */

for (i=0; i<nNSS; i++) {

free (pWeights[i]);

free (pNameWeights[i]);

}

free(pWeights);

free(pNameWeights);

return event.p2;

}

}

}

}

#include <fcntl.h>

#include <io.h>

#ifdef _RUS_

static LPSTR Messages[]={

«Обзор», «Тестовые изображения:»,

};

#else

static LPSTR Messages[]={

«Browse», «Image samples:»

};

#endif

/* BrowsePCXFile - просмотр и загрузка тестового изображения */

static int near PASCAL

BrowsePCXFile (LPOpenFileName pF) {

LPSTR pFileName=pF->FileName, pBuffer,

pImageBuffer=malloc (IMAGE_W*IMAGE_H);

int w=550, h=380, x=(MaxX-w)>>1, y=(MaxY-h)>>1,

i, j, chr, cnt, hFile, nCurrFile=-1, bIsTrueFile=1;

LPListItem pFile, pImgItem;

LPList pButtons, pImg;

WinCreate((LPSTR) Messages[0], x, y, w, h,

ListInit (ListNew(), HSTATIC, 0,

StaticTextNew (Messages[1], x+10, y+28),

NULL),

ListInit (ListNew(), HLISTBOX, isSelected,

pFile=ListBoxNew (pFileName, x+10, y+45,160,16,0, FAARC|FARO),

NULL),

ListInit (pImg=ListNew(), HIMAGEBOX, 0,

pImgItem=ImageBoxNew (pImageBuffer, x+180, y+45,

IMAGE_W, IMAGE_H, 0),

NULL),

ListInit (pButtons=ListNew(), HBUTTON, isSelected,

ButtonNew (HB_OK, x+180, y+h - 37,64,24, cmOk),

ButtonNew (HB_CANCEL, x+254, y+h - 37,64,24, cmClose),

NULL),

NULL);

for (putEvent(Nothing, 0,0);) {

while (! getEvent()); WinHandleEvent();

if (nCurrFile!=pFile->p1+pFile->command && qe==qb) {

nCurrFile=pFile->p1+pFile->command;

sprintf (aImagesPath, «%s % s», aImagesDir,

strcpy (pFileName,

(LPSTR)*((LPSTR *) pFile->name+nCurrFile)));

/* Открываем файл с тестовым изображением и загружаем его */

hFile=FOpen (aImagesPath, O_RDONLY|O_BINARY);

/* Узнаем размер файла, выделяем под него буфер памяти и

читаем его туда */

pHDR=(PCXHEADERPTR) (pBuffer=malloc (j=filelength(hFile)));

FRead (hFile, pBuffer, j);

FClose(hFile);

/* Проверяем 256 цветное ли это изображение или нет,

а тажке правильность размеров изображения */

if (pHDR->manuf!=10 || pHDR->encod!=1 || pHDR->bitpx!=8 ||

pHDR->bplin!=IMAGE_W || (pHDR->y2-pHDR->y1+1)!=IMAGE_H) {

for (bIsTrueFile=j=0; j<IMAGE_W*IMAGE_H; j++)

pImageBuffer[j]=15;

}

else {

/* Декодируем изображение по алгоритму RLE */

for (bIsTrueFile=1, pImage=pBuffer+sizeof(PCXHEADER),

j=0; j<IMAGE_W*IMAGE_H;) {

cnt=1;

if (((chr=*pImage++)&0xC0)==0xC0) {

cnt=chr&0x3F;

chr=*pImage++;

}

if (chr==7 || chr==15) chr -;

else if (chr==8) chr++;

for (i=0; i<cnt; i++) pImageBuffer [j++]=chr;

}

}

/* Освобождаем буфер памяти под тестовое изображение */

free(pBuffer);

/* Перерисовываем изображение */

ImageBoxItemRedraw (pImg, pImgItem);

}

switch (event.what) {

case cmFileListChanged:

pButtons->curr=pButtons->first;

ListActive(pButtons);

break;

case DOSCriticalError:

if (FatalError) {

MessageBox (Messages[4], Messages[5], x+45, y+77,350,160);

FatalError=0;

}

break;

case Command: putEvent (Key, ESC, event.p1);

break;

case Key:

if (event.p1==ESC) {

if ((i=(event.p2==cmOk && bIsTrueFile)))

for (j=0; j<IMAGE_W*IMAGE_H; j++)

pImageBuff[0] [j]=pImageBuffer[j];

free(pImageBuffer);

return i? cmOk: cmCancel;

}

}

}

}

/* ScreenToPCXFile - сохранение копии экрана в файле формата PCX */

void

ScreenToPCXFile(void) {

static int nCurrPCXFile;

int i, j, k, nTotal=0, nScreenSize=MaxX*MaxY;

BYTE this, last=*_pLFB, runCount=1;

LPSTR pBuff=calloc (nScreenSize, 1),

pPal =malloc (PAL_SIZE);

char aFileName[67];

/* Формирование заголовка PCX файла */

pHDR=calloc (sizeof(PCXHEADER), 1);

pHDR->manuf=0x0A;

pHDR->hard =0x05;

pHDR->encod=0x01;

pHDR->bitpx=0x08;

pHDR->x2 =MaxX-1;

pHDR->y2 =MaxY-1;

pHDR->hres =0x00C8;

pHDR->vres =0x00C8;

pHDR->nplanes=0x01;

pHDR->bplin=MaxX;

pHDR->palinfo=0x01;

/* Сжатие содержимого экрана по алгоритму RLE */

for (i=0; i<MaxY; i++) {

for (last=_pLFB [k=i*MaxX], runCount=1, j=1; j<MaxX; j++) {

if ((this=_pLFB [k+j])==last) {

if (++runCount==63) {

pBuff [nTotal++]=runCount|0xC0;

pBuff [nTotal++]=last;

runCount=0;

}

} else {

if (runCount) {

if (runCount==1 && (last&0xC0)!=0xC0)

pBuff [nTotal++]=last;

else {

pBuff[nTotal++]=runCount|0xC0;

pBuff [nTotal++]=last;

}

}

last=this;

runCount=1;

}

}

if (runCount) {

if (runCount==1 && (last&0xC0)!=0xC0) pBuff [nTotal++]=last;

else {

pBuff[nTotal++]=runCount|0xC0;

pBuff [nTotal++]=last;

}

}

}

/* Конец данных */

pBuff [nTotal++]=0x0C;

/* Считывание палитры */

for (outp (0x3C7,0), i=0; i<PAL_SIZE; i+=3) {

pPal[i] =inp(0x3C9)<<2;

pPal [i+1]=inp(0x3C9)<<2;

pPal [i+2]=inp(0x3C9)<<2;

}

/* Открытие файла на запись */

sprintf (aFileName, «%sSCR % 05 d.pcx», aScreensDir,++nCurrPCXFile);

i=creat (aFileName, S_IWRITE|S_IREAD);

/* Запись заголовка PCX файла */

FWrite (i, pHDR, sizeof(PCXHEADER));

/* Запись сжатых данных */

FWrite (i, pBuff, nTotal);

/* Запись палитры */

FWrite (i, pPal, PAL_SIZE);

/* Закрытие файла */

close(i);

/* Освобождение памяти */

free(pBuff); free(pPal); free(pHDR);

/* Звуковой сигнал */

sound(1000); WaitSec(); nosound();

}

/* Главная функция */

void main (int argc, char *argv[]) {

int i, j, k, l, m, n, x=-3, y=-3, w, h, chr, cnt, nMaxSS, nNSS, nCurrLine;

float Rnd, Rnd1;

LPList pCount, pCluster, pComboBox, pGr[2];

LPListItem pComboBoxItem[2], pImgCurr;

char aTemp[NIMAGE], aBuffText[128];

/* Устанавливаем требуемый VESA режим */

if (InitMode()!=VESA_OK) return;

if (argc>1) nCurrMode=atoi (argv[1]); else LoadCurrMode (argv[0]);

SetMode(nCurrMode);

InitHandlers();

_control87 (MASK_FPU, MASK_FPU);

/*colbkg=15;*/

/* Распределяем память под весовые коэффициенты фильтров */

pWF=malloc((nMaxSS=aBuff1 [1]*aBuff1 [1])*SZF);

pWSigns=malloc((nMaxSS=aBuff1 [1]*aBuff1 [1])*SZI);

for (i=0; i<nMaxSS; i++) {pWF[i]=1.0; pWSigns[i]=0;}

/* Открываем файл с тестовым изображением и загружаем его */

sprintf (aImagesPath, «%s % s», aImagesDir, aFileName);

if ((i=open (aImagesPath, O_RDONLY|O_BINARY))==-1 ||

! LoadPCXFile (i,&nW,&nH,&nSize, True)) {

MessageBox («Ошибка», «Невозможно открыть файл с изображением!»,

(MaxX-300)>>1, (MaxY-150)>>1,300,150);

goto exit;

}

for (k=(nH>>1)*nW, i=0; i<nW; i++) pImageLine[i]=pImageBuff[0] [k+i];

/* Вводим белый шум и импульсный шум */

for (aBuff2 [3]=Var, i=0; i<nSize; i++)

for (j=1; j<NIMAGE; j++) {

if ((Rnd=PulseRand())>=0) chr=(char) Rnd;

else chr=pImageBuff[0] [i];

chr+=(int) (Var*NRand());

if (chr==7 || chr==15) chr -;

else if (chr==8) chr++;

else if (chr>255) chr=255;

else if (chr<0) chr=0;

pImageBuff[j] [i]=chr;

}

/* Фильтруем зашумленное изображение 2D фильтром */

Filters2D[nFilterType] (pImageBuff[1], pImageBuff [NIMAGE-1], nW, nH,

nNSS=aBuff1 [3]=SquareSize);

/* Вычисляем СКО ошибок */

for (Rnd=Rnd1=0, k=0.5*SquareSize, n=k*nW, l=nW - (k<<1), m=nH - (k<<1),

i=k; i<=m; i++, n+=nW)

for (j=k; j<=l; j++) {

chr=((int) pImageBuff[0] [n+j]) - ((int) pImageBuff[1] [n+j]);

Rnd+=chr*chr;

chr=((int) pImageBuff[0] [n+j]) - ((int) pImageBuff [NIMAGE-1] [n+j]);

Rnd1+=chr*chr;

}

FilteringError[0]=sqrt (Rnd/(l*m-1));

FilteringError[1]=sqrt (Rnd1/(l*m-1));

/* Оцениваем ФПВ одной строки */

pHisto[1]=calloc (nNumPoints2, SZF);

pPDF[1]=calloc (nNP2=(MAX_POINTS/(nNumPoints2-1))*(nNumPoints2-1)+1,

SZF);

HistogramSetUp (pImageBuff[0], pPDF[1], pHisto[1], aSrv2, nW, nNumPoints2,

nNP2);

w=MaxX+6; h=MaxY+6;

aBuff5 [3]=pQ;

/* ================================================================ */

WinCreate (aWinMainTitle, x, y, w, h,

/* Надписи ========================= */

ListInit (ListNew(), HSTATIC, 0,

StaticTextNew (pFName[0], x+10, y+30),

StaticTextNew (pOptionsText[0], x+233, y+30),

StaticTextNew (pIPName[0], x+10, y+55),

StaticTextNew (pIPName[1], x+118, y+55),

StaticTextNew (pIPName[2], x+223, y+55),

StaticTextNew (pIPName[3], x+294, y+55),

StaticTextNew (pIPName[4], x+365, y+55),

StaticTextNew («Тестовое изображение:», x+10, y+75),

StaticTextNew («Зашумленное изображение:», x+nW+65, y+75),

StaticTextNew («Отфильтрованное изображение:», x+10, y+95+nH),

StaticTextNew («Сигнал выделенной строки:», x+nW+65, y+90+nH),

StaticTextNew («Гистограмма выделенной строки:», x+nW+65,

y+nH+228),

NULL),

/* Выпадающий список ============================== */

ListInit (pComboBox=ListNew(), HCOMBOBOX, isSelected,

pComboBoxItem[0]=ListBoxNew (pFName+1, x+51, y+27,177,6,

sizeof(pFName)/sizeof(LPSTR) - 1,0),

pComboBoxItem[1]=ListBoxNew (pOptionsText+1, x+323, y+27,127,2,

sizeof(pOptionsText)/sizeof(LPSTR) - 1,0),

NULL),

/* Счетчики ======================================== */

ListInit (pCount=ListNew(), HCOUNT, isSelected,

CountNew (aBuff1, x+63, y+52,50),

CountNew (aBuff2, x+168, y+52,50),

CountNew (aBuff3, x+239, y+52,50),

CountNew (aBuff4, x+310, y+52,50),

CountNew (aBuff5, x+430, y+52,60),

NULL),

/* Кнопки ========================================= */

ListInit (ListNew(), HBUTTON, isSelected,

ButtonNew(«[F3] Загрузить…», x+453, y+27,104,22, cmFileOpen),

ButtonNew(«[F4] Веса…», x+560, y+27,84,22, cmFilterWeights),

ButtonNew(«[F6] Пар.опт…», x+492, y+50,90,22, cmOptParams),

ButtonNew(«[F9] Пуск», x+584, y+50,60,22, cmOptRun),

NULL),

/* Таблица СКО ошибок ===================================== */

ListInit (pTable=TableNew (x+646, y+27,0,23,2,2), HTABLE, isSelected,

TableItemNew (NULLSTR, pErrorText, 90,0, OUT|STRING),

TableItemNew (NULLSTR, FilteringError, 62,8, OUT|FLOAT),

NULL),

/* Изображение ==================================== */

ListInit (pImg=ListNew(), HIMAGEBOX, isSelected,

pImgItem[0]=ImageBoxNew (pImageBuff[0], x+10, y+90, nW, nH,

nCurrLine=nH>>1),

pImgItem[1]=ImageBoxNew (pImageBuff[1], x+nW+65, y+90, nW, nH,

nH>>1),

pImgItem [NIMAGE-1]=ImageBoxNew (pImageBuff[NIMAGE-1], x+10,

y+110+nH, nW, nH, nH>>1),

NULL),

/* Графики ======================================== */

ListInit (pGr[0]=ListNew(), HGRAPH, 0,

GraphsNew (x+nW+65, y+105+nH, nW, 110, nW, aSrv0,&pImageLine, 1),

GraphsNew (x+nW+65, y+242+nH, nW, 108, nNP2, aSrv2, pPDF+1,1),

NULL),

NULL);

WinSetTitle (aFileName, pProgName, aFileName);

/* =============================================================== */


Подобные документы

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

    курсовая работа [2,3 M], добавлен 15.04.2019

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

    курсовая работа [1,7 M], добавлен 27.01.2015

  • Обработка изображений на современных вычислительных устройствах. Устройство и представление различных форматов изображений. Исследование алгоритмов обработки изображений на базе различных архитектур. Сжатие изображений на основе сверточных нейросетей.

    дипломная работа [6,1 M], добавлен 03.06.2022

  • Цифровые рентгенографические системы. Методы автоматического анализа изображений в среде MatLab. Анализ рентгеновского изображения. Фильтрация, сегментация, улучшение изображений. Аппаратурные возможности предварительной нормализации изображений.

    курсовая работа [890,9 K], добавлен 07.12.2013

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

    реферат [5,2 M], добавлен 05.05.2023

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

    дипломная работа [1,7 M], добавлен 27.03.2013

  • Основные категории изображений: растровые и векторные. Программы, работающие с растровыми изображениями. Инструменты для работы с обоими типами графики в программе Photoshop. Обзор современных программ обработки и просмотра графических изображений.

    курсовая работа [49,0 K], добавлен 20.09.2010

  • Методы обработки растровых изображений (кластеризация, пороговая и интерактивная сегментация). Разработка программного модуля для системы мониторинга биосферы и дистанционного зондирования. Создание пользовательского интерфейса программного модуля.

    курсовая работа [2,2 M], добавлен 29.04.2015

  • Определение характеристик входного воздействия во временной и частотной области. Синтез системы временным и частотным методами. Переход от частотного коэффициента передачи к передаточной функции. Оценка степени подавления помех и эффективности работы.

    курсовая работа [580,2 K], добавлен 23.04.2013

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

    курсовая работа [4,7 M], добавлен 20.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.