Геометричні перетворення зображень в MATLAB

Огляд методів геометричних перетворень. Дослідження двовимірних геометричних перетворень по координатам та контрольним точкам. Матриця та операція геометричного перетворення в MATLAB. Розробка методу геометричних перетворень зображень тривимірних об’єктв.

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

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

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

Размещено на http://www.allbest.ru/

ЗАВДАННЯ КУРСОВОЇ РОБОТИ

Номер варіанту

Розмір зображення

Двовимірна геометрична фігура - прямокутник

Зображення

літер

ширина N,

дискр. точок

висота M,

дискр. точок

ширина H,

диск. точок

висота L,

диск. точок

кут повороту alfa, градусів відносно Ох

проти год. стрілки

5

450

250

120

100

40

ДЕЄ

Номер варіанту

Параметри геометричного перетворення

Зсув, дискр. точок

Масштабування

Кут повороту, градусів проти год. стрілкі відновно вказаної осі

Tx

Ty

Tz

Sx

Sy

Sz

Tetax

Tetay

Tetaz

5

10

20

0

1,2

1,2

0,9

20

30

20

ПОСЛІДОВНІСТЬ ВИКОНАННЯ КУРСОВОЇ РОБОТИ

1. Для двовимірного зображення геометричної фігури згідно варіанту завдання дослідити задане геометричне перетворення.

1.1. Сформувати двовимірне зображення заданої геометричної фігури

1.2. Виділити 3 контрольні точки геометричної фігури та визначити їх координати:

а)шляхом розрахунку

б)шляхом вимірювань на сформованому зображенні з п.1.1. impixel

1.3. Обчислити координати контрольних точок після застосування до сформованого зображення заданого геометричного перетворення

1.4. Визначити матрицю та операцію геометричного перетворення в МАТLАВ та отримати зображення-результат перетворення

1.5. Визначити на зображенні-результаті перетворення координати контрольних точок, порівняти їх з результатами п.1.3.

1.6. Виконати в МАТLАВ зворотнє геометричне перетворення шляхом:

а)застосування матриці оберненого перетворення відносно результатів п.1.4.

б)застосування геометричного перетворення на основі координат початкових та результуючих контрольних точок з п.1.1.5 та п. 1.2.

ВСТУП

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

