Пояснительная записка к курсовой работе по дисциплине «Обработка изображения, распознавание образов, мультимедиа»
Вид материала | Пояснительная записка |
- Пояснительная записка к курсовой работе на тему: «Активный полосовой фильтр» по дисциплине, 342.06kb.
- Лабораторная работа № Нейросетевое распознавание печатных символов. Дисциплина: «Распознавание, 74.04kb.
- Пояснительная записка к курсовой работе по дисциплине: «Электроника и микросхемотехника», 171.54kb.
- Пояснительная записка к курсовой работе по дисциплине: «Теория чисел», 275.76kb.
- Пояснительная записка к курсовой работе по дисциплине "Системное программное обеспечение", 277.1kb.
- Пояснительная записка курсовой работы "Обработка экономической информации с помощью, 269.69kb.
- Распознавание и преобразование образов указатель документов описания первоисточников., 52.79kb.
- Программа по дисциплине "Распознавание образов/(по выбору)" для подготовки студентов, 89.53kb.
- Средства мультимедиа. Мультимедиа, 53.29kb.
- Пояснительная записка к курсовой работе по дисциплине "Гидромашины и компрессоры", 200.01kb.
Министерство образования РФ
Владимирский государственный университет
Кафедра вычислительной техники
Пояснительная записка
к курсовой работе по дисциплине
«Обработка изображения, распознавание образов, мультимедиа»
Выполнил: студент гр. ИВТ-199
Евстюничев С.М.
Принял: Жирков В.Ф.
Владимир, 2003 г.
Настоящая курсовая работа выполнена как результат прослушивания курса лекций и выполнения ряда лабораторных работ по дисциплине «Обработка изображений, распознавание образов и мультимедиа». Целью ее является создание программы, позволяющей наглядно рассмотреть некоторые приёмы работы с изображениями.
В задании предлагается спроектировать программу, выполняющую простейшие преобразования изображения, реализовать фильтры выделения границ, восстанавливающие фильтры, преобразования Фурье и Уолша-Адамара. Окончательно это было реализовано в виде исполнимого файла Imager.exe. Программа предназначена для операционных систем: Windows 95/98/2000/XP.
Настоящая пояснительная записка является наиболее полной документацией к выполненной курсовой работе. Она содержит 16 страниц машинописного текста. Листинг программы представлен на магнитном носителе.
Содержание
1.Основные характеристики программы . . . . . . . . . . . . . .4
2.Простейшие преобразования . . . . . . . . . . . ……. . . . . . .5
3.Фильтры . . . . . . . . . . . . . . . . . . . . . . . ………………. . . .9
3.1.Восстанавливающие фильтры. . . . . . . . . …... . . . . .12
4.Преобразования Фурье. . . . . . . . . . . . . . . . …...….. . ... 13
5.Быстрое преобразование Уолша, упорядоченное
по Адамару. . . . . . . . . . . . . . . . . . . . . . . .…………….. . .14
Источники информации. . . . . . . . . . . . ……… . . . . . . . . .15
Приложение. Обработка сигналов. . . . . …. . . . . . . . . . . .16
1. Основные характеристики программы
В ходе выполнения курсовой работы были программно реализованы следующие функции:
- Считывание файла формата Windows Bitmap (*.bmp);
- Гистограммы, отображающие распределение цветов по слоям и яркости;
- ПреобразованиЯ:
- яркости;
- контраста;
- бинаризация;
- негатив;
- оттенки серого;
- Фильтры выделения границ:
- Фильтр Собела;
- Фильтр Уоллиса;
- Фильтр Робертса;
- Фильтр Кирша;
- Фильтр Лапласа;
- Восстанавливающие фильтры:
- Одномерный и двумерный медианные фильтры;
- Одномерный и двумерный сглаживающие фильтры;
- Одномерное и двумерное преобразование Фурье;
- Одномерное и двумерное преобразование Уолша-Адамара;
- Выделение текстовых символов для последующего распознавания.
2. Простейшие преобразования
Внизу окна реализовано управление диаграммами цветности (левая диаграмма относится к полученному изображению, правая – к предыдущему.) При установке радиокнопки на соответствующий цвет меняется показание диаграмм. При включенном чекбоксе «Отображать» диаграммы отрисовываются заново после каждого преобразования рисунка.
Преобразования.
1) Преобразование яркости изображения происходит по формулам:
г

