МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ...

31
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ “КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ ІМЕНІ ІГОРЯ СІКОРСЬКОГО” МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМ Методичні вказівки до виконання розрахункої роботи для студентів спеціальності 152 “Метрологія та інформаційно- вимірювальна техніка ” Рекомендовано вченою радою приладобудівного факультету Протокол № 9/16 від 31 жовтня 2016 р. Київ НТУУ «КПІ ім. Ігоря Сікорського» 2016

Upload: others

Post on 01-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ “КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ ІМЕНІ ІГОРЯ

СІКОРСЬКОГО”

МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ

СИСТЕМ

Методичні вказівки до виконання розрахункої роботи

для студентів спеціальності 152 “Метрологія та інформаційно-вимірювальна техніка ”

Рекомендовано вченою радою

приладобудівного факультету

Протокол № 9/16 від 31 жовтня 2016 р.

Київ

НТУУ «КПІ ім. Ігоря Сікорського»

2016

Page 2: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

2

Моделювання інформаційно-вимірювальних систем: Методичні вказівки до виконання розрахункої роботи для студентів спеціальності 152 “Метрологія та інформаційно-вимірювальна техніка ” [Eлектронне видання] / Уклад.: Кравченко І.В. – К.: НТУУ “КПІ”, 2016. – 31с.

В методичних вказівках визначено індивідуальні завдання, зміст, склад, правила оформлення та довідникові матеріали для виконання розрахункої роботи з дисципліни "Моделювання інформаційно-вимірювальних систем " студентами спеціалізацій "Оптико-електронні інформаційно-вимірювальні системи та технології, "Фотоніка та оптоінформатика". Викладено методику моделювання оптико-електронної системи в пакеті МАТЛАБ.

Навчальне електронне мережне видання

МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМ Методичні вказівки

виконання до розрахункої роботи для студентів спеціальності 152 “Метрологія та інформаційно-вимірювальна техніка ” [Eлектронне видання] / Уклад.: Кравченко І.В. – К.: НТУУ “КПІ”,

2016. – 31с.

Укладач Кравченко Ігор Володимирович, старший викладач

Рецензент Аврутов Вадим Вікторович, канд.техн.наук, доцент

Відповідальний редактор Колобродов Валентин Георгійович, д.т.н., проф

За редакцією укладача

Page 3: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

3

Зміст

Вступ................................................................................................................................. 4

1. Завдання та склад роботи ........................................................................................... 5

2. Теоретичні положення................................................................................................ 7

2.1 "Геометричні" моделі оптичних систем ................................................................. 7

2.2 Визначення координат оптичної осі....................................................................... 9

2.3 Засоби МАТЛАБу ................................................................................................... 10

3. Приклад ...................................................................................................................... 21

Додаток А. Варіанти індивідуальних завдань............................................................ 29

Література ...................................................................................................................... 31

Page 4: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

Вступ

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

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

Завдання роботи:

- закріплення теоретичних знань щодо технології створення комп’ютерних моделей та проведення обчислювального експерименту;

- набуття практичних навичок у розробці алгоритмів розв’язання інженерних обчислювальних задач;

- набуття навичок у програмування моделей інформаційно-вимірювальних систем, діалогів визначення вихідних даних та виведення результатів, умов проведення експерименту в графічній оболонці пакета МАТЛАБ.

Page 5: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

1. Завдання та склад роботи

Завдання

Розробити додаток (рис.1.1), який забезпечує:

- зчитування графічного файлу зображення;

- вибір радіокнопками типу моделі оригіналу та перетворення;

- введення значень фокусної відстані та поля зору оптичної системи, порогу межі поля зору;

- визначення координат центра поля зору, радіуса поля зору, похибки радіуса поля зору;

- перетворення файлу оригіналу відповідно до обраних значень;

- виведення на один екран поруч зображення оригіналу та перетвореного зображення;

- керування сіткою на зображенні;

- виведення назви та розміру файлу зображення;

- виведення умов експерименту: період комірок на зображенні, радіус поля зору, похибка обчислення поля зору, координати центру поля зору;

- збереження перетвореного зображення .

Склад та зміст роботи

Для виконання роботи передбачається застосування математичного пакету МАТЛАБ. Допускається застосування мов програмування високого рівня.

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

Склад пояснювальної записки:

- індивідуальне завдання із зазначенням номера варіанту; - описи застосованих методів; - тексти програм; - висновки; - список використаної літератури.

Page 6: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

6

Захист роботи провадиться шляхом тестування розроблених програм та перевіркою результатів в комп'ютерному класі.

Рис.1.1 – Вигляд вікна додатку

Page 7: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

2. Теоретичні положення

2.1 "Геометричні" моделі оптичних систем

Ширококутні оптичні системи "риб'яче око" знаходять широкого вжитку в застосуваннях, де потрібен дуже широкий кут огляду, близький до 1800. Зображення таких систем супроводжується суттєвими абераціями дисторсії.