Розвиток комп'ютерної графіки як самостійної галузі інформатики почалося в дев'яностих роках минулого століття. Цьому сприяло, з одного боку, різке підвищення технічних характеристик (ємність запам'ятовуючих пристроїв, швидкодія і розрядність процесора, можливість роботи з масивами чисел, представлених у формі з плаваючою комою) і зниження вартості апаратного забезпечення, з іншого боку, поява адаптованого до роботи з графікою як базового, так і прикладного програмного забезпечення.

За останнє десятиліття діапазон застосування комп'ютерної графіки істотно розширився. Наприклад, раніше її могли використовувати тільки фахівці, що працюють в деяких предметних областях:

· в медицині (комп'ютерна томографія);

· в наукових дослідженнях (астрономія, мікробіологія);

· в інженерно-технічних розробках (проектування будівель, споруд, літальних апаратів).

Комп'ютерна графіка перетворилася з вузькоспеціальної області інтересів кількох професій у справу, якого прагнуть присвятити себе безліч людей.

Створено різноманітне апаратне і програмне забезпечення для отримання зображень самого різного виду та призначення - від простих креслень до реалістичних образів природних об'єктів.

Кінцевим результатом застосування засобів комп'ютерної графіки є зображення, яке може використовуватися для різних цілей.

Реалістичність сприйняття людиною складного комп'ютерного зображення визначається вмінням розробника математичної моделі

зображуваного об'єкта або процесу достовірно повторити на екрані його розвиток в просторі і в часі. Модель включає в себе систему рівнянь і алгоритмів їх реалізації.

Математичної основою побудови моделі є рівняння, що описують форму і рух об'єктів. Все різноманіття геометричних об'єктів є комбінацією різних примітивів - найпростіших фігур, які в свою чергу складаються з графічних елементів - точок , ліній і поверхонь.

Під комп'ютерною геометрією розуміють математичний апарат, застосовуваний у комп'ютерній графіці.

Комп'ютерна геометрія є математичний апарат, покладений в основу комп'ютерної графіки. У свою чергу, основою комп'ютерної геометрії складають різні перетворення точок і ліній. При використанні машинної графіки можна за бажанням змінювати масштаб зображення , обертати його, зміщувати і трансформувати для поліпшення наочності перспективного зображення. Всі ці перетворення можна виконати на основі математичних методів .

Перетворення, як і комп'ютерну геометрію, поділяють на двовимірні, або перетворення на площині, і тривимірні або просторові .

Але, з точки зору, нашої спеціальності розглянемо комп'ютерну графіку в інженерно-технічних розробках.

Наприклад, потрібно спостерігати з космосу за певними об'єктами, це в свою чергу передбачає наявність дискретного за часом спостереження з невеликим тимчасовим інтервалом, і тому, коли рухома камера фіксує напівтоновий образ об'єкта, що спостерігається (оптичну поверхню) у вигляді послідовності зображень, то цей образ від знімка до знімка деформується внаслідок перспективних спотворень і зміни положення камери. Геометрія відповідних деформацій моделюється проективними перетвореннями, які становлять більш великий клас, ніж відомі перетворення евклідової геометрії. Відновлення просторового рельєфу по стереоснимку призводить до проблеми точного встановлення координати відповідності елементів стереозображень. Для усунення цієї проблеми потрібно виділити пари реперних фрагментів і оцінювати параметри «розбіжності» відповідних точок, за якими можна відновити функцію геометричного перетворення і оцінити поверхню тривимірної сцени (рельєф).

Отже, застосування комп'ютерної графіки в інженерних цілях, передбачають оперативної взаємодії людини і комп'ютера, а також задачі числової обробки, розшифровки і передачі зображень.

1. ОГЛЯД МЕТОДІВ ГЕОМЕТРИЧНИХ ПЕРЕТВОРЕНЬ

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

1.1 Обертання

Розглянемо площину трикутника ABC (рис.1.1) і за допомогою наступного перетворення повернемо його на 90? проти годинникової стрілки відносно початку координат

.

Рис.1.1

Якщо використовувати матрицю розміром (2Х2), що складається з координат X і Y вершин трикутника, то можна записати

,

що є координатами результуючого трикутника A*B*C*. Поворот на 180 відносно початку координат досягається шляхом наступного перетворення

,

а на 270 відносно початку координат - перетворенням

.

Зрозуміло матриця тотожного перетворення

,

відповідає повороту навколо початку координат на 0 або 360. Звернемо увагу, що в цих прикладах не зустрічаються масштабування, ні відображення. У цих прикладах здійснюється перетворення в спеціальних випадках повороту навколо початку координат на кути 0, 90, 180, 270. Як здійснити поворот навколо точки початку координат на довільний кут ? Для відповіді на це питання розглянемо вектор положення від початку координат до точки Р (рис.1.2). Позначимо r - довжину вектора, а - кут між вектором і віссю х. вектор положення повертається навколо початку координат на кут та попадає в точку Р*. Записавши вектори положення для Р и Р*, отримаємо:

та

Використовуючи формулу для косинуса суми кутів, запишемо вираз для Р * такий спосіб.

.

Використовуючи визначення для х та у, можна переписати Р* як

.

Таким чином, перетворена точка має координати

Або в матричному вигляді

. (1.1)

Рис.1.2

Отже, перетворення повороту навколо точки початку координат на довільний кут и задається матрицею

. (1.2)

Повороти є позитивними, якщо здійснюються проти годинникової стрілки відносно точки обертання (рис. 1.2).

Визначник загальної матриці повороту має наступний вигляд:

. (1.3)

У загальному випадку перетворення по матриці з детерминантом, рівним 1, призводять до повного повороту.

Припустимо тепер, що потрібно повернути точку Р* назад в Р, тобто виконати зворотне перетворення. Очевидно, що необхідний кут повороту дорівнює - и. З формули (1.2) візьмемо матрицю для виконання необхідного перетворення

(1.4)

Так як cos(-и) = cosи и sin(-и) = -sinи. Вираз [T]-1 є формальної записом зворотної матриці [T]. Можна показати, що матриця [T]-1 є оберненою к [T], якщо згадати, що результат множення матриці на зворотну дає одиничну матрицю. У даному випадку:

де [I] - одинична матрица.

Аналіз виразів (1.2) та (1.4) приводить до іншого цікавого і корисного результату. Згадаймо, що транспонування матриці визначається заміною її рядків стовпцями. Позначимо транспоновану матрицю [T] як [T]T. Порівнюючи її з [T]-1, бачимо, що

. (1.5)

Зворотній матриця обертання є транспонованою. Оскільки формально визначник зворотної матриці обчислюється набагато складніше, ніж визначник транспонованою, то вираз (1.5) є досить важливим і корисним результатом. У загальному випадку зворотної для будь матриці перетворення повного повороту, тобто матриці з визначником, рівним +1, є її транспонована матриця (такі матриці називають ортогональними).

1.2 Відображення

У той час, як повний поворот на площині ху зазвичай здійснюється в двовимірному просторі щодо нормалі до площини, відображення являє собою той же поворот на кут 180є в тривимірному просторі і назад на

площину щодо осі, що лежить на площині ху. На рис.1.3 наведені приклади двох відображень на площині трикутника DEF. Відображення відносно прямої у=0 (вісь х) отримано з використанням матриці

(1.6)

У цьому випадку нові вершини трикутника D*E*F* визначатимуться перетворенням

Подібним чином відображення відносно осі у при х=0 буде мати вигляд

(1.7)

Рис.1.3

Відображення відносно прямої у=х здійснюється за допомогою матриці

. (1.9)

Виконавши перетворення, одержимо координати вершин трикутника D*E*F*

.

Аналогічним чином відображення відносно осі х буде мати вигляд

. (1.10)

У кожної з цих матриць визначник дорівнює -1. У загальному випадку, якщо визначник дорівнює -1, то перетворення дає повне відображення.

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

1.3 Масштбування

З міркувань щодо перетворення точок випливає, що величина масштабування визначається значенням елементів вихідної діагональної матриці. Якщо матриця

використовується в якості оператора впливу на вершини трикутника, то має місце «дворазове» розширення чи рівномірний масштабування щодо точки початку координат. Якщо значення елементів не рівні, то трикутник спотворюється, що зображено на рис.1.4.

Рис.1.4

Трикутник АВС, перетворений за допомогою матриці

,

переходить в пропорційно збільшений трикутник А*В*С*. Той самий трикутник, але перетворений за допомогою матриці

переходить в трикутник D*E*F*, що має спотворення, викликане різними коефіцієнтами масштабування. У загальному випадку при матриці

, (1.11)

в якій а=d, b=c= 0, виконується пропорційне масштабування; якщо a?d, b=c=0, то масштабування буде проведено непропорційно. В першому випадку a=d > 1 відбувається розширення, тобто збільшення зображення. Якщо a=d<1, то відбувається рівномірне стиснення, тобто фігура зменшується. Непропорційне розширення і стиснення виникають в залежності від значень a та d, які можуть бути менше або більше, ніж 1, незалежно один від одного. З рис. 1.4 видно також, що на перший погляд перетворення трикутника є переміщенням. Це пояснюється тим, що відносно початку координат масштабуються координатні вектори, а не точки. Для того щоб краще зрозуміти цей факт, розглянемо перетворення АВС в D*E*F* більш уважно. Зокрема,

Зауважимо, що кожна з компонент х координатних векторів трикутника DEF множилася на масштабний коефіцієнт 3, а компоненти у - на 2. Для того щоб отримати чисте масштабування без ефекту переміщення, центр фігури треба помістити в початок координат. Це видно на рис.1.5, на якому трикутник АВС збільшується в два рази при масштабування щодо його центру з координатами, рівними 1/3 підстави і 1/3 висоти. Конкретна матриця перетворення має вигляд

.

Рис.1.5

2.ДОСЛІДЖЕННЯ ДВОВИМІРНИХ ГЕОМЕТРИЧНИХ ПЕРЕТВОРЕНЬ

Вихідні дані:

M=250; N=450; H=120; L=100; Alfa=40;

Tetaz=20; Tetay=30; Tetax=20;

Tz=0; Ty=20; Tx=10;

Sz=0.9; Sy=1.2; Sx=1.2;

2.1 Сформуємо двовимірне зображення заданої геометричної фігури

1 % формированаие исходного изображения

2 Im2D=zeros(M,N);

3 Im2D(round(M/2-L/2):round(M/2+L/2),round(N/2-H/2):round(N/2+H/2))=1;

4 Im2ix = Im2D;

5 Im2D=imrotate(Im2D,Alfa,'crop'); % в градусах против час стр

6 figure; imshow(Im2D); title('ISX IZOB');

Результат представлений на рис.2.1

Рис.2.1

2.2 Виділимо 3 контрольні точки геометричної фігури і дізнаємося їх координати

а) шляхом обчислень

Контрольними точками виберемо кути прямокутника і розрахуємо їх координати до повороту фігури на 40 градусів, результат представлений на рис.2.2

Рис.2.2

Лівий верхній кут (165, 75);

X = 450/2-120/2 = 165

Y = 250/2 - 100/2 =75

Лівий нижній кут (165, 175);

Х =450/2-120/2 = 165

Y = 250/2+ 100/2 =175

Правий верхній кут (285, 75);

Х = 450/2 +120/2 = 285

Y = 250/2- 100/2= 75

XIsx =

166

165

283

YIsx =

76

173

76

Координати цих точок після повороту фігури на 40 градусів проти годинникової стрілки

Лівий верхній кут

X = (165-225) cos(-40) - (75-125) sin (-40) + 225= 146

Y = (165-225) sin(-40) + (75-125) cos (-40) + 125 = 125

Лівий нижній кут

X = (165-225) cos(-40) - (175-125) sin (-40) + 225 = 211

Y =(165-225) sin(-40) + (175-125) cos (-40) + 125 = 201

Правий верхній кут

X = (285-225) cos(-40) - (75-125) sin (-40) + 225 = 239

Y = (285-225) sin(-40) + (75-125) cos (-40) + 125 = 48

б) шляхом вимірювань за допомогою функції impixel(Im2D), яка представляє графічний інструмент для вибору контрольних точок під назвою Control Point Selection Tool , (рис.2.3)