де: R, G, B – яркости соответствующих каналов пиксела,
D – приращение яркости.
Исходное изображение приведено на рис. 1.

Результат преобразования яркости при приращении D=128 показан на рис. 2.

- Преобразование контраста происходит по формуле для каждого цветового канала:

Где: X’ – новое значение яркости точки,
X – прежнее значение яркости точки,
AveBr – среднее значение яркости изображения по каналу,
К – задаваемый коэффициент контраста.
Результат преобразования контраста при коэффициенте К=2.5 показан на рис. 3.

3) Бинаризация изображения проводится по следующим правилам:

Где: R, G, B – прежние значения яркости точки по каналам;
R’, G’, B’ – новые значения яркости точки по каналам;
Р – порог бинаризации.
Результат бинаризации при пороге P=128 показан на рис. 4.

4) Негативное изображение получается по формулам:

Где: R, G, B – прежние значения яркости точки по каналам;
R’, G’, B’ – новые значения яркости точки по каналам;
Результирующее изображение показано на рис. 5.

5) Оттенки серого.
Перевод цветного изображения в оттенки серого производится по следующим формулам:
Г

де: Br – результирующая яркость для каждого канала цвета точки,
R, G, B – прежние значения яркости точки по каналам.
Результирующее изображение показано на рис. 6.

3. Фильтры
В данной работе были рассмотрены и реализованы некоторые двумерные фильтры: фильтры выделения границ и восстанавливающие фильтры. Фильтры выделения границ позволяют четко обозначить границу смены цветов. К ним относятся фильтры Робертса, Собела, Кирша, Уоллиса, Лапласа. Эти фильтры действуют на основе анализа информации о яркостях соседних точек в пределе некоторой зоны, называемой окном фильтра, или его апертурой.
- Фильтр Робертса.
Окно фильтра 2х2.
Работа фильтра описывается следующей формулой:

Результат работы фильтра Робертса показан на рис. 7.

- Фильтр Кирша.
Окно фильтра 3х3.
Работа фильтра описывается следующими формулами:

Результат работы фильтра Кирша показан на рис. 8.

3) Фильтр Собела.
Окно фильтра 3х3.
Р

абота фильтра описывается следующими формулами:
Результат работы фильтра Собела показан на рис. 9.

4) Фильтр Уоллеса.
Окно фильтра 3х3.
Р

абота фильтра описывается следующей формулой:
Результат работы фильтра Уоллеса показан на рис. 10.

- Фильтр Лапласа.
О

кно фильтра:
Результат работы фильтра Лапласа показан на рис. 11.

3.1. Восстанавливающие фильтры
Основным параметром фильтра является его апертура А, определяющая, сколько точек, окружая данную будет использовано для вычисления нового значения данной точки. Для линейных фильтров это означает, что для точки Х[i,j] будут использоваться точки в диапазоне от X[i-A div 2, j] до X[i+A div 2, j], не исключая данную точку. Для двумерных фильтров это означает, что будут использованы точки от X[i-A div 2, j-A div 2] до
X[i+A div 2, j+A div 2].
При применении сглаживающего фильтра вычисление нового значения каждой из трёх компонентов точки происходит по формуле: NewBr = AveBr, где NewBr – новое значение яркости компонента, АveBr – средняя яркость канала.
При применении линейного медианного фильтра формула та же, но переменная AveBr имеет другой смысл: здесь это значение элемента с индексом [A div 2 +1] в отсортированном массиве яркостей точек канала, участвующих в вычислении. При применении двумерного медианного фильтра сначала вычисляются медианы строк матрицы преобразования. Затем на основании полученных значений снова вычисляется медиана, и найденное число становится новым значением данной точки.
Результаты работы одномерного и двумерного сглаживающих фильтров (после 10 применений) показаны на рис. 12 и 13, соответственно.


4. Преобразование Фурье
Для реализации дискретного преобразования Фурье берется часть исходного изображения размером 128Х128 пикселей. Такой размер выбран ввиду того, что преобразование требует значительного времени на старых машинах.
Цель прямого преобразования – получить последовательность комплексных чисел, имея исходную последовательность действительных чисел по правилам:

г

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

