Розробка програми для масштабувания зображення

 

 

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

Запорізький інститут економіки та інформаційних технологій

Відокремлений підрозділ у м. Кривий Ріг

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

 

 

 

ДО ЗАХИСТУ ДОПУЩЕНА

Зав. кафедрою

______________________

к. ф.-м. н., проф. Лебедєва Л.М.

 

ВИПУСКНА  РОБОТА

РОЗРОбКА  ПРОГРАМИ ДЛЯ МАСШТАбУВАНЯ ЗОБРАЖЕННЯ

 

 

 

Виконав

ст. гр. ОКСіМ-210К-КР                                                        Д.О. Леухін

 

Керівник

к. пед. н.                                                                            О.А. Хараджан

 

 

 

 

Запоріжжя

2012




КОЛЕДЖ  ЕКОНОМІКИ І ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

ЗАПОРІЗЬКОГО  ІНСТИТУТУ ЕКОНОМІКИ ТА ІНФОРМАЦІЙНИХ  ТЕХНОЛОГІЙ

 

 ФАКУЛЬТЕТ   ІНЖЕНЕРний

 

КАФЕДРА Економічної  кібернетики та комп’ютерних систем і мереж

 

 

ЗАТВЕРДЖУЮ

Зав. кафедри___________________

_______________________________

“_____ ”__________________20___р.

 

 

 

З А В Д А Н  Н Я

 

НА ВИПУСКНУ РОБОТУ

 