impixel(Im2D)

XIsx =

148

211

238

YIsx =

125

201

50

Рис.2.3

Порівнюючи результати, отримані шляхом розрахунку і шляхом вибору за допомогою impixel(Im2D), ми бачимо незначну відмінність у координатах. Цей факт обумовлений похибкою яку вносить людина, яка обирає контрольні точки за допомогою графічного інструменту, а також пристроєм введення і відображення графічної інформації.

2.3 Маштабування та переміщення прямокутника

Маштабування Переміщення

2.4 Визначимо матрицю та операцію геометричного перетворення в MATLAB та отримаємо зображення-результат перетворення рис.2.4

% матриці прямого перетворення

R2D=[cos(Tetaz*pi/180) sin(Tetaz*pi/180) 0

-sin(Tetaz*pi/180) cos(Tetaz*pi/180) 0

0 0 1]; % поворот за часовою стрілкою

S2D=[Sx 0 0

0 Sy 0

0 0 1]; % розтяг

T2D=[1 0 0

0 1 0

Tx Ty 1]; % переміщення

TFormR2D=maketform('affine',R2D);

TFormS2D=maketform('affine',S2D);

TFormT2D=maketform('affine',T2D);

% пряме геометричне перетворення вхідного зображення

Im2DTransform1=imtransform(Im2D,TFormR2D,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

Im2DTransform2=imtransform(Im2DTransform1,TFormS2D,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

Im2DTransform3=imtransform(Im2DTransform2,TFormT2D,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

% вивід резултатів перетворення

figure; subplot(2,2,1); imshow(Im2D); title('Вхідне зображення');

subplot(2,2,2); imshow(Im2DTransform1); title('Поворот');

subplot(2,2,3); imshow(Im2DTransform2); title('Маштабування');

subplot(2,2,4); imshow(Im2DTransform3); title('Переміщення');

Матриця геометричного перетворення відповідно програмі обчислень:

[XTransform3, YTransform3, PTransform3]=impixel(Im2DTransform3)

XTransform3 =

196

202

300

YTransform3 =

125

229

111

PTransform3 =

0.4375 0.4375 0.4375

0.0250 0.0250 0.0250

0.1062 0.1062 0.1062

Рис.2.4

2.5 Визначимо на зображенні-результаті перетворення координат контрольних точок за допомогою impixel, та порівняємо їх з даними, отриманими при виконанні пункту 2.3

Переміщення:

[XRestore1, YRestore1, PRestore1]=impixel(Im2DRestore1)

XRestore1 =

138

179

270

YRestore1 =

94

205

47

PRestore1 =

0.9941 0.9941 0.9941

1.0000 1.0000 1.0000

1.0000 1.0000 1.0000

Масштабування:

[XRestore2, YRestore2, PRestore2]=impixel(Im2DRestore2)

XRestore2 =

153

187

262

YRestore2 =

100

190

61

PRestore2 =

0.9859 0.9859 0.9859

1.0000 1.0000 1.0000

1.0000 1.0000 1.0000

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

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

2.6 Виконати в МАТLАВ зворотнє геометричне перетворення шляхом

а)застосування матриці оберненого перетворення відносно результатів п.2.4. представлено на рис.2.5

Матриця оберненого геометричного перетворення:

PRestore3 =

0.5672 0.5672 0.5672

0.9949 0.9949 0.9949

0.6150 0.6150 0.6150

Рис.2.5

б)Визначимо на зображенні, відновленому шляхом зворотнього геометричного перетворення, координати контрольних точок за допомогою impixel(Im2DRestore3), та порівняємо їх з результатами п. 2.2.

[XRestore3, YRestore3, PRestore3]=impixel(Im2DRestore3)

XRestore3 =

147

211

238

YRestore3 =

125

200

49

Порівнюючи дані з пункту 2.2 і 2.5: розраховані, прямого та оберненого перетворення, спостерігається деяка розбіжність. Це зумовлено наявністю інструментальної похибки та похибкою яку вносить людина, яка обирає контрольні точки за допомогою графічного інструменту, а також пристроєм введення і відображення графічної інформації.

3.РОЗРОБКА МЕТОДУ ГЕОМЕТРИЧНИХ ПЕРЕТВОРЕНЬ ЗОБРАЖЕНЬ ТРИВИМІРНИХ ОБ'ЄКТВ

3.1 Сформуємо літери згідно варіанту завдання таким чином , щоб вони були розташовані в растрі розміром NxM дискретних точок (рис.3.1)

Вихідні дані

% вихідні дані

M=250; N=450; H=120; L=100; Alfa=40;

Tetaz=20; Tetay=30; Tetax=20;

Tz=0; Ty=20; Tx=10;

Sz=0.9; Sy=1.2; Sx=1.2;

% формированаие исходного изображения

Im2D=imread('ДЕЄ1.png');

Im2D=im2double(Im2D(1:M,1:N));

Im2D=imrotate(Im2D,Alfa,'crop'); % в градусах против час стр

figure; imshow(Im2D); title('ISX IZOB');

Рис.3.1 - Початкове зображення

3.2 Для зображення тривимірного об'єкту досліджуємо геометричне перетворення в тривимірному просторі згідно мого варіанту на основі 4 контрольних точок

а) виконаємо проекції: повороту, масштабування, переміщення (рис.3.2):