Формула, использовавшаяся при реализации одномерного преобразования:
Для прямого преобразования: P=-1; UK=XK; Vj=NCK.
Для обратного преобразования: P=1; UK=СK; Vj=ХK.

Формула, использовавшаяся при реализации двумерного преобразования:
Результаты работы одномерного и двумерного преобразований Фурье (левый верхний угол размером 128х128) показаны на рис. 14 и 15, соответственно.


5. Быстрое преобразование Уолша, упорядоченное по Адамару
В основе ДПУ лежит система дискретных функций Уолша. Эти функции являются отсчётами непрерывных функций Уолша. Каждый отсчет расположен в середине связанного с ним элемента функции. Длительность элемента равна 1/N от интервала [0;1], на котором и определены непрерывные функции Уолша, здесь N- натуральное число – количество функций Уолша в системе. Функции Уолша в системе из N функций могут быть упорядочены различным образом. При реализации в работе упорядочивание проводилось по Адамару. Размер системы функций Уолша всегда равен целой степени двойки.
А

лгоритм быстрого ДПУ:
Размер последовательности: 128 строк X 128 столбцов.
Схема реализации (при 8 значениях):
Р

езультат прямого одномерного преобразования (левый верхний угол размером 128х128) представлен на рис. 16, результат двумерного – на рис.17.


Источники информации
1) Лекции по обработке изображений.
2) Круглински Д., Уингоу С., Шеферд Дж. Программирование на
Microsoft Visual C++ 6.0 /Пер. с англ. – СПб: Питер.
3) Франка П. С++: Учебный курс – СПб: Питер 1999.
4) Вопросы и ответы по С и С++ - Москва: «МикроАрт», 1997
Cервисный центр, №2-9 2001.
Приложение. ОБРАБОТКА СИГНАЛОВ
А. Разложение функции в ряд Фурье (с коэффициентами Ак, Вк)
Задана периодическая функция X(t) на интервале [-Т, T]. Ее можно представить как сумму некоторых базисных функций {Un (t)}={sin nwot, cos nwot }, где n= 0, 1, 2 ... wo=2/Т. Коэффициенты разложения определяются по формулам:



Тогда разложение функции будет выглядеть:


В

ычисление ошибки:
Где X(t)- исходная функция, а


В. Разложение функции в ряд Фурье (с коэффициентами Dn)
Разложении функции можно представить в другом виде
Где


С. Разложение функции в ряд Фурье в комплексной форме

Представление комплексных чисел.

Т

огда комплексное число Z можно представить:


Рис.1.
С

использованием комплексных величин можно разложить заданную функцию X(t) в ряд Фурье. Где
D
. Полином Лежандра

Задана функция X(t), t [-1,1]. Разложение функции по полиному Лежандра будет:
Г

де весовые коэффициенты
Коэффициенты разложения определяются:
P0(t)=1; P1(t)=t

Е. Преобразование Фурье для непрерывных сигналов

Для заданной непериодической функции X(t) прямое преобразование Фурье будет:
Обратное преобразование:

F. Взаимная корреляция

Если заданы две функции X(t) и Y(t), то их взаимная корреляция вычисляется по формуле:
G. Быстрое преобразование Фурье (БПФ)
Пусть N=2v, целое число. Разложим ДП x(n), n[0,N-1], на четные и нечетные отсчеты:













x(2r) x(2r+1)
0 2 4 6 8 n 1 3 5 7 n 0 1 2 3 4 r 0 1 2 3 r
XN(n)=XN/2(n)+XN/2(n)=X(n=2r)+X(n=2r+1)
четн.n нечет.n
N-1 N/2-1 N/2-1
X(k)= X(n)W nk = X(n)Wnk +X(n)Wnk = X(2r)W2rk + X(2r+1)W(2r+1) =
n=0 N n-нечетн. N n-четн. N r = 0 N r = 0 N
N/2-1 N/2-1
= X(2r)(W2)rk + X(2r+1)(W2)rk Wk
r = 0 N r = 0 N
Так как W2N = e –j (2П/ (N/2)) = WN/2 ,то
N/2-1 N/2-1
X(k) = X(2r)Wrk + Wk X(2r+1)Wrk = G(k) + WkH(k) ,
r = 0 N/2 N r = 0 N/2 N
где G(k) и H(k) – N/2 точечные ДПФ четных и нечетных отсчетов. Каждая из
сумм G(k) и H(k) требует вычисления k от 0 (N/2)-1, хотя k[0, N-1].
Пример: Вычисление ДПФ при N=8.



