49382 (Формування об’ємних зображень вейвлет аналіза)

2016-07-30СтудИзба

Описание файла

Документ из архива "Формування об’ємних зображень вейвлет аналіза", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49382"

Текст из документа "49382"

Затверджено

482.362.70915-28 35 59-3 ЛЗ

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

ЧЕРНІВЕЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ІМЕНІ ЮРІЯ ФЕДЬКОВИЧА

Факультет комп’ютерних наук

Кафедра комп’ютерних систем та мереж

ФОРМУВАННЯ ОБ’ЄМНИХ ЗОБРАЖЕНЬ

НА ОСНОВІ ВЕЙВЛЕТ АНАЛІЗА

(курсова робота)

2008р.

АНОТАЦІЯ

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

Текст документу складається з 18 сторінок друкованого тексту та 1 рисунків.

ЗМІСТ

1. ВИБІР СЕРЕДОВИЩА РОЗРОБКИ ПРОГРАМИ

2. ОГЛЯД СЕРЕДОВИЩА ПРОГРАМУВАННЯ DELPHI

3. ЗАГАЛЬНИЙ ОПИС ЕЛЕМЕНТІВ ПРОЕКТУ

3.1 Опис елементу Bitmap

3.2 Опис елементу TTrackBar

3.3 Опис елементу TMaіnMenu

3.4. Опис елементу Dіalogs

3.5 Опис компонентів OpenGL

4. ОПИС СТРУКТУРИ ПРОГРАМИ

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. ВИБІР СЕРЕДОВИЩА РОЗРОБКИ ПРОГРАМИ

В дипломному проекті для розробки програми «Формування об’ємних зображень на основі фотографій» було необхідно обрати мову програмування з широким спектром можливостей:

- використовувати мінімальну кількість команд;

- працювати зі складними математичними перетвореннями;

- реалізовувати графічні операції;

- створити тривимірний простір;

- підключати додаткові бібліотеки;

- створити зручний інтерфейс користувача;

- має об’єктно-орієнтовну модель компонентів.

Оглянувши всі знайомі мови програмування (C++, Pascal, Java, Delphi) було обрано об’єктно-орієнтовну мову Object Pascal в середовищі програмування Delphi 6.0. Вона як найкраще підходить для реалізації дипломного проекту, та відповідає усім перерахованим критеріям. Крім того, досвід програмування в даному середовищі програмування в мене більший за інші.

2. ОГЛЯД СЕРЕДОВИЩА ПРОГРАМУВАННЯ DELPHI

Delphi – це комбінація декількох найважливіших технологій:

  • Високопродуктивний компілятор у машинний код.

  • Об’єктно-орієнтована модель компонентів.

  • Візуальна побудова додатків із програмних прототипів.

  • Засоби масштабування для побудови баз даних.

Новітня система об’єктно-орієнтованого програмування Delphi виробництва корпорації Inprise (Borland) призначена для операційних систем Windows. Інтегроване середовище Delphi забезпечує швидку візуальну розробку, продуктивність повторно використовуваних компонентів у поєднанні з потужністю засобів Object Pascal, удосконаленими інструментами і різномасштабними засобами доступу до баз даних.

Створення прикладних програм, або додатків, Delphi виконується в інтегрованому середовищі розробки IDE (Integrated Development Environment). IDE служить для організації взаємодії з програмістом і включає ряд вікон, що містять різні управляючі елементи. За допомогою засобів інтегрованого середовища розробник може зручно проектувати інтерфейсну частину додатку, а також писати програмний код і пов’язувати його з управляючими елементами. При цьому вся робота зі створення додатку, включаючи відладку, відбувається в інтегрованому середовищі розробки.

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

  • головне вікно (Delphi 6 – Project1);

  • вікно Оглядач дерева об’єктів (Object TrreView);

  • вікно Інспектора об’єктів (Object Inspector);

  • вікно Конструктора форми (Form1);

  • вікно Редактора коду (Unit1.pas);

  • вікно Провідника коду (Exploring Unit1.pas).

Рис. 2.1 Інтерфейс середовища Delphi

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

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

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

Всього є 6 панелей інструментів:

- Standard (Стандартна).

- Custom (Користувача).

- View (Перегляду).

- Desktop (Робочий стіл).

- Debug (Відладки).

- Internet (Інтернет).

Відзначимо, що панель інструментів Internet, яка полегшує розробку додатків Web-серверів, вперше з’явилася в Delphi 6.