Рис.3.2 - Проекції

б) Виконуємо зворотне геометричне перетворення перетвореного зображення (рис.3.3):

Рис.3.3 - Зворотне перетворення

в) На основі 4 контрольних точок дослідимо геометричне перетворення в тривимірному просторі за допомогою impixel:

[XIsx, YIsx, PIsx]=impixel(Im2D)

Рис.3.4

[XTransform3, YTransform3, PTransform3]=impixel(Im2DTransform3)

Рис.3.5

Порівняємо координати початкового XIsx, YIsx та отриманого XRestore3, YRestore3 зображення після перетворень:

Отже, початкові та отримані значення після перетворення, майже ідентичні і практично не відрізняються

ВИСНОВОК

геометричний перетворення matlab

В даній курсовій роботі було досліджено методи геометричних перетворень об'єктів. В першому розділі було розглянуто всі види геометричних перетворень такі, як афінні перетворення, проекційні перетворення, поліномінальні перетворення. В другому та третьому розділі було за допомогою геометричних перетворень досліджено перетворення двовимірних та тривимірних зображень згідно варіанту. В процесі досліджування координати перетворення розраховували згідно існуючих формул та за допомогою розробленної програми в MATLAB. Отриманні значення мають деяку відмінність, що зумовлена наявністю інструментальної похибки та похибкою яку вносить людина, яка обирає контрольні точки за допомогою графічного інструменту, а також пристроєм введення і відображення графічної інформації.