ДПФ N/2 = 4
четных
X(n) = X(2r)
ДПФ N = 8
















ДПФ N/2 = 4
нечетных
X(n)=X(2r+1)






X(7) H(3) X(7) = G(7) + W7H(7) = G(3) + W7H(3)



Видно, что в данном случае вычислительные затраты составляют: 2(N/2)2
комплексных умножений и 2(N/2)2 комплексных сложений (для N\2-точечных ДПФ G(k)
и H(k)), N комплексных умножений (WkH(k)) и N комплексных сложений (G(k)+WkH(k)).
Считая умножение самой медленной операцией, оцениваем длительность выполнения
БПФ числом комплексных умножений:
tБПФ [N + (N/2)2] t0 N2t0 = tДПФ ,
где t0 – длительность выполнения одной операции умножения.
Процесс прореживания по времени можно продолжить, так как N\2–четное число.
Каждое N/2-точечное ДПФ вычисляется в виде суммы двух N/4-точечных ДПФ.
N/2 –1 N/4 –1 N/4 –1 N/4 –1 N/4 –1
G(k) = g(r)Wrk = g(2l)W2lk+g(2l+1)W(2l+1)k =g(2l)Wlk + g(2l+1)Wlk
r = 0 N/2 l = 0 N/2 l = 0 N/2 l = 0 N/4 l = 0 N/4

ДПФ N/2=4
X(0) G(0)
W0 =1
N\2
X(4) G(1)
W1 = W2
N\2 N
X(2) G(2)
W2 = W4
N/2 N
X(6) G(3)
W3 = W6
N/4 –1 N/4 –1
Аналогично H(k) =h(2l) Wlk + Wk h(2l+1) Wlk
l = 0 N/4 N/2 l = 0 N/4
Разбиение X(n) продолжается до тех пор, пока не дойдем до N/2=2 (двухточечное
ДПФ). Граф двухточечного ДПФ («бабочка») имеет вид:
X(0) X(0) + W0 X(4) = X(0) + X(4)




N/4
X(4) X(0) + W1 X(4) = X(0) – X(4)
N/4
W1 = W4 = WN/2 = 1
N/4 N N




+
_
B(k)
A(k) - Wk B(k)
Базовая операция БПФВ включает в себя одно комплексное умножение
и два комплексных сложения. Всего этапов БПФВ L = log2N. На каждом этапе БПФВ
выполняется N/2 базовых операции (в данном примере четыре). Таким образом, на
выполнение БПФВ требуется N/2 * log2 комплексных умножений.
Полный граф восьмиточечного БПФВ (N=8)
x(0) x(0) + X(0)


















x(2) x(2) + X(2)














x(4) x(1) + X(4)




























Этап 1 W4 Этап2 W6 Этап 3 W7
При вычислении БПФВ для получения естественного порядка следования
выходов ДП X(k): X(0),X(1),…X(N-1) необходимо перетасовать входные отсчеты x(n)
по закону двоичной инверсии кода индексов n.
nестеств | nестеств. двоичн. | nдвоичн. инверсн. | nтреб. |
0 | 000 | 000 | 0 |
1 | 001 | 100 | 4 |
2 | 010 | 010 | 2 |
3 | 011 | 110 | 6 |
4 | 100 | 001 | 1 |
5 | 101 | 101 | 5 |
6 | 110 | 110 | 3 |
7 | 111 | 111 | 7 |
x








x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7)
Число разрядов кода n равно L=log2N. Перестановку x(n) производятся с
замещением, меняя в парах числа с прямыми и двоично-инверсными номерами и используя
лишь одну вспомогательную ячейку памяти.
Блок схема программы двоично-инверсного счетчика

Пример:(N=8)
ni | Двоичный код | n i+1 | двоично-инверсный код |
0 | 000 | 0+8/2=4 | 100 |
4 | 100 | 4+(8/4-8/2)=2 | 010 |
2 | 010 | 2+8/2=6 | 110 |
6 | 110 | 6+(8/8-8/4-8/2)=1 | 001 |
![]() | | | |