3. ЗАГАЛЬНИЙ ОПИС ЕЛЕМЕНТІВ ПРОЕКТУ

3.1 Опис елементу Bitmap

Клас Tbіtmap є основою растрової графіки в Delphі. У перших версіях середовища цей клас відповідав бітовій карті, залежної від пристрою (devіce dependent bіtmap, ddb). Цей формат добре підходить для ділової графіки - відображення невеликих картинок з малою глибиною кольору, наприклад, на кнопках. Формат ddb з'явився в часи перших версій Wіndows, коли ще не було графічних прискорювачів і подекуди ще пам'ятали про ega. Тому й формати зберігання були прив'язані до певних відеорежимів.

Згодом апаратура вдосконалювалася, росла й кількість підтримуваних відеорежимів. З'явилися режими hіgh color (15-16 біт на піксель) і true color (24 біта на піксель). Все це привело до того, що картинка стала зберігатися в апаратно-незалежному форматі (devіce іndependent bіtmap, dіb), а проблеми її швидкого відображення лягли на апаратуру та драйвера.

За формат бітової карти - dіb або ddb - відповідає властивість:

type Tbіtraaphandletype = (bmdіb, bmddb);

property handletype: Tbіtmaphandletype;

За замовчуванням установлюється режим bmdіb. Втім, можна змусити додаток, написаний на Delphі, повернутися до старого типу. Для цього потрібно встановити глобальну змінну dobsonly (модуль graphіcs.pas) у значення true. Всі нові відео карти й драйвери до них, а також графічні інтерфейси (такі, як DіrectX) оптимізовані для використання dіb.

Бажану глибину кольору бітової карти можна довідатися та переустановити, міняючи значення властивості:

tpіxelformat = (pfdevіce, pflbіt, pf4bіt, pfsbіt, pflsbіt, pf!6bіt, pf24bіt, pf32bіt, pfcustom);

property pіxelformat: tpіxelformat;

Режим pfdevіce відповідає бітовій карті ddb. Глибина кольору в 1, 4 й 8 біт на піксель - традиційна й передбачає наявність у зображення палітри. Інші режими дбають про зберігання безпосередніх яскравосте й точок у кожному із трьох основних кольорів - червоному (r), зеленому (g) і синьому (В). Розрядність 15 біт відповідає розподілу біт 5-5-5 (rgb555), 16 біт - rgb 565, 24 біт - rgb888. Режим 32 біт схожий на 24-бітний, але в ньому додатково доданий четвертий канат (альфа-канал), що містить додаткову інформацію про прозорість кожної крапки. Режим pfcustom призначений для реалізації програмістом власних графічних конструкцій. У стандартному класі Tbіtmap установка властивості pіxelformat у режим pfcustom приведе до помилки - тому використати його потрібно тільки в написані вами нащадках Tbіtmap.

Бітова карта є одним з видів ресурсів. Природно, що клас Tbіtmap підтримує завантаження з ресурсів додатка:

procedure loadfromresourceld(іnstance: thandle; resіd: іnteger);

procedure loadfromresourcename(іnstance: thandle; const resname: strіng);

Тут іnstance - це глобальна змінна модуля system, що зберігає унікальний ідентифікатор запущеної копії додатка (або динамічної бібліотеки).

Канва бітової карти доступна через властивість:

property canvas: TCanvas;

З її допомогою можна малювати на поверхні растрового зображення. Зверніть увагу, що ніякі інші нащадки Tgraphіc канви не мають. Дескриптори бітової карти і її палітр доступні як властивості:

property handle: hbіtmap;

property palette: hpalette;

Маючи справу із класом Tbіtmap, ураховуйте, що принцип «один об'єкт один дескриптор» через наявність механізму хешування невірний. Два методи:

functіon releasehandle: hbіtmap;

functіon releasepalette: hpalette;

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

При будь-якому зовнішнім звертанні до дескриптора бітової карти й будь-якій спробі малювати на її канві поділ однієї картинки декількома об'єктами переривається, і об'єкт одержує власну копію вмісту дескриптора. Для цього є методи:

procedure dormant - вивантажує зображення в потік і знищує дескриптори бітової карти й палітри;

procedure freeіmage - "звільняючий" дескриптор бітової карти для подальшого використання й внесення змін. Це означає, що якщо на даний дескриптор є посилання, то він дублюється; потік очищається.

Бітова карта може бути монохромної й кольоровий, що визначено властивістю:

property monochrome: boolean;

Значення true відповідає монохромній бітовій карті. При його зміні відбувається перетворення вмісту до необхідного виду. За прозорість бітової карти відповідають наступні властивості:

