Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Zemskov_my_sppo1

.pdf
Скачиваний:
30
Добавлен:
18.04.2015
Размер:
595.32 Кб
Скачать

Ю. В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

Содержание

Введение

5

I

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

6

1.

Основные понятия

6

2.

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

7

 

2.1.

Основы обработки изображений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

 

 

2.1.1.

Поэлементная обработка изображений . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

 

 

2.1.2.

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

8

 

2.2.

Основные сведения о системе визуального программирования Delphi 6 . . . . . . . . . . . . .

10

 

2.3.

Предварительное упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

 

2.4.

Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

3.

Использование библиотек динамической компоновки (DLL)

16

3.1.Основные сведения о динамических библиотеках . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.Пример создания DLL-библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3.Неявная загрузка DLL-библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

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

3.5.Хранение форм в динамических библиотеках . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.6.Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4. Реализация многозадачности на однопроцессорных архитектурах

23

4.1.

Основные понятия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

4.2.

Граф состояний задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

4.3.

Планирование в порядке очереди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.4.Циклические планировщики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.5.Планировщики с динамическим приоритетом . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.6.Примеры конкретных реализаций планирования . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.6.1.

Novel NetWare 3.x и 4.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

4.6.2.

Windows NT/2000/XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

4.6.3.

Unix System V Release 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

4.7.Создание многопоточных приложений в Win32 API . . . . . . . . . . . . . . . . . . . . . . . . 30

4.8.Работа с потоками в Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.9.Методы синхронизации потоков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.10.Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5. Программирование сокетов

42

5.1.Использование классических блокирующих сокетов . . . . . . . . . . . . . . . . . . . . . . . . 42

5.2.Программирование чат-сервера и клиента с использованием компонентов Delphi . . . . . . . 46

5.3.Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.

Распределённые вычислительные системы

53

7.

Программирование операций ввода-вывода на ассемблере

54

 

7.1. Вывод на экран в текстовом режиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

 

7.1.1.

Средства DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

 

7.1.2.

Средства BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

 

7.1.3.

Прямая запись в видеопамять . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

7.2.Ввод с клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

7.2.1.Средства DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

7.2.2.Средства BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.3.Графические видеорежимы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.3.1.Средства BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.4.Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

8. Целочисленные арифметические операции на ассемблере

64

3

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

ВГИ ВолГУ, 2002 г.

 

 

 

 

9. Работа с файлами в системе MS-DOS

 

67

9.1. Основные теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

67

9.1.1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

67

9.1.2.Подготовительные операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

9.1.3.Чтение и запись файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

9.2.Определение дисковых ошибок и восстановление после них . . . . . . . . . . . . . . . . . . . 74

9.3.Порядок выполнения работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

9.4.Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

10.Организация ввода-вывода

76

10.1. Основные определения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

10.1.1. Параллельный интерфейс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

11.Работа с прерываниями

79

11.0.2. Создание обработчика прерываний в системе Turbo Pascal . . . . . . . . . . . . . . . . 79

11.1.Варианты заданий на разработку обработчика прерываний в системе DOS . . . . . . . . . . . 80

11.2.Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

12.Работа с Visual Basic for Applications

87

12.1.Использование VBA в редакторе MS Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

12.2.Использование VBA в MS Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Материалы к экзамену

92

Вопросы экзаменационных билетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

Задачи к экзамену . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

4

Ю. В. Земсков.

Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

 

 

 

Введение

Дисциплина «Системное и прикладное про-

(«Прикладная математика и информатика»), дисци-

граммное обеспечение» (СППО) читается студентам

плина «Системное и прикладное программное обес-

Волжского гуманитарного института Волгоградского

печение» входит в блок общепрофессиональных дис-

государственного университета (ВГИ ВолГУ), обуча-

циплин и предполагает изучение следующих разде-

ющимся по специальности 010200 «Прикладная ма-

лов: основных этапов, методов, средств и стан-

тематика и информатика», на втором курсе в третьем

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

семестре. Учебным планом предусмотрено 36 часов