СПИСОК ЛІТЕРАТУРИ

1. Р. Гонсалес, Р. Вудс. Цифровая обробка зображений.

2. Ван Дем, Фолі. Графіка.

3. Hunt, Brian. R Matlab R2007 с нуля.

4. Энджел Й. Практическое введение в машинную графику.

5. А. Ф. Дащенко, В. Х. Кириллов. MATLAB в инженерных и научных расчетах.

6. Ньюмен, Споут. Основи машинної графіки.

ДОДАТКИ

Програма для двовимірного перетворення

% исходные данные

M=250; N=450; H=120; L=100; Alfa=40;

Tetaz=20; Tetay=30; Tetax=20;

Tz=0; Ty=20; Tx=10;

Sz=0.9; Sy=1.2; Sx=1.2;

% формированаие исходного изображения

Im2D=zeros(M,N);

Im2D(round(M/2-L/2):round(M/2+L/2),round(N/2-H/2):round(N/2+H/2))=1;

Im2D=imrotate(Im2D,Alfa,'crop'); % в градусах против час стр

figure; imshow(Im2D); title('ISX IZOB');

% матрицы прямого геометрического преобразования

R2D=[cos(Tetaz*pi/180) sin(Tetaz*pi/180) 0

-sin(Tetaz*pi/180) cos(Tetaz*pi/180) 0

0 0 1]; % в рад по час стр