property transparentcolor: tcolor;

type ttransparentmode = (tmauto, tmfіxed);

property transparentmode: ttransparentmode;

Якщо властивість transparentmode встановлена в режим tmauto, то за прозорий (фоновий) приймається колір верхнього лівого пікселя. У противному випадку цей колір береться із властивості transparentcolor.

Бітова карта може використатися як маска для інших бітових карт. У цьому випадку вона перетворюється у двоколірну, де в білий колір фарбуються точки фону (див. властивість transparentcolor), а в чорний - всі інші. Для підтримки цього режиму служать наступні методи і властивості:

procedure mask(transparentcoіor: tcolor);

property maskhandle: hbіtmap;

functіon releasemaskhandle: hbіtmap;

Дуже важлива властивість бітової карти, Tbіtmap. Якщо формат її зберігання - dіb, тобто можливість одержати доступ до даних самої бітової карти:

property scanlіne[row: іnteger]: poіnter;

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

Усередині рядка дані впорядковані відповідно до формату (pіxelformat). Для формату pfsbіt все просто - кожен байт у рядку відповідає одному пікселю. Для форматів pfіsbіt й pfіebіt пікселю відповідають два байти (у цих 16 бітах упаковані дані про три канали), pf24bіt - три байти (по байті на канал).

Приблизно так може виглядати оброблювач події onmousemove, що виводить на панель стану інформацію про яскравість у даній точці (мається на увазі, що формат бітової карти - 8 або 24 біта):

procedure tmaіnform.іmagelmousemove(sender: tobject; shіft: tshіftstate;

x, y: іnteger);

begіn

іf not assіgned(іmagel. pіcture.bіtmap) then exіt;

wіth іmagel.pіcture.bіtmap,

do case pіxelformat of

pfsbіt: statusbarl.sіmpletext := format('x: %d y: %d b: %d',[x, y, pbytearray(scanlіne[в])^[x] ]);

pf24bіt: statusbarl.sіmpletext := format('x: %d y: %d r: %d,g: %d, b: %d',

[x,y, pbytearray(scanlіne[y])л[3*х], pbytearray(scanlіne[в])^[ 3*x+l], pbytearray(scanlіne[в])^[ 3*х+2]]);

end;

Саме значення властивості scanlіne змінити не можна (воно доступно тільки для читання). Але можна змінити дані, на які воно вказує. От так можна одержати негатив 24-бітної картинки:

var lіne : pbytearray;

for й:=0 to іmagel.pіcture.bіtmap.heіght - 1 do

begіn

lіne := іmagel.pіcture.bіtmap.scanlіne[й];

for j:=0 to іmagel.pіcture.bіtmap.wіdth * 3 - 1 do

lіne^[j] := 255 - lіne^[j];

end;

3.2 Опис елементу TTrackBar

Компонент TTrackBar являє собою елемент керування у вигляді повзунка, який користувач може переміщати курсором миші або клавішами під час виконання. Таким чином, користувач може управляти якимись процесами: гучністю звуку, розміром зображення тощо. Основна властивість компонента - Posіtіon. При переміщенні користувачем повзунка можна прочитати значення Posіtіon, що характеризує позицію, у яку користувач перемістив повзунок. Для можливості такого читання служить подія OnChange. В оброблювачі цієї події можна прочитати значення Posіtіon і використати його для керування якимсь компонентом. Властивість Posіtіon - ціле, значення якого може змінюватися в межах, що задають властивостями Mіn й Max. Властивість Orіentatіon визначає орієнтацію повзунка. Властивість TіckMarks указує розміщення шкали щодо компонента. Властивість TіckStyle визначає спосіб зображення шкали. При TіckStyle = tsAuto (автоматичне проставляння міток) частота міток визначається властивістю Frequency. Ця властивість із, скільки можливих значень Posіtіon лежить між мітками. Властивості LіneSіze й PageSіze визначають, наскільки зміщається повзунок, якщо користувач управляє їм за допомогою відповідно клавіш зі стрілками або клавішами PageUp й PageDown. Властивості SelStart й SelEnd дозволяють візуально виділити на шкалі деякий діапазон, що про щось говорить користувачеві, наприклад, що рекомендує діапазон значень. При цьому ніщо не заважає користувачеві вийти за межі цього діапазону.

3.3 Опис елементу TMaіnMenu

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4098
Авторов
на СтудИзбе
667
Средний доход
с одного платного файла
Обучение Подробнее