Розробка методів геометричних перетворень об’єктів

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

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

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

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

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

Міністерство освіти і науки, молоді та спорту України

Житомирський державний технологічний університет

Кафедра АУТС

Курсова робота

з дисципліни “Комп'ютерна графіка”

“Розробка методів геометричних перетворень об'єктів”

Виконав:

Терещук В.І.

Перевірив:

Подчашинський Ю.О.

Житомир 2012

Зміст

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

Завдання на курсову роботу

Вступ

1. Огляд методів геометричних перетворень растрової графіки

2. Розробка методу геометричних перетворень зображень у двовимірному просторі

Висновок

Список літератури

Додаток А

Завдання на курсову роботу (табл. 1.1 і табл. 1.2)

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

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

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

Зображення літер

ширина N, дискр. точок

висота M, дискр. точок

ширина H, диск. точок

висота L, диск. точок

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

17

450

250

80

100

20

РСТ

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

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

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

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

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

Tx

Ty

Tz

Sx

Sy

Sz

Tetax

Tetay

Tetaz

17

0

20

10

1,2

0,9

1,5

10

20

10

Послідовність виконання курсової роботи:

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

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

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

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

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

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

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

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

1.6. Виконати в MATLAB зворотне геометричне перетворення шляхом:

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

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

1.7. Визначити на зображенні, відновленому шляхом зворотного геометричного перетворення, координати контрольних точок, порівняти їх з результатами п.1.2.

Вступ

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

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

1. Огляд методів геометричних перетворень растрової графіки

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

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

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

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

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

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

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

Типи геометричних перетворень:

· Нелінійні перетворення

· Лінійні перетворення

· Евклідове перетворення

· Афінне перетворення

· Проективні перетворення

· Поліноміальне перетворення

Нелінійні перетворення

· Довільне перетворення точок моделі x? = Т(х)

Лінійні перетворення

· Перетворення, при яких нові координати точки лінійно залежать від старих координат цієї точки наступним чином: x? = Тх.

Більш докладно розглянемо перетворення, пов'язані з найбільш важливими підгрупами спільною лінійною (або проективною) групами, а саме евклідову підгрупу, а також підгрупи подібності і афінну.

Евклідові перетворення

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

,

з матрицею повороту на кут вигляду і вектором трансляції (зсуву) .

За допомогою трійок однорідних координат і матриць третього порядку можна описати будь-яке лінійне перетворення площини. Дійсно, введенням додаткової одиничної компоненти рівняння можна переписати таким чином:

Рис. 1. Дія евклідового перетворення на п'ять точок площини (зсув, поворот)

Комбінація двох послідовних обертань R1 і R2 очевидно зводиться до обертання R1R2. Крім того, вибором обертання R2 = R1-1 і зсуву t2 = -R1-1t1 такий (другий) жорсткий рух переводить точки площини в початкове положення. Зазначеної парою властивостей, власне кажучи, і характеризується група, а клас матриць із структурою виду відомий як евклідового група перетворень. (Вона є, природно, приватним випадком лінійних перетворень у яких матриці довільні. Ці матриці невироджені і формують загальну лінійну групу перетворень або проективну групу.) Цікаво, що матриці обертання R самі по собі формують так звану ортогональну підгрупу з чудовою властивістю RtR = I, де I - одинична матриця.

Афінні перетворення

Афінний перетворення знаходять широке застосування в задачах машинної графіки. Найбільшого поширення набули часткові випадки афінних перетворень: зсув, поворот, масштабування.

Нехай на площині задана початкова система координат 0ХY і деяка нова система координат 01X1Y1. Тоді перетворення, яке полягає в тому, що точці P площини ставиться у відповідність точка P1, яка в новій системі має такі ж координати, як і точка P в початковій, називаються афінними.

Основні властивості афінних перетворень:

* Множина точок, яка в початковій системі координат задовольняє деяке рівняння, переходить у множину точок, координати яких у новій системі задовольняють таке саме рівняння. Так, пряма переходить у пряму, площина у площину;

* Співвідношення площ і об'ємів геометричних фігур зберігається;

* Зберігається просте співвідношення трьох точок;

* Існує єдине перетворення площини, яке переводить трійку точок, які не належать одній прямій, в нову трійку точок, які також не належать прямій;

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

На рис.2.1 зображені геометричні співвідношення між початковою системою 0XY і системою 0X1Y1, яку отримали при повороті початковій системи на кут a.

За допомогою співвідношень на рис.2.1 отримуємо систему рівнянь

X1 = X cos + Y sin,