стем программирования (принципов организации,

лекционных и 36 часов лабораторных занятий. В

состава и схемы работы); основных типов опера-

конце семестра сдаётся экзамен.

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

Согласно

государственному образовательному

в операционной системе; сетей ЭВМ и протоколов

стандарту 2000 г. по специальности 210200, а так-

передачи информации.

же по направлению 510200 подготовки бакалавров

 

5

Ю. В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

Часть I

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

1. Основные понятия

Системное ПО (System Software) — програм-

пьютера (вычислительной системы) путём рацио-

мы и комплексы программ, являющиеся общими

нального управления его ресурсами.

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

По современным представлениям ОС должна

(hardware) вычислительной техники, и применяемые

поддерживать следующие функции:

как для автоматизации разработки (создания) новых

1)

обеспечивать загрузку программ в оператив-

программ, так и для организации выполнения суще-

ную память и их выполнение;

ствующих программ.

 

2)

обеспечивать управление памятью;

Можно выделить пять групп

системного про-

3)

обеспечивать работу с устройствами долго-

граммного обеспечения:

 

 

временной памяти (магнитными и оптическими дис-

1. Операционные системы (ОС) — CP/M, MS-

DOS, MS Windows, Unix, Linux, Free BSD, OS/2. . . .

ками, магнитными лентами, флэш-памятью);

2. Системы управления файлами (СУФ) и база-

4)

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

ми данных (СУБД).

 

периферийным устройствам (терминалам, печатаю-

3. Интерфейсные оболочки (Norton Commander,

щим устройствам, модемам и др.);

Windows Commander, Far, K Desktop Environment,

5)

предоставлять пользовательский интерфейс;

Object Desktop, Presentation Manager. . . ) и про-

6)

обеспечивать параллельное (в многопроцес-

граммные среды (application program interface, API;

сорных системах) и/или псевдопараллельное выпол-

WMWARE).

 

нение нескольких задач (мультипрограммный ре-

4. Системы программирования.

 

жим — multitasking);

5. Общесистемные утилиты.

 

7)

обеспечивать взаимодействие задач друг с

1. Операционные системы.

ОС — это ком-

другом;

плекс управляющих и обрабатывающих программ,

8) организовывать межмашинное взаимодей-

служащих интерфейсом (средством взаимодействия)

ствие и разделение ресурсов в сети;

между аппаратной частью (hardware) вычислитель-

9)

обеспечивать защиту системных ресурсов,

ной системы, с одной стороны, и программными при-

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

ложениями (software) и пользователем (user), с дру-

гой стороны. ОС выполняет две основных группы

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

функций:

 

ренных действий пользователей и их программ;

 

 

 

— предоставляет пользователю или программи-

10)

обеспечивать аутентификацию (проверку то-

сту вместо реальной аппаратуры компьютера рас-

го, что пользователь является тем, за кого себя вы-

ширенную виртуальную машину (virtual machine), с

даёт), авторизацию (проверку, что тот, за кого себя

которой удобнее работать и которую легче програм-

выдаёт пользователь, имеет право выполнять ту или

мировать;

 

иную операцию) и другие средства обеспечения без-

— обеспечивает эффективное использование ком-

опасности.

6

ная поэлементная обработка. В этом случае функция fi;j ( ) = f( ) не зависит от индексов i и j.

Ю.В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

2.Обработка изображений

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

2.1. Основы обработки изображений

2.1.1. Поэлементная обработка изображений

В большом числе информационных систем при-

1. Линейное контрастирование изображения.

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

Задача контрастирования связана с улучшением

ных в виде изображения, выводимого на экран. Про-

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

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

и экрана, на котором выполняется визуализация. Ес-

вают визуализацией. Желательно при помощи обра-

ли для цифрового представления каждого отсчёта

ботки придать выводимому изображению такие ка-

изображения отводится один байт (8 бит), то вход-

чества, благодаря которым его восприятие человеком

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

было бы по возможности комфортным. Часто быва-