Для опису систем типу "риб'яче око" використовують радіально симетричні проекційні моделі. В цих моделях враховується залежність радіуса відстані від оптичної осі системи r в залежності від кута зору Θ та фокальної відстані f ' (рис.2.1).

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

Перспективна модель:

` tg( )r f ϑ= ⋅ (2.1)

Стереографічна модель:

2 ` tg( )2

r fϑ

= ⋅ ⋅ (2.2)

Ортогональна модель:

` sin( )r f ϑ= ⋅ (2.3)

Еквідістантна модель:

`r f ϑ= ⋅ (2.4)

Еквісолідна модель:

2 ` sin( )2

r fϑ

= ⋅ ⋅ (2.5)

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

Декартові координати в центрованій системі координат визначаються як

cos( )x r ϕ= ⋅ sin( )y r ϕ= ⋅ (2.6)

Page 8: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

8

Рис.2.2 – Моделі оптичної системи

Вихідними даними для перерахунків моделей є фокусна відстань f, кутове поле зору Θ, радіус поля зору R в точках зображення.

Послідовність дій для перерахунку моделей виглядає наступним чином:

1. Визначення радіуса поля зору в абсолютних величинах r та кроку комірок відповідно до обраної моделі

dx=r/R (2.7)

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

2 2 2 2dx (x ) (y )i c i cr x dy y= ⋅ − + ⋅ − (2.8)

(y )

( )(x x )

c i

i c

dy yarctg

dxϕ

⋅ −=

⋅ − (2.9)

3. Розрахунок кута зору для моделі результату.

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

Page 9: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

9

5. За значеннями поточного радіуса та азимутального кута розрахунок декартових координат в центрованій системі для моделі результату по виразах (2.1 – 2.6).

6. Перерахунок декартових координат в пікселях в абсолютній системі

Для отримання абсолютних координат точки зображення в площині аналізу потрібен перерахунок в абсолютну систему координат.

2.2 Визначення координат оптичної осі

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

2 2 2( ) ( ) 0i c i cx x y y R− + − − = (2.10)

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

2 2 2

1

1( ) ( )

N

i c i c

i

x x y y RN =

− + − −∑ (2.11)

Лінеаризація моделі [2] введенням проміжних змінних

2 2 2i i iz x y= + 2 2 2( )c cc R x y= − +

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

2 2

1 1 1 1

2 2 2N N N N

c i c i i i i i

i i i i

x x y x y c x x z= = = =

⋅ ⋅ + ⋅ ⋅ ⋅ + ⋅ ⋅ = ⋅∑ ∑ ∑ ∑

2 2

1 1 1 1

2 2 2N N N N

c i c i i i i i

i i i i

y y x x y c y y z= = = =

⋅ ⋅ + ⋅ ⋅ ⋅ + ⋅ ⋅ = ⋅∑ ∑ ∑ ∑ (2.12)

2

1 1 1

2 2N N N

c i c i i

i i i

x x y y c N z= = =

⋅ ⋅ + ⋅ ⋅ + ⋅ =∑ ∑ ∑

Page 10: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

10

2.3 Засоби МАТЛАБу

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

- розташування потрібних елементів інтерфейсу в графічному вікні;

- визначення в М-файлах дій (команд Матлабу), які будуть виконуватися при зверненні користувача до цих об’єктів, наприклад, при натисканні кнопки.

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

Пакет Матлаб має вбудовані можливості для розробки таких вікон [3-5].

Розробка аплікацій може вестись «вручну» засобами вбудованої дескрипторної (handle) графіки, з використанням вбудованого середовища

GUIDE або вбудованого середовища розробки додатків App Designer

(http://www.mathworks.com/products/matlab/app-designer). Середовища GUIDE та

App Designer призначені для візуальної розробки зовнішнього виду

діалогових вікон аплікацій.

Діалогові графічні вікна побудовані на основі ієрархічних графічних об’єктів ( рис.2.3).

Рис. 2.3 - Ієрархія графічних об’єктів Матлабу

Page 11: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

11

Графічні об’єкти - це об’єктно - орієнтовані базові елементи системи керування графіки в Mатлабі. Вони описуються властивостями та створюють дерево структурної ієрархії:

Root - вершина ієрархії. Вона відповідає екрану комп’ютера.

Figure - вікна на екрані.

Uicontrol — елемент інтерфейсу користувача:

Text — статичний текст.

Edit — поле введення текстових даних користувача.

Checkbox — флаг.

Listbox — список.

Popupmenu — список, що розкривається.

Pushbutton — кнопка.

Togglebuttoon — перемикач.

Radiobutton — кнопка для вибору з кількох варіантів.

Slider — повзунок скролінгу.

Frame (uipanel)— групова панель, рамка.

Uimenu - меню інтерфейсу користувача, яке розташоване в верхній

частині вікна Figure.

Uicontextmenu - меню інтерфейсу користувача, яке викликається

правою кнопкою миші над елементом інтерфейсу.

Uibuttongroup – контейнер для розташування елементів

перемикач або радіокнопка.

Axes - визначає область графіків у вікні Figure.

Image – зображення, задаються у вигляді матриць.

Line - лінії.

Surface – поверхні, задаються у вигляді матриць.

Text - рядки символів.

Light - джерело світла для об’єктів Axes.

Uipanel - визначає декоративну панель для розташування інших

графічних елеметів у вікні Figure.

Page 12: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

12

Кожен графічний об’єкт має свій унікальний ідентифікатор handle

(покажчик, дескриптор), який Матлаб присвоює об’єкту при створенні.

Дескриптор об’єкта root завжди дорівнює нулю. Ідентифікатор figure -

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

Для доступу до поточних об’єктів можна використовувати вбудовані змінні:

gcf - показчик поточного вікна.

gca – показчик поточних осей (поле графіка).

gco - показчик поточного графічного об’єкта.

gcbo – показчик графічного об’єкта, функція обробки якого виконується в

даний час.

Поточним є останній створений чи обраний мишею об’єкт.

Виклик функції з іменем об’єкта створює цей об’єкт. Наприклад, функція text створює об’єкт text, функція figure створює об’єкт figure і т.д. Коли

об’єкт вже існує, його властивості можуть бути прочитані функцією Get, змінені

функцією Set.

Всі об’єкти описуються властивостями, які визначають, як об’єкти виводяться на екран. Інформацію щодо властивостей елементів наведено в [5].

Для визначення певних властивостей об’єктів слід використовувати наступний синтаксис команд

<h>=ххх(’Parent’,<parent>,'PropName',PropVal,...)

При виборі елемента керування виконується функція зворотного виклику ( м-файл), ім’я якої указано в властивості Callback елемента. Звороні функції

можна викликати як посилання @fun або як рядок ’fun’.

За замовчанням викликається зворотна функція @fun без аргументів. При

цьому в описі м-файла функції аргументи потрібні

function fun(hObject, eventdata, handles), де

hObject — посилання об’єкта, який викликає функцію.

eventdata — дані типа «структура». Містить дані, які генерує об’єкт.

handles - дані типа «структура». Містить посилання всіх елементів вікна

додатку.

Page 13: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

13

Поля handles заповнюється автоматично тільки при використанні для

створення вікна додатку GUIDE. В разі «ручного» опису вікна інформацію в

структури треба заносити користувачу програмно самостійно.

Опис зворотної функції за замовчанням без аргументів hObject,

eventdata вважається синтаксичною помилкою.

Виклик зворотної функції у вигляді рядка ’fun’ не передає аргументи hObject, eventdata, handles.

Додати додаткові аргументи в стандартну зворотну функцію неможливо.

В разі необхідності передавання додаткових аргументів інформацію про графічні об’єкти можна отримати безпосередньо всередині зворотної функції. Для цього корисними є функції findobj, guihandles, findall, get.

Функція findobj повертає дескриптори об’єктів, які мають вказану в

якості аргументу властивість.

h = findobj('PropertyName',PropertyValue,...)

Наприклад, рядком H_Edit=findobj('Style','edit') в змінній

H_Edit будуть збережені всі посилання на об’єкти типа edit.

Рядком H_МEdit=findobj('Type','figure') в змінній H_МEdit

буде збережено дескриптор вікна. Аналогічне значення має змінна gcf.

Функція guihandles повертає структуру формату «Tag» «Handle» з

усіма об’єктами вікна.

h = guihandles(handle)

Наприклад, рядком H_Edit=guihandles(hFig) в стуктурі H_Edit

будуть збережені всі посилання та імена об’єктів вікна з дескриптором hFig.

Виклик функції без аргументів зберігає посилання об’єктів поточного вікна.

Для того, щоб дістатися до елементів структури можна застосувати функцію

f = getfield(s,'field'), де

s – змінна структури,

'field' – рядок з назвою об’єкту.

Дістатися до значення елемента структури можна виразом H=s.field.

Наприклад, для структури H_Edit графічних об’єктів рядок

H=H_Edit.teta поверне значення дескриптора поля з назвою teta.

Page 14: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

14

Наприклад, обробка значень елемента uibuttongroup

hps=uibuttongroup(… ); з радіо кнопками

a1=uicontrol('Parent',hps,'String','Nearest',…

'Style','radiobutton', 'Tag','Near', 'Value',1);

a1=uicontrol('Parent',hps,'String','Biquad',…

'Style','radiobutton', 'Tag','Quad', 'Value',0);

a1=uicontrol('Parent',hps,'String','Bicubic', …

'Style','radiobutton', 'Tag','Cubic', 'Value',0);

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

застосувати функцію set .

set(hps,'SelectionChangeFcn',@callf); В описі зворотної функції групи кнопок слід визначити два аргументи: дескриптор джерела повідомлень та структуру події. Перший аргумент міститиме дескриптор групи, другий – дані події: EventName - назва події типу рядок,

OldValue - дескриптор «старої» радіо кнопки, NewValue - дескриптор «нової»

радіо кнопки.

function callf(source,eventdata)

Активну кнопку можна визначити через властивість SelectedObject

групи або через поле OldValue даних події. Обидва способи визначають

дескриптор активної радіо кнопки.

h= eventdata.NewValue;

h= get(source,’ SelectedObject’);

Зручний за звичайних умов спосіб застосування функцій findobj,

guihandles, set, get не дозволяє дістатися до об’єктів, які помічені

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

об’єкти осі, на які виведено растрове зображення функцією image .

Функція findall повертає вектор з дескрипторами та іменами об’єктів

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

Page 15: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

15

H=findall(handle,'property','value',...) Наприклад, рядком H_Edit= findall (gcf) в векторі H_Edit буде

збережено всі дескриптори об’єктів вікна.

Рядком H_МEdit=findall(hFig,'Type',’axes’) в векторі

H_МEdit буде збережено дескриптори всіх осей вікна hFig.

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

користувачем. В функції обробки необхідно передбачити перенаправляння дій в залежності від значення аргументу - ознаки, наприклад функціями if , switch.

Діалогові вікна (вікна повідомлень)

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

Вікно підтвердження створюється функцією

questdlg(‘string-question’, <’window label’>,…

<’button name’>,<’button name’>, <’default button name’>)

Перший аргумент – рядок повідомлення, другий аргумент – опціональний заголовок вікна, наступні аргументи – опціональні імена кнопок, останній аргумент – ім’я кнопки за замовчанням. Результат – рядок з іменем натиснутої кнопки.

Например, команда

s=questdlg('Закрыть окно приложения?', 'Подтверждение …

закрытия', 'Да', 'Нет', 'Нет');

виведе вікно ( рис. 2.4)

Рис. 2.4 - Вікно підтверждення

Page 16: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

16

Обробку дій користувача можна організувати по назві натиснутої користувачем кнопки:

switch s

case 'Да' delete(gcf)

case 'Нет' return

end

Для створення діалогового вікна з повідомленням про помилку призначена функція

errordlg (<'errorstring'>, <'window title'>)

Аргументами функції є рядки з текстом та заголовком вікна.

Наприклад, рядок errordlg('File not found','File Error');

виводить вікно (рис.2.5)

Рис. 2.5 – Приклад вікна помилки

Для створення універсального діалогового вікна з повідомленням призначена функція

msgbox (<'Message'>, <'window title'>,<’Icon’>)

Аргументами функції є рядки з повідомленням та заголовком вікна. Опціонально можна визначити графічне зображення ’Icon’ у вікні (Рис.2.6).

Стандартні значення: 'none', 'error', 'help', 'warn'. За

замовчанням 'none'.

Рис.2.6 – Варіанти стандартних зображень у вікні повідомлень

Page 17: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

17

Діалогове вікна зчитування файлів створюється функцією

[fname, pname] = uigetfile(<{default type}'>, <'window title’>,<’default name’>,<’start path’>)

Опціональний аргумент 'default type' – фільтр розширення файлів.

Функція виводить діалогове вікно з іменем 'window title’ та повертає

в першому результаті рядок fname імені, а в другому pname — шляху до файлу,

обраному користувачем. Вихідні результати дорівнюють нулю, якщо користувач відмінив відкриття чи при відкритті файлу виникла помилка. Опціонально можна визначити назву файлу ’default name’ та каталог ’start path’ , з якого почнеться пошук.

Функція uiputfile призначена для виведення діалогового вікна

збереження файлу. Вхідні аргументи та вихідні результати uiputfile такі ж, як

у функції uigetfile.

Наприклад, рядок

uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...

'*.*','AllFiles' },'mytitle','е:\Work')

відкриває діалогове вікно з назвою AllFiles (рис. 2.7) з каталогом е:\Work , в

якому виводяться існуючи файли зображень з розширеннями *.jpg;*.tif;*.png;*.gif.

Рис.2.7– Приклад застосування функції uigetfile

Page 18: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

18

Засоби роботи з графічними файлами

Пакет має вбудовані засоби для роботи з зображеннями.

Розширені можливості забезпечує розширення Image Processing Toolbox:

- статистичний, морфологічний та інші аналізи зображення;

- фільтрація зображення;

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

- спектральні перетворення;

- обробка великих, первинних, багато кадрових зображень;

- багатопроцесорна обробка даних.

Реалізована можливість роботи з форматами BMP, JPEG, PNG, CUR, JPEG 2000, PPM, GIF, PBM, RAS, HDF4, PCX, TIFF, ICO, PGM, XWD, No Compression RLE .

В залежності від формату файла дані інтерпретуються від logical для бінарних зображень (1 біт\піксель) до uint8 на колір для BMP, JPEG (8х3 біт\піксель ) та uint16 для PNG, TIFF (3х16 біт\піксель).

Зчитується зображення з файла функцією imread(filename).

Результатом є масив m-n для монохромних та індексованих зображень, m-n-3 – для кольорових RGB, m-n-4 для TIFF CMYK зображень.

Для виведення масива з зображенням на екран слугує функція image.

Стандартний формат image(C). Додаткові аргументи дозволяють керувати

розміром поля, в яке виводиться зображення, помітками на осях.

Додатковими можливостями володіє функція з розширення imshow. Вона

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

Для збереження зображення у файлі призначена функція

imwrite(A,<map>,filename,<fmt>, <Property Name>,<Value>)

Функція зберігає масив A або індексований масив A, map у файлі

filename у форматі <fmt>. За необхідності можна записати у файл дані

<Property Name>,<Value> відповідно до специфікації EXIF: BitDepth,

Comment, Compression, Quality, Alpha, Author, CreationTime, ResolutionUnit, Software, Units, XResolution і т.і.

Page 19: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

19

Для отримання інформації про зображення слугує функція imfinfo(filename). Функція повертає структуру з параметрами зображення.

Нариклад, рядок info = imfinfo('ngc6543a.jpg') запише в змінну info

структуру з даними:

Filename: 'matlabroot\toolbox\matlab\demos\ngc6543a.jpg' FileModDate: '01-Oct-1996 16:19:44' FileSize: 27387 Format: 'jpg' Width: 600 Height: 650 BitDepth: 24 ColorType: 'truecolor' FormatSignature: '' NumberOfSamples: 3 CodingMethod: 'Huffman' CodingProcess: 'Sequential' Comment: {'CREATOR: XV Version 3.00b Rev: 6/15/94'}

Засоби інтерполяції

Вбудовані функції інтерполяції в пакеті зосереджено в папці polyfun.

Для одновимірної інтерполяції призначено функції interp1q, interp1,

interpft, spline, для багатовимірної - interрn, interp2, interp3.

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

Функція yi = interp1q(<x>,Y,xi) повертає лінійно інтерпольовані

значення вектора одновимірної функції Y з аргументами, які визначено вектором х, в точках, які визначені у векторі стовбці xi.

Функція

interp1(<x>,Y, xi,<method>,<'extrap'>,<extrapval>,<'pp'>)

є більш універсальною. В ній можна визначити спосіб інтерполяції: 'nearest'

– найближчий, 'linear' – лінійний, 'spline' – кубічний сплайн, 'pchip' ,

'cubic'– кубічний Ерміта. Для методів, окрім 'nearest' , 'linear',

можливо виконання екстраполяції за межами інтервалу х опцією 'extrap' та

Page 20: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

20

задати фіксовані значення екстраполяції extrapval. Опція 'spline' викликає

функцію spline, опції 'pchip', 'cubic' – pchip.

Функція y = interpft(x,n) виконує одновимірну інтерполяція з

використанням перетворення Фур’є. Вона повертає вектор у довжиною n, по значенням периодичної функції х довжиною m (m<=n)

Функція

interpn(<X1,X2,...,>V,<Y1,Y2,...>,<ntime>,<method>,<extval>

)

призначена для багатовимірної інтерполяції Вона обчислює значення багатовимірної функції V, що визначена на аргументах <X1,X2,X3,...,>, для

нових аргументів - <Y1,Y2,Y3,...>. Інші аргументи аналогічні аргументам

interp1 функції. Можливі способи: 'nearest', 'linear', 'spline',

'cubic'. Для нерівномірної сітки спосіб 'cubic' є аналогічним до

'spline'. Опція ntime приводит до рекурсивного повторення ntime разів

інтерполяції.

Для двовимірної інтерполяції призначено функцію

interp2(<X>,<Y>,Z,<XI,YI>, <ntime>, <‘method’>,<extval>)

Для пришвидшення дій рекомендується визначати метод інтерполяції у наступному вигляді: '*linear', '*cubic', '*spline', '*nearest'.

Для створення сітки аргументів призначено функції ndgrid та meshgrid.

Синтаксис та дія функцій подібні. Різниця полягає тільки в порядку повернення результатів. В функції порядок результатів X1,X2,X3 повторює порядок аргументів x1,x2,x3. В функції ndgrid змінено місцями перші два, що

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

[X1,X2,X3,...] = ndgrid(x1 <,x2,x3,...>) перетворює діапазони

(старт: крок:стоп) в масиви

[X1,X2,X3] = ndgrid(x1,x2,x3) тотожнє з

[X2,X1,X3] = meshgrid(x2,x1,x3)

Page 21: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

3. Приклад

3.1. Завдання

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

Рис. 3.1 – Вигляд вінка моделі

3.2. Опис методів

Задача інтерполяції [6] (resampling) полягає в знаходженні кольору та інтенсивності в точці Р(у,х) за даними кольору та інтенсивностей точок І вихідного зображення (рис. 3.2).

Рис.3.2 – Схема інтерполяції

x0 x x1

y0 І00 І01

у P

y1 І10 І11

Page 22: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

22

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

Для знаходження коефіцієнтів інтерполяції необхідно розв’язати систему лінійних рівнянь (3.2) Метод білінійної інтерполяції є розширенням лінійної інтерполяції на двомірні масиви, якими є зображення. Для розрахунку потребується чотири навколишні точки [2x2]. Білінійна інтерполяція є результатом послідовного застосування двох лінійних одновимірних інтерполяцій, спочатку по одній координаті, потім по другій. Хоча метод базується на лінійних одновимірних перетвореннях, він не є лінійним (3.1)

xyayaxaaxyP 3210),( +++≈ (3.1)

=

11

10

01

00

3

2

1

0

1111

0101

1010

000

1

1

1

1

I

I

I

I

a

a

a

a

yxyx

yxyx

yxyx

yxyx o

(3.2)

В разі, коли координати точки Р визначають відстань від точки Р до вузла І00, система рівнянь спрощується та можливо отримати обчислювальний вираз (3.3)

xyIyxIxyIyxIP 11100100 )1()1()1)(1( +−+−+−−= (3.3)

Інтерполяція виконується в два етапи. На першому етапі знаходяться комірки зображення І00, І01, І10, І11, між якими розташовується потрібна точка Р(y,x) (рис.3.2). На другому етапі проводиться одновимірна інтерполяція по одній координаті, потім з використанням знайденого значення – по другій за виразом (3.3).

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

∑∑= =

≈3

0

3

0

),(i j

ji

ji yxaxyP (3.4)

Розв’язання потребує знаходження 16-ти коефіцієнтів aij.

Page 23: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

23

3.3 Опис програми

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

Для забезпечення автоматичного масштабування у вікні обираємо відносні ‘nornalizes’ одиниці вимірювання координат ‘Units’ компонентів. Для

обробки дій застосовано єдину зворотну функцію. Для ідентифікації компонентів у зворотній функції застосовано властивість ‘Tag’. У вікні hFig розташовані

радіо група uibuttongroup з трьома кнопками вибору типа інтерполяції:

лінійна ‘Near’, білінійна ‘Lin’, бікубічна ‘Cubic’. Зворотня функція групи

задається не властивістю ‘Callback’, властивістю ‘SelectionChangeFcn’.

Для керування способом обрахунку: користувача або вбудованими функціями,- та способу відображення: з автоматичним масштабуванням або без,- використано відмітки checkbox ‘Stand’ та ‘Const’. Введення поточного мірила

проводиться в полі введення ‘Edit’. Зчитування файлу запускається кнопкою

‘Open’. Час обрахування виводиться в текстове поле ‘Time’. В якості

оформлення застосовано панелі даних hp, виведення hpq, текстове поле індикації

стану розрахунку ‘WAIT’. Зображення виводиться на осі панелі hpq . Інформація

про параметри файлу-зображення виводиться в поле ‘Title’ панелі виведення

hpq .

Для передачі даних між основною програмою та функціями застосовано глобальні змінні:

filename - назва файлу-зображення; path - шлях до файлу-зображення; source_image - матриця вихідного зображення;

inter_type - тип інтерполяції: 1 – лінійна, 2 – білінійна, 3 – бікубічна; s_const - функція розрахунку: 0 – користувача, 1 – вбудована; stand - ознака способу виведення: 0 – з авто масштабуванням, 1-

без; scale - мірило. Лістинг з скріптом опису вікна на рис. 3.3.

%global variables global filename path source_image inter_type s_const stand; global scale;

Page 24: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

24

%inital data filename=''; scale=1.0; inter_type=1; pathf=''; s_const=0; stand=0; % Create the figure hFig = figure('Toolbar','none','Menubar','none','Name','Tag', ... 'fig','Interpolation','NumberTitle','off','IntegerHandle', ... 'off','Position',[50,50,1000,800]); hp=uipanel('Title','Input data','Position',[0 0.91 1 0.09]); hps=uibuttongroup('Parent',hp, 'Title','Type','Tag','Group',... 'Position',[0 0.1 0.3 0.8]); % radiobuttons a1 = uicontrol('Parent',hps,'Units','normalized','Position', ... [0.05 0.10 0.3 0.9],'String','Nearest', . . . 'Style','radiobutton', 'Tag','Near', 'Value',1); a1 = uicontrol('Parent',hps,'Units','normalized', . . . 'Position',[0.35 0.10 0.3 0.9],'String','Bilin', . . . 'Style','radiobutton', 'Tag','Lin', 'Value',0); a1 = uicontrol('Parent',hps,'Units','normalized',Position', ... [0.7 0.1 0.3 0.9],'String','Bicubic', . . . 'Style','radiobutton', 'Tag','Cubic', 'Value',0); set(hps,'SelectionChangeFcn',@callf); %checkboxes a1 = uicontrol('Parent',hp,'Units','normalized','Position', ... [0.31 0.1 0.1 0.5],'Callback',@callf, 'Tag','Const', ... 'String','Size const', 'Style','checkbox','Value',0); a1=uicontrol('Parent',hp,'Units','normalized', 'Value',0', ... Position',[0.42 0.1 0.1 0.5],'Callback',@callf, ... 'String','Standard', 'Style','checkbox','Tag','Stand',); % уведення масштаба a1=uicontrol('Parent',hp,'HorizontalAlignment','right', ... 'Units','normalized', 'Position',[0.52 0.0 0.05 0.5], . . . 'Style','text','String','Scale='); a1 = uicontrol( 'Parent',hp,'Callback',@callf, ... 'HorizontalAlignment','left','Units','normalized', ... 'Position',[0.6 0.10 0.07 0.5], 'Style','edit', ... 'Tag','Edit','String',num2str(scale),'BackgroundColor',[1 1 1]); % кнопка a1=uicontrol('Parent',hp,'Callback',@callf,'Units', ... 'normalized','Position',[0.75 0.1 0.07 0.4], ... 'String','Open','Tag','button_Open', 'Style', 'pushbutton');

Page 25: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

25

%поле часу a1=uicontrol('Parent',hp, 'HorizontalAlignment','right', ... 'Units','normalized', 'Position',[.82 .1 .1 .3], 'Style',... 'text','String','Time','Visible','off','Tag','Time'); hpq = uipanel('Title','','Position',[0 0 1 0.9],'Tag', ... 'Draw'); a1=uicontrol('Parent',hpq,'HorizontalAlignment','right', ... 'Units','normalized', 'Position',[.5 .9 .1 .1],'Style', ... 'text','String','WAIT','Visible','off','Tag','WAIT'); ah1=axes('Parent',hpq,'position',[.05 .05 .9 .9], . . . 'Visible','off','Tag','ax1');

Рис. 3.3 – Лістинг опису вікна прикладу 3

Лістинг зворотної функції callf наведено на рис. 3.4. В функції

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

Адреса компонента, дії якого треба обробити, знаходиться через поле назви компонента ‘Tag’. Доступ до останньої проводиться функцією get .

Дії компонетів

Для компонентів Stand, Const зчитується поточне значення, яке

присвоюється змінним типу автомасштабування stand та типу обрахування

s_const .

Для радіогрупи Group використовується поле NewValue аргумента

eventdata. В ньому до функції передається дескриптор радіокнопки, яка стала

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

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

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

файлу та шлях до нього. Відміна вибору присвоює змінній filename значення

0. Подальші дії мають відбуватися тільки в разі вибору користувача. Ці дії складаються з зчитування зображення в матрицю source_image, визначення

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

Page 26: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

26

доступними осі після виведення зображення, в функції image задаєься

властивість 'HandleVisibility','on' .

Компонент Edit зчитує та перетворює на чисельні дані рядок мірила.

Формує з тривимірної матриці зображення source_image матриці червоного

Rs, синього Bs , зеленого кольорів Gs. В залежності від вимоги

автомаштабування по змінній s_const проводиться перерахунок розмірів

зображення. В разі автомасштабування розміри збільшуються в scale разів,

мірило встановлюється рівним 1. В протилежному випадку розміри та мірило не змінюються. Змінені дані перетворюються в рядок та виводяться властивістю Title панелі виведення Draw. Для індикації на панель виводиться напис WAIT.

Для цього властивість Visible текстового компонента WAIT встановлюється в

on . Обрахунок часу ведеться парою функцій tic – tаc. Для обрахунку

функцією користувача inter , вона поелементно викликається в циклах. В якості

вбудованої функції використовано функцію interp2 . Функція отримує наступні

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

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

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

діям компонента Open.

function callf(source,eventdata) global inter_type scale filename path source_image s_const stand; tmp=get(source,'Tag'); switch tmp case 'Stand' stand=get(gcbo,'Value'); case 'Const' s_const=get(gcbo,'Value'); case 'button_Open' [filename,path]= uigetfile('*.jpg','Select image file','f:\dm\'); if filename ~= 0 source_image=imread([pathf,filename]);

Page 27: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

27

[hi wi zi]=size(source_image); tmp=findobj('Tag','Draw'); tmp1=strcat(pathf, filename,'[',num2str(hi),'x',num2str(wi),']'); set(tmp,'Title',tmp1); image(source_image,'HandleVisibility','on'); axis off; axis image; end case 'Group' tmp=eventdata.NewValue; switch get(tmp,'Tag') case 'Near' inter_type=1; case 'Quad' inter_type=2; case 'Cubic' inter_type=3; end case 'Edit' scale=str2double(get(gcbo,'String')); Rs=source_image(:,:,1); Gs=source_image(:,:,2);Bs=source_image(:,:,3); [hi wi zi]=size(source_image); if s_const==0 wwork=round(wi*scale)-1; hwork=round(hi*scale)-1; scalew=1; else wwork=wi; hwork=hi;scalew=scale; end tmp=findobj('Tag','Draw'); tmp1=strcat(path,filename,'[',num2str(hwork),'x',num2str(wwork),']'); set(tmp,'Title',tmp1); h=findobj('Tag','WAIT'); set(h,'Visible','on'); drawnow; tic; if stand==0 for i=1:wwork for j=1:hwork Rt(j,i)=inter(Rs,i,j,scale,inter_type); Gt(j,i)=inter(Gs,i,j,scale,inter_type); Bt(j,i)=inter(Bs,i,j,scale,inter_type); end end else [x,y]=meshgrid(1:1/scale:wi,1:1/scale:hi); switch inter_type

Page 28: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

28

case 1 tmp='nearest'; case 2 tmp='linear'; case 3 tmp='cubic'; end Rt=interp2(single(Rs),x,y,tmp); Gt=interp2(single(Gs),x,y,tmp); Bt=interp2(single(Bs),x,y,tmp); if s_const==1 Rt=Rt(1:hi,1:wi);Gt=Gt(1:hi,1:wi);Bt=Bt(1:hi,1:wi); end end t1=toc; tmp1=strcat('Time=',num2str(t1,3),'sec'); h=findobj('Tag','Time'); set(h,'String',tmp1); set(h,'Visible','on'); h=findobj('Tag','WAIT'); set(h,'Visible','off'); drawnow; target_image=cat(3,uint8(Rt),uint8(Gt),uint8(Bt)); image(target_image); axis off; axis image; end end

Рис. 3.4 – Лістинг зворотної функції прикладу 3

function [a]=inter(mas,i,j,sc,type) itmp=i/sc; jtmp=j/sc; switch type case 1 if itmp>0.5 itmp=round(itmp); else itmp=1; end if jtmp>0.5 jtmp=round(jtmp); else jtmp=1; end a=mas(jtmp,itmp); case 2 imin=fix(itmp);jmin=fix(jtmp); x=itmp-imin; y=jtmp-jmin;

Page 29: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

29

if imin == 0 imin=1; end if jmin == 0 jmin=1; end a=mas(jmin,imin)*(1-x)*(1-y)+mas(jmin,imin+1)*x* . . (1-y)+mas(jmin+1,imin)*y*(1-x)+mas(jmin+1,imin+1)*x*y; case 3 end end

Рис. 3.5 – Лістинг функції інтерполяції прикладу 3

Додаток А. Варіанти індивідуальних завдань

№ Тип джерела Тип результату Тип інтероляції

1 Перспективний Ортографічний Найближчий

2 Перспективний Стереографічний Білінійний

3 Перспективний Еквідістантний Біквадратичний

4 Перспективний Еквісолідний Найближчий

5 Ортографічний Перспективний Білінійний

6 Ортографічний Стереографічний Біквадратичний

7 Ортографічний Еквідістантний Найближчий

8 Ортографічний Еквісолідний Білінійний

9 Стереографічний Перспективний Біквадратичний

10 Стереографічний Ортографічний Найближчий

11 Стереографічний Еквідістантний Білінійний

12 Стереографічний Еквісолідний Біквадратичний

13 Еквідістантний Перспективний Найближчий

14 Еквідістантний Ортографічний Білінійний

15 Еквідістантний Стереографічний Біквадратичний

16 Еквідістантний Еквісолідний Найближчий

17 Еквісолідний Перспективний Білінійний

18 Еквісолідний Ортографічний Біквадратичний

19 Еквісолідний Стереографічний Найближчий

20 Еквісолідний Еквідістантний Білінійний

Page 30: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

30

Page 31: МОДЕЛЮВАННЯ ІНФОРМАЦІЙНО-ВИМІРЮВАЛЬНИХ СИСТЕМooep.kpi.ua/downloads/disc/kmod/kmod_rgr.pdf · - введення значень фокусної

Література

1. Juho Kannala A Generic Camera Model and Calibration Method for Conventional, Wide-Angle, and Fish-Eye Lenses / Juho Kannala, Sami S. Brandt // IEEE Transactions on Pattern Analysis and Machine Intelligence.- 2006.- Volume:28.- Issue: 8.- p.1335–1340.- DOI:10.1109/TPAMI.2006.153

2. T. Nathan Mundhenk Techniques for Fisheye Lens Calibration using a Minimal Number of Measurements / T. Nathan Mundhenk, Michael J. Rivett, Xiaoqun Liao, Ernest L. Hall // Proc. SPIE.- 2001.- vol.4197.- Intelligent Robots and Computer Vision XIX: Algorithms, Techniques, and Active Vision.- DOI: 10.1117/12.403762

3. Н.Н.Мартынов MATLAB 5.X. ВЫЧИСЛЕНИЯ, ВИЗУАЛИЗАЦИЯ, ПРОГРАММИРОВАНИЕ / Н.Н.Мартынов А.П.Иванов.- М.:Кудиц образ.- 2000.- 336с

4. MATLAB. The language of Technical Computing. Creating Graphical User Interface [Елекронний ресурс] / The MathWorks. Inc. - 2000.- 180p.- Режим доступу: http://mathworks.com/help/pdf_doc/matlab/index.html.- Назва з екрану

5. MATLAB. Image Processing Toolbox. User guide [Елекронний ресурс] / The MathWorks. Inc. - 2016.- 800p.- Режим доступу: http://mathworks.com/ help/pdf_doc/ matlab/index.html.- Назва з екрану

6. William H. Press Numerical Recipes in C: The Art of Scientific Computing. Second Edition / William H. Press, Saul A. Teukolsky, William T. Vetterling , Brian P. Flannery.- CAMBRIDGE UNIVERSITY PRESS.- 1992.- 949р.