Y1 = Y cos - X sin,

що можна представити у матричному вигляді:

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

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

Рис. 2.1. Поворот системи координат

Суть методу полягає в наступному.

Декартова площина 1 і відповідна їй система координат ХОY утворена площиною екрану індикатора зображення, а декартова площина 2 і відповідна їй система координат Х1О1Y1 площиною матриці світлочутливих елементів (рис.2.2).

У початковий момент часу точка А1 з координатами Х1, Y1 відображається на екрані індикатора. Матриця світлочутливих елементів, яка повернена по відношенню до екрану на кут Dj, сприймає точку в системі координат Х1О1Y1, по відношенню до якої остання має координати Х11, Y11. Очевидно, що відображаючи на екрані точку з координатами Х11, Y11, здійснюється поворот вихідної точки на кут Dj в системі координат ХОY. Виконуючи вказану процедуру для всіх точок зображення, за час одного кадру здійснюється поворот зображення на кут Dj.

За рахунок повторення процесу n раз, де n = j/Dj, забезпечується поворот зображення на заданий кут j.

Рис. 2.2. Функціональний метод повороту

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

Недолік функціонального методу повороту складається у відносно великій похибці перетворення.

При масштабуванні здійснюють збільшення або зменшення розмірів зображення згідно з перетвореннями виду

де Kx, Ky масштабні коефіцієнти.

При Kx = Ky = K здійснюється перетворення подібності. Зображення збільшується в K раз при K > 1 і зменшується при K < 1.

Точка зсувається шляхом додавання до кожної координати точки позитивної або негативної константи:

де m, n - значення параметрів зсуву.

Афінний перетворення об'єктів на площині

Афінні перетворення об'єктів на площині описуються так:

де А, В, ..., F - константи; x, у-координати до перетворення; X, Y - нові координати точок об'єктів.

Розглянемо окремі випадки афінного перетворення.

1. Зсув

У матричній формі:

Зворотне перетворення дозволяє розрахувати старі координати точок об'єктів по відомим новим координатами:

2. Розтягування-стиснення

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

В матричній формі:

Зворотне перетворення:

3. Поворот навколо центру координат (0, 0)

або

Формули для зворотного перетворення можна отримати, якщо уявити собі поворот точки з координатами (X, У) на кут (-б):

Проекційні перетворення

Проективні перетворення, в загалом, не зберігають паралельності ліній. Властивістю, що зберігається при проективному перетворенні, є так звана колінеарність точок: три точки, що лежать на одній прямій (тобто колінеарні), після перетворення залишаються лежати на одній прямій. Тому оборотне проективне перетворення прийнято називати ще коллінеацією.

Проективне перетворення пов'язане з відображенням тривимірної візуальної інформації на двовимірну площину. З математичної точки зору зручно розглядати світ, включеним в тривимірний проективний простір P3, а площину зображення, включену в проективний простір розмірності два - P2. Точки на тривимірній сцені і на зображенні представляються в проективних просторах як вектори в однорідних координатах.

Проективне перетворення з P3 в P2 (перспективна проекція), відображає евклідову точку сцени p = (X, Y, Z)t в точку зображення x = (x, y)t і виражене в однорідних координатах, задається у вигляді:

.

Рис. 3. Дія проективного перетворення на п'ять точок площини

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

Поліноміальні перетворення

Формули поліноміальних перетворень використовуються для перекладу вихідних координат (зазвичай локальних-прямокутних) в кінцеві (зазвичай спроектовані - прямокутні). В залежності від спотворення зображення, кількості контрольних точок (GCP ground control point), і їх розміщення відносно один одного, для вираження необхідного перетворення можуть знадобитися досить складні поліноміальні формули. Складність полінома виражається через його порядок. Порядок це показник найвищого ступеня, використовуваної в поліномі.

Лінійні перетворення

Перетворення 1-го порядку лінійне перетворення. Це перетворення може змінювати:

· Положення по X і / або Y; Зміна положення, зміщує зображення на певне число пікселів по X і Y;

· Масштаб по X і / або Y; Коефіцієнти масштабування по X і Y можуть бути різними Нахил по X і / або Y;

· Поворот; При повороті, можна визначити будь-яке позитивне або негативне число градусів, для повороту по і проти годинникової стрілки відповідно. Поворот відбувається навколо центрального пікселя зображення;

· Відображення; зліва направо, зверху вниз, зверху вниз і зліва направо (аналогічно повороту на 180 градусів).

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

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

На малюнку показано, як змінюються дані при лінійних перетвореннях.