256 значений. Обычно в качестве рабочего использу-

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

ется диапазон 0–255; при этом значение 0 соответ-

особенности, нюансы наблюдаемой картины с целью

ствует при визуализации уровню чёрного, а значе-

улучшения её субъективного восприятия. Последнее

ние 255 — уровню белого. Предположим, что мини-

— субъективность восприятия — сильно усложняет

мальная и максимальная яркости исходного изобра-

применение формализованного подхода в достиже-

жения равны xmin и xmax соответственно. Если эти

нии данных целей. Поэтому при обработке изобра-

параметры (или один из них) существенно отлича-

жений для визуализации получили распространение

ются от граничных значений яркостного диапазона,

методы, в которых часто отсутствуют строгие мате-

то визуализированная картина при наблюдении вы-

матические критерии оптимальности. Их заменяют

глядит как ненасыщенная, неудобная, утомляющая.

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

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

или иной обработки, опирающиеся на субъективные

ся

линейное

поэлементное

преобразование

вида

оценки результатов.

y = a x + b,

параметры которого

a

и b

определя-

Большинство процедур обработки в каждой точ-

ются желаемыми значениями минимальной ymin и

ке кадра берут входные данные из некоторого мно-

максимальной ymax выходной яркости. Решив систе-

жества точек исходного изображения, близких к об-

му уравнений

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

ymin = a

xmin + b;

 

 

 

 

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

 

 

 