S2D=[Sx 0 0

0 Sy 0

0 0 1]; % растяжение раз

T2D=[1 0 0

0 1 0

Tx Ty 1]; % перенос вправо и вниз

TFormR2D=maketform('affine',R2D);

TFormS2D=maketform('affine',S2D);

TFormT2D=maketform('affine',T2D);

% прямое геометрическое преобразование исх изображения

Im2DTransform1=imtransform(Im2D,TFormR2D,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

Im2DTransform2=imtransform(Im2DTransform1,TFormS2D,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

Im2DTransform3=imtransform(Im2DTransform2,TFormT2D,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

% вывод преобразованного изображения

figure; subplot(2,2,1); imshow(Im2D); title('Isx Izob');

subplot(2,2,2); imshow(Im2DTransform1); title('Povorot');

subplot(2,2,3); imshow(Im2DTransform2); title('Maschtab');

subplot(2,2,4); imshow(Im2DTransform3); title('Peremesch');

% матрицы обратного геометрического преобразования

R2DInv=[cos(Tetaz*pi/180) -sin(Tetaz*pi/180) 0

sin(Tetaz*pi/180) cos(Tetaz*pi/180) 0

0 0 1]; % в рад по час стр

S2DInv=[1/Sx 0 0

0 1/Sy 0

0 0 1]; % растяжение раз

T2DInv=[1 0 0

0 1 0

-Tx -Ty 1]; % перенос вправо и вниз

TFormT2DInv=maketform('affine',T2DInv);

TFormS2DInv=maketform('affine',S2DInv);

TFormR2DInv=maketform('affine',R2DInv);

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

Im2DRestore1=imtransform(Im2DTransform3,TFormT2DInv,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

Im2DRestore2=imtransform(Im2DRestore1,TFormS2DInv,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

Im2DRestore3=imtransform(Im2DRestore2,TFormR2DInv,...

'UData',[-round(N/2)+1 round(N/2)],'VData',[-round(M/2)+1 round(M/2)],...

'XData',[-round(N/2)+1 round(N/2)],'YData',[-round(M/2)+1 round(M/2)]);

% вывод восстановленного изображения

figure; subplot(2,2,1); imshow(Im2DTransform3); title('Preob Izob');

subplot(2,2,2); imshow(Im2DRestore1); title('Obr Peremesch');

subplot(2,2,3); imshow(Im2DRestore2); title('Obr Maschtab');

subplot(2,2,4); imshow(Im2DRestore3); title('Obr Povorot');

% получение координат точек

figure; [XIsx, YIsx, PIsx]=impixel(Im2D)

[XTransform3, YTransform3, PTransform3]=impixel(Im2DTransform3)

[XRestore3, YRestore3, PRestore3]=impixel(Im2DRestore3)

Програма для тривимірного перетворення

clear all;

M=250; N=450; H=120; L=100; Alfa=40;

Tetaz=20; Tetay=30; Tetax=20;

Tz=0; Ty=20; Tx=10;

Sz=0.9; Sy=1.2; Sx=1.2;

% формированаие исходного изображения

Im2D=imread('ДЕЄ1.png');

Im2D=im2double(Im2D(1:M,1:N));

Im2D=imrotate(Im2D,Alfa,'crop'); % в градусах против час стр

figure; imshow(Im2D); title('ISX IZOB');

[XIsx, YIsx, PIsx]=impixel(Im2D)

% матрицы прямого геометрического преобразования

R3DX=[1 0 0 0

0 cos(Tetax*pi/180) sin(Tetax*pi/180) 0

0 -sin(Tetax*pi/180) cos(Tetax*pi/180) 0

0 0 0 1]; % в рад по час стр

R3DY=[cos(Tetay*pi/180) 0 -sin(Tetay*pi/180) 0

0 1 0 0

sin(Tetay*pi/180) 0 cos(Tetay*pi/180) 0

0 0 0 1]; % в рад по час стр

R3DZ=[cos(Tetaz*pi/180) sin(Tetaz*pi/180) 0 0

-sin(Tetaz*pi/180) cos(Tetaz*pi/180) 0 0

0 0 1 0

0 0 0 1]; % в рад по час стр

R3D=R3DZ*R3DY*R3DX;

S3D=[Sx 0 0 0

0 Sy 0 0

0 0 Sz 0

0 0 0 1]; % растяжение раз

T3D=[1 0 0 0

0 1 0 0

0 0 1 0

Tx Ty Tz 1]; % перенос вправо и вниз

TFormR3D=maketform('affine',R3D);

TFormS3D=maketform('affine',S3D);

TFormT3D=maketform('affine',T3D);

MP3D=[1 0 0 0

0 1 0 0

0 0 0 0

0 0 0 1]; % ортографическая проекция

TFormMP3D=maketform('projective',MP3D);

% прямое геометрическое преобразование исх изображения

A3D=zeros(M*N,3);

k=0;

for j=1:M

for i=1:N

if Im2D(j,i)>=0.5

k=k+1;

A3D(k,1)=i-round(N/2)+1; A3D(k,2)=j-round(M/2)+1;

end;

end;

end;

B3D=A3D(1:k,:);

C3D1=tformfwd(TFormR3D, B3D);

C3D2=tformfwd(TFormS3D, C3D1);

C3D3=tformfwd(TFormT3D, C3D2);

D3D1=tformfwd(TFormMP3D, C3D1);

D3D2=tformfwd(TFormMP3D, C3D2);

D3D3=tformfwd(TFormMP3D, C3D3);

Im2DTransform1=zeros(M,N);

for i=1:k

x=round(D3D1(i,1)+round(N/2)-1); y=round(D3D1(i,2)+round(M/2)-1);

Im2DTransform1(y,x)=1;

end;

Im2DTransform2=zeros(M,N);

for i=1:k

x=round(D3D2(i,1)+round(N/2)-1); y=round(D3D2(i,2)+round(M/2)-1);

Im2DTransform2(y,x)=1;

end;

Im2DTransform3=zeros(M,N);

for i=1:k

x=round(D3D3(i,1)+round(N/2)-1); y=round(D3D3(i,2)+round(M/2)-1);

Im2DTransform3(y,x)=1;

end;

% вывод преобразованного изображения

figure; subplot(2,2,1); imshow(Im2D); title('Isx Izob');

subplot(2,2,2); imshow(Im2DTransform1); title('Proek Povorot');

subplot(2,2,3); imshow(Im2DTransform2); title('Proek Maschtab');

subplot(2,2,4); imshow(Im2DTransform3); title('Proek Peremesch');

% % матрицы обратного геометрического преобразования

R3DXInv=[1 0 0 0

0 cos(Tetax*pi/180) -sin(Tetax*pi/180) 0

0 sin(Tetax*pi/180) cos(Tetax*pi/180) 0

0 0 0 1]; % в рад по час стр

R3DYInv=[cos(Tetay*pi/180) 0 sin(Tetay*pi/180) 0

0 1 0 0

-sin(Tetay*pi/180) 0 cos(Tetay*pi/180) 0

0 0 0 1]; % в рад по час стр

R3DZInv=[cos(Tetaz*pi/180) -sin(Tetaz*pi/180) 0 0

sin(Tetaz*pi/180) cos(Tetaz*pi/180) 0 0

0 0 1 0

0 0 0 1]; % в рад по час стр

R3DInv=R3DZInv*R3DYInv*R3DXInv;

S3DInv=[1/Sx 0 0 0

0 1/Sy 0 0

0 0 1/Sz 0

0 0 0 1]; % растяжение раз

T3DInv=[1 0 0 0

0 1 0 0

0 0 1 0

-Tx -Ty -Tz 1]; % перенос вправо и вниз

TFormR3DInv=maketform('affine',R3DInv);

TFormS3DInv=maketform('affine',S3DInv);

TFormT3DInv=maketform('affine',T3DInv);

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

C3D2Restore=tforminv(TFormT3D, C3D3);

C3D1Restore=tforminv(TFormS3D, C3D2Restore);

B3DRestore=tforminv(TFormR3D, C3D1Restore);

D3D3Restore=tformfwd(TFormMP3D, C3D2Restore);

D3D2Restore=tformfwd(TFormMP3D, C3D1Restore);

D3D1Restore=tformfwd(TFormMP3D, B3DRestore);

Im2DRestore3=zeros(M,N);

for i=1:k

x=round(D3D3Restore(i,1)+round(N/2)-1); y=round(D3D3Restore(i,2)+round(M/2)-1);

Im2DRestore3(y,x)=1;

end;

Im2DRestore2=zeros(M,N);

for i=1:k

x=round(D3D2Restore(i,1)+round(N/2)-1); y=round(D3D2Restore(i,2)+round(M/2)-1);

Im2DRestore2(y,x)=1;

end;

Im2DRestore1=zeros(M,N);

for i=1:k

x=round(D3D1Restore(i,1)+round(N/2)-1); y=round(D3D1Restore(i,2)+round(M/2)-1);

Im2DRestore1(y,x)=1;

end;

% вывод восстановленного изображения

figure; subplot(2,2,1); imshow(Im2DTransform3); title('Preob Izob');

subplot(2,2,2); imshow(Im2DRestore3); title('Obr Peremesch');

subplot(2,2,3); imshow(Im2DRestore2); title('Obr Maschtab');

subplot(2,2,4); imshow(Im2DRestore1); title('Obr Povorot');

% получение координат точек

figure; [XIsx, YIsx, PIsx]=impixel(Im2D)

[XTransform3, YTransform3, PTransform3]=impixel(Im2DTransform3)

[XRestore3, YRestore3, PRestore3]=impixel(Im2DRestore1)

Размещено на Allbest.ru


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

  • Квадратна матриця вироджена (для особливої) за умови, що визначник дорівнює нулю. Вироджене чи не вироджене лінійне перетворення невідомих. Зв'язок існує між множенням матриць і послідовним виконанням лінійних перетворень. Добуток невироджених матриць.

    курсовая работа [114,4 K], добавлен 26.03.2009

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

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

  • Синтез, обґрунтування і дослідження моделей мультиграничної сегментації на основі зв’язків покриттів. Введення і дослідження операцій на класах еквівалентностей або толерантностей для перетворень результатів сегментації для отримання областей зображень.

    автореферат [199,1 K], добавлен 11.04.2009

  • Геометричні перетворення зображення. Усунення розмитості зображення за допомогою алгоритму сліпої деконволюції або з допомогою фільтра Вінера. Моделювання Blur та відновлення розмитого зображення. Імітація (Motion Blur) розмитості рухом, його відновлення.

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

  • Характеристика форматів, які містять у собі опис тривимірних об'єктів. Мова моделювання віртуальної реальності, способи відображення координатних перетворень. Класифікація форматів графічних зображень, їх специфічні ознаки, призначення та застосування.

    контрольная работа [1,5 M], добавлен 20.09.2009

  • Використання встроених функцій елементарних перетворень пакету Maple. Зображення основних геометричних фігур. Використання функції RootOf для позначення будь-якого кореня виразу, заданого як її параметр. Оператор виділення повного квадрату в чисельнику.

    контрольная работа [2,8 M], добавлен 18.07.2010

  • Призначення та область застосування програм, які орієнтовані на перетворення зображень з плоского в об’ємне. Основні стадії формування тривимірного зображення. Класифікація моделей і методів візуалізації. Особливості створення карти глибин по пікселям.

    курсовая работа [325,8 K], добавлен 04.06.2010

  • Основні теоретичні відомості алгоритмів стиснення зображень: класи зображень та їх представлення в пам'яті, алгоритми та принципи групового кодування. Огляд та аналіз сучасних програмних засобів конвертування. Тестування, опис роботи програмного засобу.

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

  • Використання методів обробки сигналів, які базуються на використанні малохвильової теорії. Вимоги до алгоритмів компресії та критерії порівняння алгоритмів. Застосування вейвлет-перетворень. Критерії оцінювання оптимальності вибору малохвильових функцій.

    реферат [1,1 M], добавлен 26.05.2019

  • Особливості матриць в MATLAB, їх введення з клавіатури та завантаження з інших джерел. Доступ до елементів матриці. Операції над матрицями (векторами). Поелементне перетворення матриці. Характеристика спеціальних функцій, що генерують поширені матриці.

    реферат [333,9 K], добавлен 25.11.2014

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