Для здійснення поліноміального перетворення першого ступеня необхідно знайти 6 коефіцієнтів по три на кожну координату (X і Y): a0, a1, a2, b0, b1, b2. Ці коефіцієнти, далі використовуються у власне рівняннях поліноміального перетворення першого ступеня (еквівалентного також афінному перетворенню):

x0 = a0 + a1x + a2y

y0 = b0 + b1x + b2y

де x, y вихідні координати, x0, y0 кінцеві координати.

2. Розробка методу геометричних перетворень зображень у двовимірному просторі

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

M = 250; N = 450; H = 80; L = 100; Alfa = 20;

Tetaz = 10; Tetay = 20; Tetax = 10;

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

Sz = 1.5; Sy = 0.9; Sx = 1.2.

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

% вхідні дані

clear all;

M=250; N=450; H=80; L=100; Alfa=20;

Tetaz=10; Tetay=20; Tetax=10;

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

Sz=1.5; Sy=0.9; 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');

Результат:

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

координати:

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

Контрольними точками виберемо кути прямокутника і розрахуємо їх координати.

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

Х = 250 / 2 - 100 / 2 = 75 Y = 450 / 2 - 80 / 2 = 185

Лівий нижній кут (75, 265);

X = 250 / 2 - 100 / 2 = 75 Y = 450 / 2 + 80 / 2 = 265

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

Х = 250 / 2 + 100 / 2 = 175 Y = 450 / 2 - 80 / 2 = 185

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

Рис. 4. Обертання навколо довільного центру

Для такої системи поворот точок відбувається навколо її центру:

Перетворимо координати (X', У') в (X, Y) зрушенням системи координат в точку (0,0):

Якщо об'єднати формули перетворень, то отримаємо результат:

Координати після повороту прямокутника на 10° проти годинникової стрілки:

x0 = 250 / 2 = 125;

y0 = 450 / 2 = 225.

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

X = (75 - 125) • cos(0°) - (185 - 225) • sin(0°) + 125 = 75

Y = (75 - 125) • sin(0°) + (185 - 225) • cos(0°) + 225 = 185

Лівий нижній кут (75; 265);

X = (75 - 125) • cos(0°) - (265 - 225) • sin(0°) + 125 = 75

Y = (75 - 125) • sin(0°) + (265 - 225) • cos(0°) + 225 = 265

Правий верхній кут (175; 185);

X = (175 - 125) • cos(0°) - (185 - 225) • sin(0°) + 125 = 175

Y = (175 - 125) • sin(0°) + (185 - 225) • cos(0°) + 225 = 185

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

Результат: cpselect(Im2Dx,Im2D)

cpstruct =

inputPoints: [3x2 double]

basePoints: [3x2 double]

inputBasePairs: [3x2 double]

ids: [4x1 double]

inputIdPairs: [3x2 double]

baseIdPairs: [3x2 double]

isInputPredicted: [3x1 double]

isBasePredicted: [3x1 double]

base_points = input_points =

172.1250 92.1250 172.1094 92.1094

205.1250 186.8594 205.1250 186.8594

246.1250 65.1250 246.1250 65.1250

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

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

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

X = (75 - 125) • cos(0°) - (185 - 225) • sin(0°) + 125 = 75

Y = (75 - 125) • sin(0°) + (185 - 225) • cos(0°) + 225 = 185

Лівий нижній кут (75; 265);

X = (75 - 125) • cos(0°) - (265 - 225) • sin(0°) + 125 = 75

Y = (75 - 125) • sin(0°) + (265 - 225) • cos(0°) + 225 = 265

Правий верхній кут (175; 185);

X = (175 - 125) • cos(0°) - (185 - 225) • sin(0°) + 125 = 175

Y = (175 - 125) • sin(0°) + (185 - 225) • cos(0°) + 225 = 185

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

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

X = (75 - 125) • 1.2 + 125 = 65 Y = 185 + 20 = 205

Y = (185 - 225) • 0.7 + 225 = 197

Лівий нижній кут (75; 265); Лівий нижній кут (75; 265);

X = (75 - 125) • 1.2 + 125 = 65 Y = 265 + 20 = 285

Y = (265 - 225) • 0.7 + 225 = 253

Правий верхній кут (175; 185); Правий верхній кут (175; 185);

X = (175 - 125) • 1.2 + 125 = 185 Y = 185 + 20 = 205

Y = (185 - 225) • 0.7 + 225 = 197

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

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

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');

Результат:

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

Результат: cpselect(Im2D,Im2DTransform3)