{ ymax = a

xmax + b

 

 

 

 

ную обработку. Здесь результат обработки в любой

относительно параметров преобразования a и b,

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

нетрудно получить:

 

 

 

 

 

 

 

 

 

 

изображения в этой же точке. Очевидным достоин-

 

y =

x xmin

(y

max

y

min

) + y

min

:

(2.1)

ством таких процедур является их предельная про-

 

xmax xmin

 

 

 

 

 

 

 

 

стота. Вместе с тем, многие из них приводят к оче-

2. Соляризация

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

 

При данном

видному субъективному улучшению визуального ка-

виде обработки формула преобразования имеет вид:

чества изображения. Очень часто поэлементная об-

 

 

 

y = k x (xmax x);

 

 

 

(2.2)

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

где xmax — максимальное значение исходного сиг-

решении более сложной задачи обработки изображе-

нала, а k — константа, позволяющая управлять

ния.

динамическим диапазоном преобразованного изоб-

Сущность поэлементной обработки изображе-

ражения. Функция, описывающая данное преоб-

ний сводится к следующему. Пусть x(i; j) = xi;j ;

разование, является квадратичной параболой. При

y(i; j) = yi;j — значения яркости исходного и полу-

ymax = xmax

динамические

диапазоны

изображе-

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

ний

совпадают, что

может

быть достигнуто

при

ра, имеющей декартовы координаты i (номер строки)

k = 4=xmax . Другой путь нормализации динамиче-

и j (номер столбца). Поэлементная обработка озна-

ского диапазона может состоять в применении одно-

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

го из методов контрастирования, например, описан-

зависимость между этими яркостями yi;j = fi;j (xi;j),

ного выше линейного контрастирования.

 

 

позволяющая по значению исходного сигнала опре-

Таким образом, смысл соляризации заключается

делить значение выходного. В общем случае, как

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

это учтено в данном выражении, вид или пара-

уровень белого или близкий к нему уровень ярко-

метры функции fi;j ( ), описывающей обработку, за-

сти, после обработки имеют уровень чёрного. При

висят от текущих координат. Такая обработка на-

этом сохраняют уровень чёрного и те участки, ко-

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

торые имели его на исходном изображении. Уровень

ски применяемых процедур используется однород-

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

7

Ю. В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

на входе средний уровень яркости (уровень серого). Это приводит к повышению чёткости деталей изображения.

3. Препарирование изображения. Препарирование представляет собой целый класс поэлементных преобразований изображений. Характеристики применяемых на практике процедур препарирования приведены на рис. 2.1. Остановимся на описании некоторых из них.

Преобразование с пороговой характеристикой (рис 2.1 а) превращает полутоновое изображение, содержащее все уровни яркости, в бинарное, точки которого имеют яркости y = 0 или y = ymax . Такая операция, называемая иногда бинаризацией или бинарным квантованием, может быть полезной, когда для наблюдателя важны очертания объектов, присутствующих на изображении, а детали, содержащиеся внутри объектов или внутри фона, не представляют интереса. Основной проблемой при проведении такой обработки является определение оптимального порога x0 , сравнение с которым яркости исходного изображения позволяет определить значение выходного изображения в каждой его точке. Наиболее оправданным для математического описания изображения является применение теории вероятностей, случайных процессов и случайных полей. При этом определение оптимального порога бинарного квантования представляет собой статистическую задачу.

Иногда при обработке приходится иметь дело с изображениями, хранимыми как полутоновые, но по своему содержанию мало отличающимися от бинарных. К ним относятся текст, штриховые рисунки, чертежи, изображение отпечатка пальца и т.д. Плотность вероятности w(x), описывающая распределение яркости такого изображения, может содержать два хорошо разделяющихся пика. Абсцисса одного пика соответствует наиболее часто встречающейся яркости тёмных, а другого — светлых участков изображения. Интуитивно понятно, что порог бинарного квантования (рис. 2.2) следует выбирать посередине провала между этими пиками. Замена исходного полутонового изображения бинарным препаратом решает две основные задачи. Во-первых, достигается большая´ наглядность при визуальном восприятии, чем у исходного изображения. Во-вторых, ощутимо сокращается объём памяти для хранения изображения, поскольку бинарный препарат для записи каждой точки бинарного изображения требует лишь 1 бит памяти, в то время как полутоновое изображение для решения той же задачи — 8 или даже более бит.

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

ми» (имеют яркость, соответствующую уровню чёрного). Перемещая выделенный интервал по яркостной шкале и изменяя его ширину, можно детально исследовать содержание картины.

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

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

Аналогично можно качественно рассмотреть и остальные процедуры препарирования, представленные на рис. 2.1.

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

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

2.1.2. Фильтрация изображений

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

8

Ю. В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

y

y

x

 

 

 

x

 

 

 

 

 

 

а

б

y

y

x

x

е

ж

y

x

в

y

x

з

y

x

г

y

x

и

y

x

д

y

x

к

Рис. 2.1. Функции, используемые для препарирования изображений

y

w(x)

x

Рис. 2.2. Выбор порога квантования для бинаризации

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

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

Таким образом, идеология фильтрации основы-

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

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

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

коэффициентов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

1

 

 

 

 

 

H =

1

2

1 :

 

(2.3)

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

1

1

1

 

 

Это означает, что выходная

яркость

рассчитывается

по формуле

 

 

 

 

 

 

 

 

 

 

 

yij =

1

(xi 1;j 1

+ xi 1;j + xi 1;j+1+

 

 

 

10

 

 

 

+xi;j 1 + 2 xi;j + xi;j+1+

(2.4)

 

 

 

 

 

 

+xi+1;j 1 + xi+1;j + xi+1;j+1):

Здесь xij

— яркости элементов исходного изображе-

ния, попавших в апертуру фильтра:

 

 

 

(3

3)

 

 

 

 

 

xi 1;j 1 xi 1;j

xi 1;j+1

X(i; j) = jjxkljjij

 

= xi;j 1

xi;j

xi;j+1 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi+1;j 1 xi+1;j

xi+1;j+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2.5)

Приведём ещё три варианта:

 

 

 

 

 

 

 

 

1

1

1

1

 

 

 

 

 

 

 

 

1

 

1

 

(2.6)

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

H = 9

 

 

 

 

1

1

1 ;

 

9

Ю. В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

1

 

 

1

2

1

 

 

1

 

1

(2.7)

 

 

 

2

H = 16

2

4

2 ;

1

 

 

2

1

2

 

 

1

2

1 :

(2.8)

H =

 

 

15

 

 

 

 

2

1