Студенту гр. ОКСіМ-210К-КР, спеціальності 5.0501020 «Обслуговування комп'ютерних і інтелектуальних систем і мереж» .

 


                      (прізвище, ім'я, по батькові)

 

1.Тема:

 
 

 

затверджена наказом по інституті  “         ”                       20___ р.  № ______

 

2.Термін здачі студентом закінченої  роботи  ___________________________

 

3.Перелік питань, що підлягають  розробці _________________________________________

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

Дата видачі завдання  “____” _______________ 20_____ р.

 

 

Керівник випускної роботи   ___________        __________________

                                                                  (підпис)   (прізвище й ініціали) 

 

 

Завдання прийняв до виконання       ____________      __________________

                                                             (підпис студента)  (прізвище й ініціали) 

 

 

 

 

ЗМІСТ

ВСТУП……………………………………………………………...……………5

РОЗДІЛ 1 ТЕОРЕТИЧНА ЧАСТИНА ………………………………………...6

1.1 Комп'ютерна графіка……………………………………….….6

1.2 Растрова графіка……………………………………………….7

1.3 Векторна графіка………………………………….………….13

1.4 Формати графічних файлів …………………………………17

1.5 Алгоритми масштабування………………………………….18

1.5.1 EPX/Scale2x/AdvMAME2x…………………...……..21

1.5.2 Eagle Eagle………………………….……………..….22

1.5.3 2xSaI…………………………….………………….…23

1.5.4 Сімейство hqnx………………………………………23

1.5.5 Алгоритм в Паскалі………………………………….24

1.5.6 Алгоритм Копф-Ліщинський……………………….24

1.5.7 Застосування в емуляторах ігрових приставок……24

РОЗДІЛ 2 ПРАКТИЧНА ЧАСТИНА…………………………………………26

2.1 Програма в роботі………………………………………….…26

ВИСНОВКИ........................................................................................................33

ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ………………………………...……34

ДОДАТОК………………………………………………………………..…….36

 

 

 

 

 

 

 

ВСТУП

 

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

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

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

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

 

 

 

 

 

 

 

 

 

РОЗДІЛ 1. ТЕОРЕТИЧНА ЧАСТИНА

 

    1.  Комп'ютерна графіка

 

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

Для відображення графіки використовують монітор, принтер, плотер тощо. Робота з комп’ютерною графікою — один з найпопулярніших напрямків використання персонального комп’ютера, до того ж займаються цією роботою не тільки професійні художники і дизайнери. На будь-яких підприємствах час від часу виникає необхідність в подачі рекламних оголошень в газетах і журналах або просто у випуску рекламної листівки або буклету. Без комп’ютерної графіки не обходиться жодна сучасна мультимедійна програма. Робота над графікою займає до 90% робочого часу програмістських колективів, які випускають програми масового використання.

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

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

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

 

1.2 Растрова графіка

 

Растрова графіка (англ. Raster graphics) — графіка, представлена у машинній пам'яті у вигляді растру. Обробка растрової графіки здійснюється растровими графічними редакторами.

Основний елемент зображення - крапка. Точка на екрані називається "піксель". З розміром зображення пов'язано його дозвіл.

Растр (нім. Raster) -  у системах обробки інформації — представлення зображень у вигляді бітових карт (bitmap). Бітова карта — елемент зображення певної точності (глибина, яскравість, колірність), представлений сукупністю точок з заданими характеристиками (глибина кольору, насиченість, колір). Р. може бути монохромний чи поліхромний. Обробка растрових зображень здійснюється растровими графічними редакторами.

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

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

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

 

Потрібно розрізняти:

  • роздільність оригінала;
  • роздільність екранного зображення;
  • роздільність друкованого зображення;

 

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

Роздільність екранного називають пікселем. Розмір пікселя коливається в залежності від вибраної екранної роздільності, роздільності оригіналу й масштабу відображення. Монітори можуть забезпечити роздільність 640х480, 800х600, 1024х768, 1600х1200 і вище. Відстань між сусідніми точками люмінофора в якісному моніторі складає 0,22-0,25 мм. Для екранного зображення достатньо роздільності 72 dpi.

Роздільність друкованого зображення залежить від застосованого методу та параметрів растрування оригіналу. При раструванні на оригінал накладається сітка ліній, комірки якої утворюють елемент растра. Частота сітки растра вимірюється числом ліній на дюйм (lpi — lines per inch) і називається лінєатурою. Розмір точки растра розраховується для кожного елементу і залежить від інтенсивності тону в цій комірці. Якщо у растрі є абсолютно чорний колір, тоді розмір точки растра збігається з розміром елементу растра (100% заповненість). Для абсолютно білого кольору заповненість складає 0%. На практиці заповненість коливається у межах 3-98%. Всі точки растру мають однакову оптичну щільність, що наближується до абсолютно чорного кольору. Ілюзія темнішого кольору створюється за рахунок збільшення розмірів точок і скорочення проміжкового поля між ними при однаковій відстані між центрами елементів растра. Такий метод називається растрування з амплітудною модуляцією.

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

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

Глибина кольору характеризує максимальне число кольорів, які використані у зображенні.

 

Існує декілька типів зображень із різною глибиною кольору:

  1. чорно-білі;
  2. у відтінках сірого;
  3. з індексованими кольорами;
  4. повноколірні;

 

На один піксел зображення відводиться 1 біт інформації — чорний та білий. Глибина кольору — 1 біт.

Зображення у відтінках сірого - піксель сірого зображення кодується 8 бітами (1 байт). Глибина кольору — 8 біт, піксель може приймати 256 різних значень — від білого (255) до чорного (0 яскравості). Зображення з індексованими кольорами. Перші кольорові монітори працювали з обмеженою колірною гамою (16, згодом 256 кольорів). Такі кольори називаються індексованими і кодуються 4 або 8 бітами у вигляді колірних таблиць. В такій таблиці всі кольори вже визначені і можна використовувати лише їх.

Повноколірні зображення - глибина кольору не менше як 24 біти, що дає можливість відтворити понад 16 мільйонів відтінків. Повноколірні зображення називаються True Color (правдивий колір). Бітовий обсяг кожного пікселя розподіляється за основними кольорами обраної колірної моделі, по 8 бітів на колір. Колірні складові організуються у вигляді каналів, спільне зображення каналів визначає колір зображення.

Інтенсивність тону (світлота) - поділяється на 256 рівнів. Більше число градацій не сприймається людським оком і є надлишковим. Менша кількість погіршує сприйняття інформації (мінімальним є 150 рівнів). Для відтворення 256 рівнів тону достатньо мати розмір комірки растра 16х16 точок.

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

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

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

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

Найпопулярнішими прикладними програмами є продукти фірм:

Adobe — PhotoShop

Corel — PhotoPaint

Macromedia — FireWorks

Fractal Design — Painter

стандартний додаток  у Windows — PaintBrush.

Програми растрової  графіки можуть використовувати:

  • художники-ілюстратори;
  • художники-мультиплікатори;
  • художники-дизайнери;
  • фотографи та ретушери;
  • поліграфісти;
  • web-дизайнери;
  • будь-яка людина — вільний художник, із масою творчих ідей та потенціалу.

 

Переваги растрової  графіки:

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

 

Недоліки растрової  графіки:

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

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

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

Формати збереження зображень  поділяються на такі, що дозволяють зберігати растрову графіку з незначним зниженням якості за рахунок використання алгоритмів стиснення з втратами (JPEG, PNG, GIF і TIFF), та такі , що також підтримують стиснення (RLE), але загалом є «попіксельним» описом зображення (BMP). На противагу векторним редакторам, растрові використовують для утворення зображень матрицю крапок (bitmap). При цьому, більшість сучасних растрових редакторів містять векторні інструменти редагування як допоміжні.

 

 

 

Найвідоміші растрові редактори:

  • Adobe Photoshop — найпопулярніший комерційний редактор
  • Adobe Fireworks
  • Corel Photo-Paint
  • Corel Painter
  • GIMP — найпопулярніший вільний редактор
  • Microsoft Paint
  • Microsoft Photo Editor
  • Krita
  • Tux Paint — орієнтований на дітей від 3-х років
  • Paint.NET

 

    1.  Векторна графіка

 

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

Основний елемент зображення — лінія.

Лінія - елементарний об'єкт  векторної графіки. Будь-який складний об'єкт можна розкласти на лінії, прямі або криві. Тому часто векторну графіку називають об'єктно-орієнтованою.

 

Властивості лінії :

  • Форма
  • Товщина
  • Колір
  • Стиль (пунктир, суцільна)

Замкнуті лінії мають  властивість заповнення - кольором, текстурою, візерунком і т.п. Кожна незамкнута лінія має 2 вершини, звані вузлами. За допомогою вузлів можна з'єднувати лінії між собою.

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

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

 

 

Рис. 1 – Оригінальна фотографія, JPEG растрового зображення

 

 

Рис. 2 – Steam Locomotive 7646 як векторне зображення, спочатку Windows Metafile

 

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

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

Переваги векторної графіки над растровою графікою:

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

Фундаментальні недоліки векторної графіки:

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

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

  • Перевага векторної картинки - масштабованість - пропадає, коли починаємо мати справу з особливо малими дозволами графіки (наприклад, іконки 32 × 32 або 16 × 16). Щоб не було «бруду», картинку під такі дозволи доводиться підганяти вручну.

Типові примітивні об'єкти:

  • Лінії і ламані лінії.
  • Багатокутники.
  • кола та еліпси.
  • криві Безьє.
  • Безігони.
  • Текст (у комп'ютерних шрифтах, таких як Truetype, кожна буква створюється з кривих Безьє).

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

Наприклад, Postscript і PDF використовують модель векторної графіки.

Програми векторної графіки:

  • Adobe Illustrator.
  • Corel Draw.

Англійська компанія Xara Limited відкрила вихідні тексти своєї комерційної програми Xara Xtreame організувавши проект Xara LX який має за мету перенести свою програму на інші апаратні та операційні платформи.

Програми з відкритим програмним кодом:

  • Xara Xtreame.
  • Inkscape.
  • Sodipodi.

 

    1.  Формати графічних файлів

 

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

Для того, щоб комп'ютери  і програми могли читати і обробляти  дані, структури файлів повинні відповідати певним правилам. Поширені формати на етапі додрукарської обробки видання: TIFF, EPS і PDF.

 

            Растрові формати:

  • APNG
  • BMP
  • ECW
  • DRG
  • GIF
  • JPEG 2000
  • MNG
  • PCX

 

           Векторні формати:

  • Scalable Vector Graphics (SVG і 5SVGZ)
  • Encapsulated PostScript (EPS)
  • Метафайли Windows: WMF, EMF
  • Файли CorelDraw: CDR, CMX

1.5 Алгоритми масштабування

 

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

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

Ефективність:

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

Багато алгоритми працюють тільки при збільшенні в ціле число разів: 2x, 3x і 4x.

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

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

Розробка програми для масштабувания зображення