base_points = input_points =

168.1250 107.1250 172.1250 92.1094

188.1563 196.8125 205.1094 186.8750

263.8438 95.1250 246.8594 65.1250

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

1.6. Виконати в MATLAB зворотне геометричне перетворення шляхом:

а) застосування матриці оберненого перетворення

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

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');

Результат:

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

basepoints=[172.1250 92.1250; 205.1250 186.8594; 246.1250 65.1250];

inputpoints=[172.1094 92.1094; 205.1250 186.8594; 246.1250 65.1250];

TForm2DCP=cp2tform(inputpoints,basepoints,'affine');

Im2DRestoreCP=imtransform(Im2DTransform3,TForm2DCP,...

'XData',[1 N],'YData',[1 M]);

% вивід відновленого зображення

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

subplot(2,2,2); imshow(Im2DTransform3); title('Preobr. Izob');

subplot(2,2,3); imshow(Im2DRestore3); title('Vostan. Izob');

subplot(2,2,4); imshow(Im2DRestoreCP); title('Vostan. Izob. po K.tochkam');

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

Результат:

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

Результат: cpselect(Im2DRestore3,Im2DRestoreCP)

base_points = input_points =

168.0938 107.0938 172.1406 92.0938

188.1406 196.8594 205.1250 186.8906

263.8750 95.1250 246.8281 65.0938

Початкові координати:

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

Лівий нижній кут (75; 265);

Правий верхній кут (175; 185).

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

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

% отримання координат точок

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

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

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

[XRestoreCP, YRestoreCP, PRestoreCP]=impixel(Im2DRestoreCP)

XIsx = XRestore3 =

172 173

205 205

245 245

YIsx = YRestore3 =

93 93

186 185

66 66

PIsx = PRestore3 =

0.9733 0.9733 0.9733 0.9232 0.9232 0.9232

0.9733 0.9733 0.9733 0.7776 0.7776 0.7776

0.9733 0.9733 0.9733 0.6687 0.6687 0.6687

XTransform3 = XRestoreCP =

169 169

190 189

262 261

YTransform3 = YRestoreCP =

109 109

195 195

96 96

PTransform3 = PRestoreCP =

0.8228 0.8228 0.8228 0.8140 0.8140 0.8140

0.8841 0.8841 0.8841 0.9362 0.9362 0.9362

0.8736 0.8736 0.8736 0.8129 0.8129 0.8129

Висновок

В результаті виконання курсової роботи мною були досліджені методи афінних перетворень в двовимірному і тривимірному просторах. За допомогою ортографічного проектування було отримано зображення тривимірних зображень. Також були отримані навички роботи з програмним забезпеченням для інженерних розрахунків МАТLAВ і пакетом обробки графіки Image Processing Toolbox.

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

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

Список використаної літератури

1. "Цифрова обробка зображень в середовищі MATLAB" Р. Гонсалес, Р. Вудс, С. Едцінс. - Москва, Техносфера, 2006 - 616с.

2. "Основи інтерактивної машинної графіки" Кн. 1 Дж. Фолі, А. вен Дем, - Москва «Мир» 1985 - 368с.

3. "Цифрова обробка зображень в інформаційних системах І.С. Грузман, B.C. Киричук, В.ГІ. Косих, Г.І. Перетягін, A.A. Спекгор - Новосибірськ НГ ТУ 2000, - 168с

4. "Комп'ютерна графіка" Порі В.М. - Петербург 2002 - 432с

5. "Matlab в інженерних і наукових розрахунках" А. Ф. Дащенко, В. X. Кирилов, Л. В. Коломієць, В. Ф. Оробей - Одеса «Астропринт» 2003

6. Конспект лекцій з предмету «Комп'ютерна графіка»

Додаток А

(Двовимірне перетворення)

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

clear all;

M=250; N=450; H=80; L=100; Alfa=20;

Tetaz=10; Tetay=20; Tetax=10;

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

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

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

Im2D = im2double(imread('C:\СТУ.bmp'));

%[M, N]=size(Im2D);

%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'); % в градусах против час стр

Im2D = rgb2gray(Im2D);

Im2Dx = Im2D ;

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

cpselect(Im2Dx,Im2D);

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

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');

cpselect(Im2D,Im2DTransform3);

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

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');

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

basepoints=[172.1250 92.1250; 205.1250 186.8594; 246.1250 65.1250];

inputpoints=[172.1094 92.1094; 205.1250 186.8594; 246.1250 65.1250];

TForm2DCP=cp2tform(inputpoints,basepoints,'affine');