2

 

Для выделения перепадов

яркости

(границ) ис-

пользуют высокочастотные фильтры (ФВЧ):

0

 

 

1

0

 

0

 

1

0

(2.9)

H = 1

 

5

1 ;

 

1

1

1

 

H = 1

 

9

1 ;

(2.10)

1

1

1

 

1

 

 

2

1

 

H = 2

 

5

2 :

(2.11)

1

 

 

2

1

 

Сумма весовых множителей

во всех случаях равна 1.

Для подчёркивания

 

границ преимущественно

только в одном направлении используют следующие фильтры:

1) север:

 

 

 

 

 

 

 

 

 

H =

1

1

1

 

 

 

 

1

2

1

;

(2.12)

 

1

1

1

 

 

2)

северо-восток:

1

1

 

 

 

 

 

 

 

1

 

 

 

 

 

H =

 

1

2

1

 

;

 

(2.13)

3)

восток:

1

1

1

 

 

 

 

 

 

1

1

1

 

 

 

 

 

H =

1

2

1

;

 

(2.14)

4)

юго-восток:

1

1

1

 

 

 

 

H =

 

1

1

1

 

;

 

(2.15)

 

1

2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

 

 

 

 

5)

юг:

 

1 1

1

 

 

 

 

 

 

 

 

 

1

1

1

 

 

(2.16)

 

H =

1

2

1

;

6)

юго-запад:

 

1

1

 

 

 

 

1

 

 

 

H =

1

2

1

;

(2.17)

7)

запад:

1

1

1

 

 

 

 

 

1

 

 

 

 

 

1

1

 

 

 

H = 1

2

1 ;

(2.18)

8)

северо-запад:

1

1

1

 

 

 

 

 

 

 

 

 

1

1

1

 

 

 

H =

1

2

1

:

(2.19)

 

 

1

1

1

 

 

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

на 0, например, операторы Лапласа:

01 0

H =

 

0

1

0

 

;

(2.20)

 

1

4

1

 

 

 

1

1

1

 

 

 

H =

1

8

1

;

(2.21)

 

1 1

1

 

 

 

 

1

2

1

 

 

 

 

 

 

 

 

H = 2

4

2 :

(2.22)

 

 

1

2

1

 

 

 

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

Для уменьшения чувствительности к ориентации перепадов яркости предложен следующий фильтр:

 

1

1

1

 

H = 1

8

1 :

(2.23)

 

1

1

1

 

Для повышения

помехоустойчивости иногда пе-

 

 

 

 

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

2.2.Основные сведения о системе визуального программирования Delphi 6

1.Назначение системы: быстрая разработка (rapid application development, RAD) 32-разрядных приложений для платформы1 Windows 95/98/NT/2000/ME на языке Object Pascal.

2.Внешний вид окна системы (рис. 2.3):

1)главное окно, на котором располагается главное меню, набор командных кнопок и палитра компонентов;

2)окно дерева объектов (Object Tree View);

3)окно инспектора объектов (Object Inspector);

4)окно браузера;

5)окно формы;

1Уже имеется версия Delphi для Linux, она называется Kylix.

10

Ю.В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

6)окно кода программы.

Рис. 2.3. Внешний вид окна Delphi 6

Для быстрого переключения между окном кода и формой можно использовать клавишу F12. Для переключения к инспектору объектов служит клавиша F11.

2.3.Предварительное упражнение

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

2.Запуск Delphi 6: Пуск í Программы í Borland Delphi 6 í Delphi 6 .

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

3. Разместим на форме два рисунка: Additional Image Ú форма (повторить два раза). Для первого рисунка в окне инспектора объектов в свойстве Picture выберем файл, содержащий

чёрно-белое изображение (в градациях серого) в формате BMP.

Установим для второго рисунка (он пока остаётся пустым) те же размеры по вертикали и горизонтали, что и у первого (свойства Height и Width).

4. Разместим на форме две кнопки: Standard Button Ú форма (два раза). Зададим для первой Caption := Соляризация, а для второй Caption := Выход.

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