Im2DRestoreCP=imtransform(Im2DTransform3,TForm2DCP,...

'XData',[1 N],'YData',[1 M]);

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

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

subplot(2,2,2); imshow(Im2DTransform3); title('Preobr. Izob');

subplot(2,2,3); imshow(Im2DRestore3); title('Vostan. Izob');

subplot(2,2,4); imshow(Im2DRestoreCP); title('Vostan. Izob. po K.tochkam');

cpselect(Im2DRestore3,Im2DRestoreCP);

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

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

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

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

[XRestoreCP, YRestoreCP, PRestoreCP]=impixel(Im2DRestoreCP)

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

...

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

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

    курсовая работа [278,5 K], добавлен 03.12.2009

  • Зародження системи Matlab. Високоефективна мова інженерних і наукових обчислень. Інтерактивна система, основним об'єктом якої є масив. Обчислення мінімумів, нулів функцій. Апроксимація й інтерполяція даних. Обчислення кінцевих різниць, перетворення Фур'є.

    лабораторная работа [146,4 K], добавлен 18.01.2013

  • Характеристика інструментів MatLab - пакету прикладних програм для числового аналізу. Основні функції та можливості програмного комплексу. Скриптова мова програмування. Побудова моделі штучної нейронної мережі за допомогою команди NNTool та її тестування.

    лабораторная работа [215,8 K], добавлен 11.06.2015

  • Алгебраїчні перетворення в Maple за допомогою вбудованих функцій елементарних перетворень. Позбавлення від ірраціональності в знаменнику. Побудування графіку функції в пакеті Maple-8. Пакет plottools – пакет для створення та роботи з графічними об’єктами.

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

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

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

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Характеристика методів та етапів створення простих програм на мові програмування С++. Особливості структури та порядку запуску програми. Функції вводу і виводу та маніпулятори мови С++. Робота з одновимірними масивами. Символьна інформація та рядки.

    дипломная работа [91,2 K], добавлен 19.06.2010

  • Розробка та виконання простих програм, програм з розгалуженням, з використанням функцій, масивів, рядків, функцій та структур. Динамічні структури даних. Написання програми обчислення струму по відомих значеннях напруги і опору електричного ланцюга.

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

  • Вивчення можливостей інтегрованого середовища розробки програм Qt Creator. Ознайомлення з основами паралельних обчислень мовою програмування С++ в цьому середовищі. Переваги та конструкції OpenMP, сортування масиву злиттям. Тестування програми сортування.

    курсовая работа [87,5 K], добавлен 28.10.2015

  • Характеристика технології візуального проектування і програмування, суть якої полягає в тому, що область розробки бере на себе більшу частину рутинної роботи. Огляд середовища швидкої розробки, в якій як мова програмування використовується мова Delphi.

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

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

    учебное пособие [753,6 K], добавлен 16.01.2011

  • Об'єктно-орієнтоване, або об'єктне, програмування. Поняття об'єктів і класів. Розробка програмного забезпечення. Створення операційних систем, прикладних програм, драйверів пристроїв, додатків для вбудованих систем, високопродуктивних серверів.

    контрольная работа [135,2 K], добавлен 25.10.2013

  • Вивчення базових засобів об'єктно-орієнтованих мов програмування і отримання навичок постановки і вирішення різних завдань за допомогою ПЕОМ. Дослідження практичних навичок використання науково-технічної та нормативної літератури. Вибір електродвигунів.

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

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

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

  • Мова C++ є як одна з найпоширеніших сучасних мов програмування. Базові засоби мови С++, її специфічні риси. Технологія складу програм, специфіка організації процесу програмування. Модульне програмування. Особливості об’єктно-орієнтованого програмування.

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

  • Розробка програми в візуальному середовищі С++. Визначення значення функцій в середовищі Builder мовою програмування С++. Обчислення елементів квадратної матриці згідно заданного алгоритму. Бібліотека візуальних компонентів і середовище програмування.

    курсовая работа [451,5 K], добавлен 15.01.2012

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

    курсовая работа [958,1 K], добавлен 16.02.2013

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

    статья [525,8 K], добавлен 19.09.2017

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

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

  • Мoвa прoгрaмувaння як систeма пoзначень, що служить для точного опису програм або алгоритмів для ЕOM. Вимоги до мов програмування, класифікація за їх особливостям. Загальна характеристика найбільш поширених мов програмування: Сі, Паскаль, Delphi, Бейсік.

    реферат [24,4 K], добавлен 10.11.2012

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