procedure TForm1.Button1Click(Sender: TObject); // Соляризация var

i, j, pix, pmax, w, h : integer;

begin

 

 

pmax

:= $00;

 

w :=

Image1.Picture.Width - 1; // Ширина картинки

h :=

Image1.Picture.Height - 1; // Высота картинки

with

Image1.Picture.Bitmap.Canvas do

//

Найдём максимальную яркость:

for j := 0

to h do

 

for i :=

0 to w do begin

 

pix :=

Pixels[i,j] and $ff; // Выделяем голубую компоненту,

//в чёрно-белом полутоновом изображении она равна

//красной и зелёной компонентам

if pix > pmax then pmax := pix; end;

//Рисуем второе изображение, являющееся преобразованием первого:

//сначала копируем первое изображение во второе:

Image2.Picture.Bitmap.Assign(Image1.Picture.Bitmap); // теперь изменяем яркость каждой точки:

with Image2.Picture.Bitmap.Canvas do for j := 0 to h do

for i := 0 to w do begin

// получим яркость текущей точки:

11

Ю. В. Земсков. Системное и прикладное программное обеспечение. Конспект лекций, варианты заданий и методические указания в лабораторным работам. ВГИ ВолГУ, 2002 г.

 

Рис. 2.4. Вид окна тестового приложения: пример соляризации

pix :=

Pixels[i,j] and $ff; // выделили младший байт (яркость голубого)

pix :=

round(pix*(pmax-pix)*4/pmax); // соляризация

if pix

> $ff then pix := $ff; // на всякий случай

// запишем новое значение яркости точки (все три цветовые компоненты):

Pixels[i,j] := (pix shl 16) + (pix shl 8) + pix;

if (j

mod 10 = 0) and (i=0) then

 

// чтобы приложение реагировало на действия пользователя,

Application.ProcessMessages;

// пока идут вычисления

end;

end;

Здесь мы сначала находим максимальную яркость для нашего изображения, а затем изменяем яркость каждой точки согласно формуле (2.2). Т. к. наше изображение чёрно-белое, то яркости всех трёх его компонент (Red, Green и Blue) в каждой точке равны друг другу. Значение яркости каждой компоненты занимает один байт четырёхбайтного слова: самый младший байт соответствует голубому цвету (blue), следующий — зелёному (green), следующий — красному (red). Самый старший байт указывает тип формата и для описанного случая должен быть нулевым.

Для второй кнопки создадим следующую процедуру обработки нажатия: procedure TForm1.Button2Click(Sender: TObject);

begin

Halt(0); // Прервать преобразование изображения и завершить программу end;

Для нормального завершения приложения в обычной ситуации достаточно закрыть главную форму (вызвать метод Close), возможно также использование вызова Application.Terminate. Но в данном случае мы хотим закончить работу, прервав цикл обработки изображения. Заметим, что если бы мы периодически не вызывали метод Application.ProcessMessage из цикла обработки изображения, то сообщение о нажатии на кнопку «Выход» было бы потеряно.

5.Сохраним проект: í File í Save Project As ; создадим папку и сохраним в ней проект (*.dpr) и форму (*.pas).

6.Выполним компиляцию и запустим приложение: F9.

Если ошибок нет, то появится окно формы с одним изображением. Нажмите кнопку «Соляризация» и постепенно появится вторая картинка, более яркая, чем первая (рис.2.4).

Проверьте, завершается ли приложение немедленно после нажатия на кнопку «Выход» во время выполнения преобразования.

7. Создаём строку состояния: Win32 StatusBar Ú форма .

На поверхности формы в нижней её части появится объект StatusBar1 типа TStatusBar.

Чтобы разделить строку состояния на несколько частей, в поле Panels инспектора объектов нажмём на три точки и в появившемся диалоговом окне создадим пять панелей, пять раз нажав клавишу Insert. Для первой из них (нулевой) изменим ширину — свойство Width := 150, а для всех остальных Width := 100.

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

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

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

12

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