Handige tips

Rasterisatieproces

Pin
Send
Share
Send
Send


Screening is een van de belangrijkste concepten in de grafische industrie. Het begrijpen van de mechanismen van rasterprocessen maakt de ontwerper niet alleen een professional in zijn vakgebied, maar biedt ook een extra mogelijkheid voor het creatieve gebruik van deze kennis. Een auteur die goed op de hoogte is van de mogelijkheden van deze of gene polygrafische reproductiemethode, zal de voordelen kunnen gebruiken, 'dunne' momenten vermijden en zijn werk eenvoudig competent voorbereiden om het beste resultaat te bereiken.

Een van de struikelblokken voor veel beginnende ontwerpers is de verwarring die is ontstaan ​​in de printterminologie van ons land met het begin van het tijdperk van computergebaseerde voorbereiding van afbeeldingen voor afdrukken. De verwarring werd geïntroduceerd door twee termen met dezelfde basis: rasterisatie en rasterisatie, die op verschillende tijdstippen vanuit verschillende landen naar onze grafische industrie kwam. Beide betekenen beeldconversieprocessen, maar in essentie heel verschillend.

Rasterisatie (comp. Rasterization) is het proces waarbij een afbeelding met een ononderbroken (of voorwaardelijk ononderbroken) toon wordt omgezet in een discreet toonbeeld, bestaande uit pixels met veel discrete toonwaarden. Met andere woorden, ononderbroken toonniveaus worden geconverteerd naar pixels met hetzelfde toonniveau. De lijnafbeelding wordt geconverteerd naar een verzameling zwart-witte pixels. Dergelijke digitale afbeeldingen worden single-bit genoemd, omdat elke pixel wordt beschreven door slechts één bit informatie. Een afbeelding in grijswaarden wordt geconverteerd naar een verzameling pixels met verschillende tonen. Om afbeeldingen voor te bereiden voor afdrukken, worden 8-bits afbeeldingen gebruikt. Eén pixel van een dergelijke afbeelding kan van 0 tot 255 verschillende toonwaarden hebben. Maar in de schermruimte kunnen 16-bits en 32-bits afbeeldingen worden gebruikt. Rasterisatie vindt plaats in het proces van scannen, converteren van vectorafbeeldingen en afdrukken van lijntekeningen. De term "rasterisatie" is te vinden in het menu van vector grafische programma's, waar ze het proces aangeven van het omzetten van een afbeelding beschreven door krommen (vector) in een afbeelding die puntsgewijs wordt beschreven (hier is een raster, hoewel de minimale eenheid van dergelijke afbeeldingen een pixel is).

Rasterisatie (comp. Halftone Screening) kwam van het Duitse raster - het raster - het proces van het omzetten van een tonaal beeld in een micro-gearceerd (in het bijzonder - in een punt) zwart-wit beeld, dat alleen de voorwaarden creëert voor het waarnemen van het toonbereik. Met andere woorden, toonniveaus worden altijd omgezet in effen punten. Bovendien zijn de punten zo klein dat ze bij visuele perceptie van het beeld onder normale omstandigheden niet als afzonderlijke elementen kunnen worden waargenomen. Rastering vindt alleen plaats tijdens het voorbereiden van het afdrukken van halftoon- of kleurenafbeeldingen en is direct gerelateerd aan het uiteindelijke grafische ontwerpproduct.

Het proces van het reproduceren en reproduceren van afbeeldingen, evenals het resultaat van dit proces, wordt reproductie genoemd. Het principe van rasterreproductie, nog steeds in gebruik, werd voorgesteld door Georg Meisenbach uit München. Eerder werden reproducties handmatig uitgesneden met behulp van snijtanden (graveren op koper) of met metaaletsen (etsen); in de late 19e en vroege 20e eeuw werd lithografie (etsen op steen) actief gebruikt. Rijk aan nuances, gemaakt met handmatige gravures op koper, etsen, litho's konden echter niet de basis worden gelegd voor de industriële productie van drukwerk. In 1881 legde Georg Meisenbach de basis voor screening dankzij de uitvinding van het autotype-principe. Meisenbach verkreeg een reproduceerbare rasterstructuur met behulp van een periodiek rooster. Voor fotografische reproducties werden roosters met een periodieke rasterstructuur gemaakt. Met hun hulp werd een continue verandering in de tonen van het origineel (bijvoorbeeld foto's of schilderijen) met behulp van optisch-fotografische middelen overgebracht naar rasterpunten van verschillende grootte. De allereerste twee foto's die in de drukkerij werden gereproduceerd, werden afgedrukt in de geïllustreerde krant, gepubliceerd in Leipzig, in de uitgave van 15 maart 1885.

Nu wordt deze traditionele manier van halftoonverwerking uitgevoerd door de hardware-softwaremethode (elektronische rasterisatie) met behulp van de PostScript-taal door een prepress-specialist bij het genereren van een PostScript-bestand of (vaker) in het stadium van output (creatie) van drukvormen (of pre-photoforms). De puntstructuur van de afbeelding voor afdrukken die op deze manier wordt gevormd, wordt een raster genoemd, de rastereenheid wordt een rasterpunt genoemd en het proces van het omzetten van een afbeelding in een puntstructuur wordt raster genoemd. Rasterpunten kunnen worden gevonden op verzegeld papier, op fotoformaat (film) of in gedrukte vorm, maar u zult ze niet zien op het beeldscherm of tijdens het scannen.

U kunt verschillende tonen op verschillende manieren simuleren met behulp van stippen. Er zijn twee manieren om te rasteren.

De traditionele, die dateert uit de tijd van Meisenbach, wordt amplitude-gemoduleerde (AM) rasterisatie genoemd, waardoor de zogenaamde reguliere raster ontstaat. Met AM-rastering worden punten in een reguliere matrix (raster) geplaatst. De middelpunten van de punten liggen op dezelfde, vaste afstand van elkaar. Toongradaties worden bereikt door de grootte van de punten te wijzigen. De belangrijkste parameters van AM-rasterisatie: rotatiehoek, ruimtelijke frequentie van het raster, de vorm van het rasterpunt.

Voor de meeste rasterafbeeldingen wordt de beste reproductie bereikt bij het afdrukken van een raster onder een hoek van 45 °. In dit geval worden delen die verticaal of horizontaal zijn geplaatst meer afgevlakt in vergelijking met een rechthoekig rooster. Bovendien zal een dergelijk raster minder opvallen voor het menselijk oog. De hoek van 45 ° vertrekt vooral van de horizontale lijn en wordt beschouwd als de maximale rotatiehoek. Het wordt gebruikt voor het monochromatisch afdrukken van afbeeldingen. In het geval van vierkleurenreproductie worden de rasterstructuren voor elke verf 30 ° gedraaid ten opzichte van elkaar. In dit geval wordt de maximale hoek (45 °) gegeven aan de donkerste verf (zwart) en de minimale (0 ° of 90 °) - aan de lichtste (geel).

Ruimtelijke frequentie van het raster of de lijn van het raster (comp. Frequentie) - het aantal cellen voor het plaatsen van de punten van het raster per meeteenheid. Gemeten in lijnen per inch (lijn per inch - lpi). De grootte van deze punten en de mogelijkheid om kleine details van de afbeelding over te brengen, zijn afhankelijk van het aantal punten. Hoe hoger de waarde van de lijn, des te minder merkbaar de structuur en het beeld ziet er beter uit. De eigenschappen van de drukpers, het materiaal waarvan de mal is gemaakt en het gebruikte papier beperken echter de ruimtelijke frequentie. Het gebruik van een rasterfrequentie die te hoog is voor een bepaalde afdrukomgeving kan leiden tot verlies van beelddetails in schaduwen en lichte kleuren. Dit moet door de ontwerper worden onthouden bij het selecteren en voorbereiden van een afbeelding voor een bepaalde reproductiemethode. Lineature wordt gemeten in lijnen per inch in plaats van dots vanwege rotatie van het raster. De diagonale structuur maakt het moeilijk om het aantal stippen te tellen, vooral omdat het variabel wordt in verschillende rijen en voor verschillende kleuren. Daarom begonnen ze de term lijnen te gebruiken, wat betekent dat ze geen punten tellen, maar rijen.

De vorm van een punt is alleen zichtbaar bij extreem lage ruimtelijke frequenties, maar met de toename van de lijn wordt het steeds moeilijker te detecteren met het blote oog. Maak vooral onderscheid tussen rond, vierkant, elliptisch en kettingvormig. Voor het grootste deel hangt de keuze van de vorm van de stip af van de technologische omstandigheden van de pers en deze moet aan de drukkerijspecialisten worden verstrekt.

Ondanks zo'n lange periode van deze reproductietechnologie heeft het enkele nadelen.

Moire, de zogenaamde interferentie-effecten - een nadeel dat zich precies voordoet bij het gebruik van een normaal raster (AM). Visueel manifesteert het zich in de vorm van vreemde tekeningen, moiré-vlekken, vergelijkbaar met vlekken op moiré-stof. Moiré ontstaat verre van vaak: wanneer de rotatiehoeken van het raster niet succesvol zijn voor verschillende kleuren of wanneer de regelmatige puntstructuur van het raster wordt gesuperponeerd op een afbeelding die ook een evenredige regelmatige structuur heeft (bijvoorbeeld stof, filigraanpatroon, digitaal gegenereerde textuur, eerder gerasterde afbeeldingen).

Rasterbussen worden gevormd bij het afdrukken van CMYK vanuit rasterpunten met verschillende kleuren. Het gebruik van hogere lijnen maakt deze contactdozen onzichtbaar voor het oog. De vorm van deze uitgangen kan veranderen als gevolg van slecht functionerende (uitlijning) van kleurrijke vormen, wat ook kan leiden tot het verschijnen van moiré.

Computertechnologie heeft de ontwikkeling mogelijk gemaakt van een alternatieve methode van screening, frequentie-gemoduleerde (FM) screening genoemd, die het zogenaamde stochastische raster vormt. In dit geval hebben de rasterpunten een vaste grootte, worden willekeurig gerangschikt (met willekeurige intervallen) en worden toongradaties bereikt door de frequentie (hoeveelheid per oppervlakte-eenheid) van de punten te wijzigen. De belangrijkste parameters zijn de resolutie, gemeten in dots per inch (dpi) en de grootte van de stip van het raster. Nu voor FM-rasterisatie worden punten van een zeer klein formaat gebruikt, waardoor ze bijna onzichtbaar zijn, terwijl het beelddetail wordt vergroot. Deze methode elimineert vrijwel het optreden van moiré, maakt het afdrukken van afbeeldingen met een lagere resolutie mogelijk. Deze screening heeft de breedste toepassing in grootformaat digitaal printen gevonden. FM-screening heeft echter ook nadelen: de stapsgewijze overdracht van gradiëntvullingen, het onvermogen om kleine puntjes te gebruiken in sommige afdruktechnologieën.

Er zijn ook verschillende hybride screeningmethoden die beide basisprincipes combineren. Bijvoorbeeld het gebruik van stippen van verschillende groottes in een stochastisch raster, of het gebruik van FM-rastering in heldere delen van het beeld van een normaal raster om de noodzaak te vermijden om te kleine stippen te gebruiken die niet voldoen aan de technologische vereisten van de grootten. De vorming van dergelijke rasterstructuren is ook alleen mogelijk geworden met de introductie van softwarebesturing van rasterisatieprocessen.

Er is dus een heel andere betekenis van deze twee termen met dezelfde wortel. Het enige dat hen verenigt, is dat we het hebben over het verdelen van het originele beeld in de kleinste elementen voor verdere reproductie. Bij het rasteren - op de monitor, bij het rasteren - bij het afdrukken of zelfs gewoon op een thuisprinter. Maar het concept blijft een bitmap. Het klinkt redelijk legitiem met betrekking tot afgedrukte afbeeldingen, dit is begrijpelijk. Maar we gebruiken het om het type digitale afbeelding te bepalen (in tegenstelling tot vector), pixel voor pixel beschreven. Zelfs wij noemen programma's voor hun verwerking of creatie "raster grafische editors", de term "rasterisatie" wordt al actief gebruikt in grafische toepassingen en heeft geen gemeenschappelijke wortel met het woord "pixel". Bovendien zal een poging om gerasterde afbeeldingen pixel te noemen tot nieuwe misverstanden leiden, omdat dit concept al een andere, engere betekenis heeft gekregen. Pixelafbeeldingen worden nu afbeeldingen genoemd die op pixelniveau zijn gemaakt en bewerkt, de kleinste elementen van een digitale afbeelding, omdat de afbeeldingen zelf vrij klein zijn. Dergelijke grafische afbeeldingen worden gebruikt op eenvoudige schermen, zoals de schermen van oude telefoons, en om de cultuur van digitale afbeeldingen te simuleren aan het begin van de eerste computergames.

Het is ook belangrijk om de "raster-pixel" -structuur niet gelijk te stellen aan een polygrafisch raster, hoewel dit een aantrekkelijke versie van de oplossing voor dit probleem lijkt. Eén pixel, als een eenheid van een dergelijke structuur, bevat complexe digitale kleurinformatie volgens het wiskundige kleurenmodel dat is geselecteerd voor een gegeven afbeelding. In een traditioneel (regulier) drukraster is de eenheid van de structuur een rasterpunt, dat slechts één waarde heeft voor elke inkt, maar de grootte verandert afhankelijk van de toonwaarde in een bepaald deel van de afbeelding. In het aangegeven voorwaardelijke gebied zijn er bij het afdrukken van CMYK maximaal vier rasterpunten van elke kleur. Dat wil zeggen, de structuur van het raster en de structuur van het rooster dat alleen op het gehoor uit pixels bestaat, lijkt identiek.

We waren op de kruising van twee taalsystemen: computergebaseerde Anglo-Amerikaanse en traditionele typografie, gevormd in termen van Duitse en Franse oorsprong, terminologieën. Bij toeval gebruiken we in de praktijk van het werken met digitale afbeeldingen en bij het voorbereiden van afbeeldingen voor afdrukken zeer morfologisch vergelijkbare termen die in wezen verschillende processen beschrijven. In deze situatie is een belangrijke taak van de toekomstige ontwerper en zijn mentor een goed begrip van deze problemen op basis van kennis van printtechnologie en de basisprincipes van digitaal beeld, zodat, indien nodig, maximaal begrip wordt verkregen met specialisten uit verschillende ontwerpgebieden.

Het proces van het rasteren van vectorafbeeldingen is een proces dat continu plaatsvindt en verborgen is voor de gebruiker. Zowel het hele document als een willekeurige verzameling objecten omzetten in een pixelafbeelding. Contourfragmenten schalen.

titelProgrammering, computers en cybernetica
uitzichttestwerk
taalRussisch
Datum toegevoegd20.05.2014
Bestandsgrootte1,4 M

Je goede werk indienen bij de kennisbank is eenvoudig. Gebruik het onderstaande formulier

Studenten, afgestudeerde studenten, jonge wetenschappers die de kennisbasis gebruiken in hun studie en werk zullen je erg dankbaar zijn.

Geplaatst op http://www.allbest.ru/

MINISTERIE VAN ONDERWIJS EN WETENSCHAP VAN DE RUSSISCHE FEDERATIE

AUTONOME ONDERWIJSINSTELLING VAN DE BONDSSTAAT

HOGER PROFESSIONEEL ONDERWIJS

RUSSISCHE STAAT PROFESSIONELE-PEDAGOGISCHE UNIVERSITEIT

AFDELING INTERIEURONTWERP

TAK IN OMSK

stud. c. Om - 212C ID M.S. Kurelenok

Gecontroleerd: N.V. Albach

1.1 het concept van rastering

1.2 Automatische rasterisatie

1.3 Handmatige rastering

2. Rasterisatie in Adobe Photoshop

2.1 Volgorde van beeldrasterisatie in Adobe Photoshop

Lijst met gebruikte bronnen

Bijlage A (Het concept van rastering)

Bijlage B (Automatische rasterisatie)

Bijlage B (Afbeeldingsrasterisatie in Adobe Photoshop)

Adobe Photoshop is een van de meest populaire en krachtige afbeeldingseditors waarmee u zowel bestaande afbeeldingsbestanden kunt bewerken als nieuwe afbeeldingen kunt maken. Photoshop wordt gebruikt om te werken met gescande en kleurenafbeeldingen, kleurcorrectie, retoucheren, collage, enz., Enz. Het programma heeft de mogelijkheid om met lagen te werken - dit is het belangrijkste verschil met andere grafische editors.

Met behulp van Photoshop zullen we kijken naar en proberen een van de vele tools van dit geweldige programma te vinden, in het rasterproces.

1.1 het concept van rastering

Rasterisatie is de conversie van vectorinformatie naar een rasterformaat.

Het resultaat van de rasterprocedure is een pixelafbeelding, die wordt gebruikt voor presentatie op een beeldscherm of zelfs voor afdrukken.

Het proces van het rasteren van vectorafbeeldingen is een proces dat continu plaatsvindt en verborgen is voor de gebruiker. De rasterfunctie is een onmisbaar kenmerk van elk programma dat vectorafbeeldingen gebruikt. Voor die programma's die in eerste instantie niet zijn georiënteerd voor het werken met vectorobjecten, zijn extra modules of speciale toepassingen vereist.

Dus worden vectorafbeeldingen bijna altijd vergrendeld op apparaten die pixelachtig van aard zijn. Ten eerste zijn dit monitoren, en bovendien alle printers, plotters, fotocompositiemachines en digitale offsetdrukapparaten. Al deze apparaten bouwen afbeeldingen van afzonderlijke elementen die alle bovengenoemde nadelen hebben.

Om een ​​vectorafbeelding continu te transformeren voor presentatie op pixelapparaten, wordt een procedure gebruikt die "rasterisatie" wordt genoemd.

Wanneer u in een vector-editor werkt, geeft het scherm telkens het resultaat van de rastering weer. Tegelijkertijd heeft de gebruiker over het algemeen geen middelen om dit proces te beheersen. In grafische en teksteditors is de rasterisatie-eenheid ingebouwd in de programmafabriek en voert continu de procedure uit, ongeacht de wens van de gebruiker.

Met een zeer significante schaalverdeling van fragmenten van vectorcontouren, wordt de weergave van de lijn gewaarborgd door bijna dezelfde pixels (zie Bijlage A, Afb. 1.2),

Dit komt omdat het pixelraster niet verandert en een wiskundige contour die geen lijn en vulling heeft, wordt telkens weergegeven met pixels van dezelfde grootte.

Om deze reden verschillen de schaalbereiken in pixel- en vectorafbeeldingen honderden keren. Ter vergelijking: in het programma pixelafbeeldingen Adobe Photoshop kunt u afbeeldingen verhogen van 100 tot 1600%, d.w.z. zestien keer.

Суть этого процесса заключается в том, что векторный объект сначала подвергается пространственной дискретизации, т. е. на это изображение "накладывается" сетка с определенными заранее ячейками. Затем в пределах этих ячеек обеспечивается квантование по уровню тона (или трем уровням для фиксирования цвета) и последующее кодирование [3,4,5].

1.2 Автоматическая растеризация

Вывод на печать также обеспечивает автоматическую растеризацию, но здесь есть определенный выбор, связанный с выбором устройства печати. А это, в свою очередь, определяет качество печати. Выбор принтера с точки зрения растеризации означает всего-навсего активизацию того или иного драйвера печати. Принтер не всегда и необходим, например для выполнения так называемой отложенной печати, которую обеспечивает известный флажок Print to File (Печать в файл), находящийся в диалоговом окне Print (Печать) подавляющего числа приложений (см. Приложение Б рис 1). Met vertraagd afdrukken kunt u de problemen oplossen die samenhangen met de niet-overeenkomende configuratie en instellingen van besturingssystemen op verschillende computers.

Deze functie wordt ook aangeboden door het besturingssysteem, waarin een bepaalde set printers is geïnstalleerd (zie Bijlage B, figuur 2),

Het stuurprogramma van een bepaald afdrukapparaat biedt alleen de rasterprocedure, dat wil zeggen, rekening houdend met alle printerinstellingen en enkele extra functies die het heeft [4,5].

1.3 Handmatige rastering

Momenteel kan elke vectoreditor zowel het hele document als een willekeurige verzameling objecten omzetten in een pixelafbeelding die in het vectordocument blijft staan.

De pixelvisualisatie van vectorbeelden kan worden vergeleken met het pixelbeeld van de luidspreker op het tv-scherm, wat geen invloed heeft op het fysieke bestaan ​​in de studio.

Rasterisatie binnen het vectorprogramma vindt plaats met het verlies van het originele vectorbeeld en de transformatie ervan in een set pixels, d.w.z. in een matrix van kleurwaarden (met alle gevolgen van dien).

Door de opdracht Rasterize of iets dergelijks te kiezen, wordt de gebruiker geconfronteerd met de noodzaak om de traditionele parameters van de pixelafbeelding in het bijbehorende dialoogvenster te selecteren: grootte, resolutie en kleurdiepte (kleurmodus), hoewel ze anders kunnen worden genoemd. rasterisatie vector afbeelding pixel

Een andere optie voor rasterisatie is om een ​​hele afbeelding of alleen geselecteerde objecten naar een pixeldocument te exporteren. In vector grafische programma's zijn er commando's die een dergelijke rastering mogelijk maken, zoals Bitmap Export (bitformat exporteren).

Het is duidelijk dat de logica van de rasterisatieparameters van de vectorafbeelding zowel binnen het programma als tijdens de export hetzelfde is:

· Bepaal eerst de totale grootte van het pixelraster,

· Stel de grootte van het discretisatie-element in - pixel,

· Bepaal de kleurdiepte voor elke pixel [4,5].

2. Rasterisatie van afbeeldingen in Adobe Photoshop

2.1 Volgorde van beeldrasterisatie in Adobe Photoshop

Photoshop is in staat om afbeeldingen alleen te rasteren, net als een printer of foto-typemachine. We simuleren de werking van een rasterizer met Adobe Photoshop.

De meest voorkomende rastermethode is lineair:

1. Open het afbeeldingsbestand in Adobe Photoshop (zie Bijlage B in Figuur 1),

2. Stel de afbeelding in op grijswaarden met behulp van de opdracht Grijswaarden in de lijst Modus van het menu Afbeelding. Nu is het klaar voor rasterisatie (zie Bijlage B in Figuur 2),

3. Selecteer de opdracht Bitmap (monochroom) uit dezelfde lijst. Een dialoogvenster met dezelfde naam wordt geopend, waarin wordt bepaald hoe een grijswaardenafbeelding naar zwart-wit wordt geconverteerd (zie bijlage B in figuur 3),

4. Lineaire rastering komt overeen met de optie Halftoonscherm (Halftoonraster). Selecteer het in de lijst Methode,

5. Het veld Uitvoer (dat wil zeggen de resolutie van de resulterende monochrome afbeelding) wordt aangegeven in het veld Uitvoer. We introduceren in dit veld de resolutie van de fotocompositiemachine die we hebben berekend, die nodig is voor afdrukken met een lineature van 150 lpi, - 2400 dpi. In het veld Invoerinformatie wordt de resolutie van de originele afbeelding in grijswaarden weergegeven, zodat u kunt controleren of deze geschikt is voor de beoogde afdrukregelgeving,

6. Klik op de knop OK. Het dialoogvenster Halftintscherm wordt geopend met de screeningopties (zie Bijlage B in Afbeelding 4),

7. Voer een regelmaat van 150 lpi in het veld Frequentie in. Zorg ervoor dat in de lijst rechts de maateenheid voor de lineature de lijn / inch is, niet de lijn / cm,

8. Laat de zeefhoek in het veld Hoek hetzelfde blijven als die voor zwarte verf - 45 °,

9. In de lijst Vorm wordt de vorm van het rasterpunt ingesteld. Selecteer de optie Round,

10. Het beeld is gerasterd, maar om de een of andere reden is het bedekt met een ingewikkeld patroon. Wat je waarneemt is moiré (zie Bijlage B in Figuur 5). Het raster van de fosfor van de monitor, die het raster van het beeld zelf overlapt, geeft de indruk van een patroon. Afbeeldingen in slechte kranten lijken op elkaar. De gescande afbeelding van het afgedrukte origineel bevat al het raster. Opgelegd op het raster van het uitvoerapparaat, creëert hetzelfde moirépatroon. Om het uiterlijk te voorkomen, moet het afbeeldingsraster na het scannen worden afgevlakt, bijvoorbeeld met behulp van het filter Gaussiaans vervagen.

Om het raster in detail te bekijken, stelt u de schaal van de demonstratie van het document "pixel voor pixel" in door te dubbelklikken op het zoomgereedschap of door op Alt + Ctrl + 0 te drukken. Met deze toename verdwijnt de zichtbare moiré [1,2].

Na het onderwerp te hebben bestudeerd, kwamen we tot de conclusie dat rasterisatie, net als elk ander hulpmiddel in het configuratiescherm, zijn eigen voor- en nadelen heeft, die we hieronder zullen bespreken:

Voordelen: nadat een vectorafbeelding in een raster is gerasterd, is het heel eenvoudig om kleine details, vloeiende overgangen van kleuren, wazige en vage randen weer te geven en te zien. Het is ook gemakkelijk om details te bewerken, kleur, helderheid te veranderen, de effecten van individuele pixels te gebruiken, wat nooit zou werken met een vectorafbeelding. Verder zal het geen probleem zijn om een ​​gerasterd beeld op het beeldscherm in te voeren, zoals het is "native" voor veel pc-apparaten. En uiteindelijk ziet een bitmap er altijd realistischer uit dan een vector.

Nadelen: door nadelen hebben we een zeer grote hoeveelheid afbeelding toegeschreven, omdat Er zijn veel pixels en elk heeft zijn eigen "gewicht". Een ander zeer belangrijk minpunt is dat bij het schalen de beeldkwaliteit sterk achteruitgaat. En het laatste minpuntje is de afwezigheid van enige vorm van het object, elk object is een set pixels.

Om ons werk samen te vatten, kwamen we tot de conclusie dat beeldrasterisatie erg belangrijk is in computergraphics.

Lijst met gebruikte bronnen

1. PPt4WEB. Presentatie hosting. Presentatie over het onderwerp: Manieren om grafische informatie te presenteren [Elektronische bron] / Toegangsmodus: http://ppt4web.ru - 2014

2. SAMOUCKA.RU. Geïllustreerde zelfstudie over digitale afbeeldingen [Elektronische bron] / Toegangsmodus: http://samoucka.ru - 2010

3. Wikipedia - de gratis encyclopedie [elektronische bron] / L. Sanger, D. Wales .-: Toegangsmodus: http://ru.wikipedia.org. - 15 januari 2001

4. Computer documentatie site [Elektronische bron] / Toegangsmodus: http://e-dok.narod.ru,

5. Photoshop-lessen. Rasterisatie [Elektronische bron] / Toegangsmodus: http://www.lessonsphotoshop.ru - 2005

Figuur 1. A - vectoroverzicht

Figuur 2. A - 1000-voudige toename van de vectorcontour

Figuur 1. B - het selectievakje Afdrukken naar bestand in een typisch dialoogvenster Afdrukken

Afbeelding 2. B - Map 'Printers' met een set printerstuurprogramma's

Rasterisatie van afbeeldingen in Adobe Photoshop

Figuur 1. B - bronafbeelding

Figuur 2. B - vertaling naar een monochrome afbeelding

Figuur 3. In - Bitmap dialoogvenster

Figuur 4. In - Dialoogvenster Halftoonscherm

Figuur 5. B - gerasterde afbeelding

Geplaatst op Allbest.ru

Vergelijkbare documenten

3D-modellen bouwen op basis van 2D-vectoranalogen. Converteer vector- en 3D-afbeeldingen naar rasterobjecten. Breng vector- en bitmapafbeeldingen over naar MS Word-documenten. Een trainingsdocument maken met een bitmapafbeelding van het onderdeel.

Onderzoek [1,5 M], toegevoegd 1/14/2015

Analyse van bestaande methoden voor het schalen van afbeeldingen. Verbetering van de verwerkingssnelheid en het wijzigen van afbeeldingen. Schaalalgoritme met behulp van parallellisme. Pixelselectie voor de juiste berekening van het verloop. Een beeldinterpolatiemethode kiezen.

term paper [5,8 M], toegevoegd op 17/06/2017

De voordelen van vectorafbeeldingen. Beschrijving van het werk met het programma voor het maken van grafische afbeeldingen - Illustrator. Een methode voor het maken van vierpuntscurven voor een gebogen segment. Maak paden met het gereedschap Pen. Werk met maskers.

Onderzoek [575.8 K], toegevoegd op 09/11/2010

Analyse van het Atlant-micro micropreparation imaging-systeem. Ontwikkeling van een model, fragment matching algoritmen. Ontwikkeling van systeemgebruikersinterface. Evaluatie van de kwaliteit van het combineren van fragmenten door het algoritme met binarisatie op basis van histogrammen.

proefschrift [8,0 M], toegevoegd op 23-09-2012

Driedimensionale afbeeldingen als onderdeel van computerafbeeldingen, een reeks technieken en hulpmiddelen die zijn ontworpen om driedimensionale objecten weer te geven. Toepassingsgebieden van 3D-graphics. Het proces van het modelleren van 3D-objecten. Het volume van berekeningen in de simulatie, de berekening van de scène.

Samenvatting [1,4 M], toegevoegd 1/1/2015

Overzicht van bestaande software om de selectie van randen op de afbeelding te automatiseren. Ontwikkeling van een wiskundig model voor beeldverwerking en contouren in grijstinten en software voor beeldverwerkingsalgoritmen.

proefschrift [1,7 M], toegevoegd op 27/03/2013

De constructie van realistische beelden, de fasen, principes. Het effect van gelijktijdig contrast: de aard en betekenis ervan. Het mechanisme van het verlichten van objecten. Normaal voor het oppervlak en de kenmerken ervan voor objecten van verschillende materialen. Lichtdoorlatende oppervlakken.

term paper [986.9 K], toegevoegd op 21/03/2011

Algemeen concept van het Earth Resources Data Analysis System. Berekening van de transformatiematrix van het ruimtebeeld van het ravijn. Geometrische correctietools, transformatie. Vectorlagen maken. Gedigitaliseerde objectklassen. Het proces van het verbinden van een script.

term paper [4,3 M], toegevoegd op 17-12-2013

Beschrijving van wiskundige methoden voor het weergeven en verwerken van grafische afbeeldingen. Beschrijving van de ontwikkelde software-add-on. Beschrijving van functies en hun attributen. Weergave en verwerking van grafische afbeeldingen. Programmatestresultaten.

term paper [1.7 M], toegevoegd 1/27/2015

Rationeel verenigd proces - Configureerbaar softwareontwikkelingsproces, het doel en gebruik ervan. RUP-methodologie, proces, stappen en componenten. Project levenscyclusstructuur. Voorbeelden van diagrammen en klassehiërarchieën.

presentatie [175,7 K], toegevoegd 12/07/2013

Werken in de archieven zijn prachtig ontworpen volgens de vereisten van universiteiten en bevatten tekeningen, diagrammen, formules, enz.
PPT-, PPTX- en PDF-bestanden worden alleen in archieven gepresenteerd.
Aanbevolen om het werk te downloaden.

Vulovereenkomst

Dus stel dat we worden geconfronteerd met de hierboven beschreven situatie - twee polygonen delen een gezicht dat precies door het midden van de pixel loopt. Onze taak is om erachter te komen bij welke polygonen deze pixel hoort.

De de facto standaard is de zogenaamde regel linksboven: deze volgt DirectX en de meeste OpenGL-implementaties. De essentie van deze regel is deze: als het vlak van de veelhoek door het midden van de pixel gaat, dan behoort deze pixel in twee gevallen tot de veelhoek - als het de linkerkant of de bovenkant is (vandaar de naam).

De concepten van linker-, rechter-, boven- en ondervlak vereisen verduidelijking. Tot nu toe zullen we geen exacte definities geven (we zullen dit doen wanneer we de traversale algoritmen bereiken), maar zullen ze in een eenvoudiger taal beschrijven:

  • Het bovenvlak is het horizontale vlak dat zich boven alle andere vlakken bevindt
  • Onder - een horizontaal gezicht dat zich onder alle andere gezichten bevindt
  • Linkerkant - een gezicht dat zich aan de linkerkant van de driehoek bevindt en niet horizontaal is
  • De rechterkant is het gezicht dat zich aan de rechterkant van de driehoek bevindt en niet horizontaal is

voorbeelden:

Beschouw nu het geval van aangrenzende polygonen. Als het vlak grenst en in één polygoon wordt gelaten, dan is hetzelfde vlak juist voor alle polygonen die dit vlak met deze polygoon delen. Een vergelijkbare regel werkt voor de boven- en ondervlakken:

We kunnen deze eigenschap gebruiken om te bepalen tot welke van de aangrenzende polygonen een pixel behoort. Als we het erover eens zijn dat een pixel waarvan het middelpunt op een gemeenschappelijk vlak ligt alleen tot polygonen behoort waarvoor dit gezicht overblijft, dan zal het niet automatisch behoren tot aangrenzende polygonen, omdat dit gezicht voor hen juist is. En hetzelfde voor de bovengrens.

Ondanks het feit dat de regel van de boven- en linkergezichten het vaakst wordt gevonden, kunnen we elke geschikte combinatie gebruiken. Bijvoorbeeld de regel van de onderkant en linkerkant, bovenkant en rechterkant, etc. Direct3D vereist het gebruik van een regel linksboven, OpenGL is niet zo strikt en stelt u in staat om elke regel te gebruiken die het probleem van pixelbezit oplost. Ik blijf uitgaan van het gebruik van een regel linksboven.

Overweeg de volgende twee polygonen:

De tweede veelhoek kan worden verkregen van de eerste als gevolg van rotatie onder een bepaalde hoek. Als gevolg hiervan worden sommige pixels extra opgenomen in de uiteindelijke afbeelding (dergelijke pixels worden groen gemarkeerd), en sommige verdwijnen er juist uit (rood gemarkeerd). Dienovereenkomstig moeten we rekening houden met de fractionele delen van de hoekpuntcoördinaten. Als we ze weggooien, krijgen we problemen bij het tekenen van een niet-statische scène. Als u bijvoorbeeld de polygoon heel langzaam laat roteren, doet het dit schokkend - omdat de randen scherp van de ene naar de andere positie "springen", in plaats van de tussenresultaten correct te verwerken. Het is gemakkelijk om het verschil te begrijpen door deze twee video's te vergelijken:


In het geval van een statische scène zullen dergelijke problemen natuurlijk niet optreden.

Attribuut-interpolatie

Laten we, voordat we direct naar de rasterisatie-algoritmen gaan, stilstaan ​​bij de interpolatie van attributen.

Een attribuut is enige informatie geassocieerd met een object, die nodig is voor de correcte weergave ervan volgens een gegeven algoritme. Alles kan zo'n kenmerk zijn. Een van de meest voorkomende opties zijn: kleur, textuurcoördinaten, normale coördinaten. Attribuutwaarden worden ingesteld op de hoekpunten van het objectraster. Bij het rasteren van polygonen worden deze attributen geïnterpoleerd langs het oppervlak van de driehoeken en worden ze gebruikt om de kleur van elk van de pixels te berekenen.

Het eenvoudigste voorbeeld (en een eigenaardige analogie van "hallo wereld") is de tekening van een driehoek, bij elk hoekpunt waarvan één attribuut wordt gegeven - kleur:

Als we in dit geval een kleur toewijzen aan elke pixel van de polygoon die het resultaat is van lineaire interpolatie van de kleuren van de drie hoekpunten, krijgen we de volgende afbeelding:

De manier waarop de interpolatie wordt uitgevoerd, is afhankelijk van de gegevens die we in het renderingproces gebruiken en deze zijn op hun beurt afhankelijk van het algoritme dat bij de rasterisatie wordt gebruikt. Wanneer we bijvoorbeeld het "standaard" algoritme gebruiken, kunnen we eenvoudige lineaire interpolatie van waarden tussen twee pixels gebruiken, en bij gebruik van traversale algoritmen - barycentrische coördinaten. Daarom zullen we het uitstellen tot de beschrijving van de algoritmen zelf.

Er is echter nog steeds een belangrijk onderwerp dat van tevoren moet worden behandeld: attributeninterpolatie met perspectiefcorrectie.

De eenvoudigste interpolatiemethode is lineaire interpolatie in de schermruimte: nadat de polygoon op het projectievlak is geprojecteerd, interpoleren we lineair de attributen langs het oppervlak van de driehoek. Het is belangrijk om te begrijpen dat deze interpolatie niet correct is, omdat er geen rekening wordt gehouden met de uitgevoerde projectie.

Overweeg een lijn op een projectievlak te projecteren d = 1. Bij de begin- en eindpieken worden bepaalde attributen ingesteld die lineair veranderen in de cameraruimte (en in de wereld). Nadat de projectie is gemaakt, groeien deze attributen niet lineair in de schermruimte. Als u bijvoorbeeld het middelpunt in de cameraruimte neemt (v = v0 * 0,5 + v1 * 0,5), dan zal dit punt na de projectie niet in het midden van de geprojecteerde lijn liggen:

Dit wordt het gemakkelijkst opgemerkt bij het structureren van objecten (ik gebruik eenvoudige texturering zonder te filteren in de onderstaande voorbeelden). Ik heb het structuurproces niet in detail beschreven (en dit is het onderwerp van een apart artikel), dus ik zal me nu beperken tot een korte beschrijving.

Bij het structureren wordt bij elk hoekpunt van de veelhoek de waarde van het kenmerk van textuurcoördinaten ingesteld (het wordt vaak uv genoemd door de naam van de overeenkomstige assen). Dit zijn genormaliseerde coördinaten (van 0 naar 1), die bepalen welk deel van de textuur wordt gebruikt.
Stel je nu voor dat we een getextureerde rechthoek willen tekenen en de vier waarden van het kenmerk uv instellen, zodat de hele textuur wordt gebruikt:

Alles lijkt in orde:

Het is waar dat dit model zich evenwijdig aan het projectievlak bevindt, en daarom mogen er geen vervormingen zijn vanwege het perspectief. Laten we proberen de bovenste twee hoekpunten één voor één langs de as te verschuiven zen het probleem is onmiddellijk zichtbaar:

Bij het interpoleren van attributen moeten dus perspectieven worden overwogen. Het belangrijkste feit is dat hoewel z kan niet correct worden geïnterpoleerd in de schermruimte, 1 / z - misschien. Overweeg nogmaals om een ​​lijn te projecteren:

We weten ook al dat door soortgelijke driehoeken:

interpoleren X in schermruimte krijgen we:

interpoleren X in cameraruimte krijgen we:

Deze drie gelijkheden zijn cruciaal en op basis daarvan worden alle volgende formules afgeleid. Ik zal geen volledige conclusie geven, omdat het gemakkelijk is om dit alleen te doen en ik zal het slechts kort beschrijven, gericht op de resultaten.

Door deze twee gelijkheden te substitueren in de vergelijking verkregen uit de beeldverhoudingen van de driehoek en alle uitdrukkingen te vereenvoudigen, krijgen we eindelijk dat de wederkerige z-coördinaat, kan lineair worden geïnterpoleerd in de schermruimte:

Важно, что в данном выражении интерполяция происходит между величинами, обратными z-координатам в пространстве камеры.

Далее, предположим, что в вершинах Een en B заданы значения некого атрибута, обозначим их T1 en T2, который так же может быть линейно интерполирован в пространстве камеры:

Используя промежуточные результаты из вывода выше, мы можем записать, что величина Tc / Zc может быть так же корректно интерполирована в пространстве экрана:

Подведя итоги, мы получили, что 1 / Zc en Tc / Zc могут быть линейно интерполированы в пространстве экрана. Nu kunnen we gemakkelijk de waarde krijgen Tc:

De kosten van prospectief correcte interpolatie liggen eigenlijk vooral in deze divisie. Als het niet erg nodig is, is het beter om het aantal attributen waarvoor het wordt gebruikt te minimaliseren en indien mogelijk af te zien van eenvoudige lineaire interpolatie in de schermruimte. Het juiste textureringsresultaat wordt hieronder getoond:

Om perspectiefcorrectie te implementeren, hebben we waarden nodig die omgekeerd zijn aan diepte (z-coördineren) hoekpunten in de cameraruimte. Herinner wat er gebeurt wanneer vermenigvuldigd met de projectiematrix:

De hoekpunten van de cameraruimte gaan in de knipruimte. In het bijzonder zde coördinaat ondergaat bepaalde veranderingen (die in de toekomst nodig zullen zijn voor de dieptebuffer) en valt niet samen met z- het coördinaatpunt in de cameraruimte, dus we kunnen het niet gebruiken. En wat hetzelfde is, is wcoördineren, zoals we er duidelijk in stoppen z vanuit de cameraruimte (kijk maar naar de 4e kolom van de matrix). In feite hebben we zelfs onszelf niet nodig zen 1 / z. En we krijgen het eigenlijk "gratis", omdat wanneer we overschakelen naar NDC, we alle hoekpunten in verdelen z (die in de w-coördinaat ligt):

En daarom kunnen we het eenvoudig vervangen door de tegenovergestelde waarde:

Rasterisatie-algoritmen

Hieronder zullen we drie benaderingen beschrijven voor het rasteren van polygonen. Volledige codevoorbeelden ontbreken, omdat zoveel ervan afhangen van de implementatie, en dit zal meer verwarrend zijn dan helpen. Aan het einde van het artikel staat een link naar het project en indien nodig ziet u de implementatiecode erin.

"Standaard" algoritme

Ik noemde dit algoritme "standaard" omdat het het meest beschreven rasterisatie-algoritme is voor software-renderers. Het is gemakkelijker te begrijpen dan traversale algoritmen en rasterisatie in uniforme coördinaten, en dienovereenkomstig gemakkelijker te implementeren.

Laten we dus beginnen met de driehoek die we willen rasteren. Stel om te beginnen dat dit een driehoek is met een horizontaal ondervlak.

De essentie van dit algoritme is de opeenvolgende beweging langs de zijvlakken en het invullen van pixels daartussen. Bereken hiervoor eerst de offsetwaarden langs de as X voor elke eenheid verschoven langs de y-as.

Dan begint de beweging langs de zijkanten. Het is belangrijk dat de beweging start vanuit het dichtstbijzijnde centrum en niet vanuit Y- hoekpuntcoördinaten v0, omdat de pixels door deze punten worden weergegeven. als Ycoördinaat van v0 ligt al in het midden, dan gaan we sindsdien nog steeds naar het volgende midden op deze as v0 ligt zowel links als rechts, wat betekent dat deze pixel niet in de afbeelding mag worden opgenomen:

Wanneer we naar de volgende regel gaan, beginnen we ook alleen vanuit het volgende midden langs de X-as te bewegen.Als het gezicht door het midden van de pixel gaat, nemen we de pixel in de afbeelding aan de linkerkant, maar niet aan de rechterkant.

Op dezelfde manier werkt het algoritme voor driehoeken met een horizontale bovenkant. Die driehoeken die geen horizontale zijden hebben, zijn eenvoudigweg verdeeld in twee driehoeken - een met een horizontale bovenkant en een met een horizontale onderkant. Hiervoor is het snijpunt van de horizontale lijn door een van de hoekpunten van de driehoek (gemiddelde over Ycoördinaat), aan de andere kant:

Daarna wordt elk van deze driehoeken gerasterd volgens het bovenstaande algoritme. Het is ook noodzakelijk om de waarden van z- en w-coördinaten op het nieuwe hoekpunt correct te berekenen - bijvoorbeeld ze te interpoleren. Evenzo moet rekening worden gehouden met de aanwezigheid van dit hoekpunt bij het interpoleren van attributen.

Attributen worden als volgt geïnterpoleerd zonder perspectiefcorrectie - wanneer we langs de zijvlakken bewegen, berekenen we de geïnterpoleerde attribuutwaarden aan de begin- en eindpunten van de lijn die we gaan rasteren. Vervolgens worden deze waarden lineair geïnterpoleerd langs deze lijn. Als perspectiefcorrectie nodig is voor het kenmerk, interpoleren we in plaats daarvan T / z langs de randen van de veelhoek (in plaats van eenvoudigweg te interpoleren T - attribuutwaarde), evenals 1 / z. Vervolgens worden deze waarden aan het begin- en eindpunt van de lijn geïnterpoleerd en worden gebruikt om de uiteindelijke kenmerkwaarde te verkrijgen, rekening houdend met het perspectief, volgens de bovenstaande formule. Er moet aan worden herinnerd 1 / zwaarnaar ik verwijs, ligt eigenlijk in de w-coördinaat van de vector na alle gemaakte transformaties.

Traversale algoritmen

Dit is een hele groep algoritmen die dezelfde aanpak gebruiken op basis van de vergelijkingen van de vlakken van een polygoon.

De vergelijking van een gezicht is de vergelijking van de lijn waarop dat gezicht ligt. Met andere woorden, dit is de vergelijking van een lijn die door twee hoekpunten van een veelhoek gaat. Dienovereenkomstig wordt elke driehoek gekenmerkt door drie lineaire vergelijkingen:

Om te beginnen beschrijven we de vergelijking van een lijn die door twee punten gaat (dit zijn een paar hoekpunten van een driehoek):

We kunnen het als volgt herschrijven:

Uit de laatste uitdrukking blijkt dat de vector n loodrecht staat op de vector v0 - v1 (de coördinaten zijn verwisseld en de X-coördinaat is genomen met een minteken). Dus is n de normaal van de lijn gevormd door twee hoekpunten. Dit is allemaal dezelfde vergelijking van een lijn, en daarom, door het punt (x, y) daar te vervangen en nul te krijgen, weten we dat dit punt op de lijn ligt. Hoe zit het met de rest van de waarden? Dit is waar het normale opnameformulier van pas komt. We weten dat het scalaire product van twee vectoren de lengte van de projectie van de eerste vector op de tweede berekent, vermenigvuldigd met de lengte van de tweede vector. Normaal fungeert als de eerste vector en vector als de tweede van het eerste hoekpunt tot het punt (x, y):

En we hebben drie mogelijke opties:

  • De waarde is 0 - het punt ligt op de lijn
  • Waarde groter dan 0 - punt ligt in het positieve halve vlak
  • Waarde kleiner dan 0 - het punt ligt in het negatieve halve vlak

Ze worden allemaal hieronder getoond:



We kunnen ook de vergelijking van de lijn zo instellen dat de normale punten in de tegenovergestelde richting worden vermenigvuldigd met min één. In de toekomst ga ik ervan uit dat de vergelijking zo is ontworpen dat de normale punten binnen de driehoek liggen.

Met behulp van deze vergelijkingen kunnen we een driehoek definiëren als het snijpunt van drie positieve halve vlakken.

Het algemene deel van traversale algoritmen is dus als volgt:

  • Bereken de waarden van de vergelijkingen van de vlakken voor het punt
  • Als alle waarden positief zijn, wordt de pixel overschilderd. Als een van hen nul is, ligt de pixel op een van de vlakken en gebruiken we de regel linksboven om te bepalen of de pixel tot de polygoon behoort
  • Ga naar de volgende pixel

Laten we stilstaan ​​bij de implementatie van de regel linksboven. Nu we normaal werken op het gezicht, kunnen we strengere definities geven voor de linker- en bovenkant:
  • De linkerkant is het gezicht waarvan de normaal een positieve x-coördinaat heeft (d.w.z. wijst naar rechts)
  • Het bovenvlak is het vlak waarvan de normaal een negatieve y-coördinaat heeft, als de Y-as naar boven wijst. Als de Y-as naar beneden wijst (ik blijf bij deze optie), dan is de y-coördinaat van de bovenste vlakken positief

Het is ook belangrijk op te merken dat de coördinaten van het normale samenvallen met de coëfficiënten een en b in de canonieke vergelijking van een lijn: ax + door + c = 0.

Hieronder ziet u een voorbeeld van een functie die bepaalt of een pixel zich in een positief halfvlak bevindt ten opzichte van een van de gezichten (met de regel linksboven). Het is voldoende voor haar om drie argumenten voor de invoer te nemen: de waarde van de vergelijking van het gezicht op het punt, en de coördinaten van de normaal:

Eenvoudige en nuttige optimalisatie bij het berekenen van vergelijkingswaarden: als we de waarde kennen in een pixel met coördinaten (x, y), dan om de waarde op het punt te berekenen (x + 1, y) voeg gewoon de coëfficiëntwaarde toe een. Evenzo om de waarde in te berekenen (x, y + 1) voeg gewoon de coëfficiënt toe b:

De volgende stap is attribuutinterpolatie en perspectiefcorrectie. Hiervoor worden barycentrische coördinaten gebruikt. Dit zijn coördinaten waarin een driehoekspunt wordt beschreven als een lineaire combinatie van hoekpunten (formeel betekent dit dat het punt het massamiddelpunt van de driehoek is, met het overeenkomstige hoekpuntgewicht). We zullen de genormaliseerde versie gebruiken - d.w.z. het totale gewicht van de drie hoekpunten is gelijk aan één:

Dit coördinatensysteem heeft ook een zeer nuttige eigenschap waarmee ze kunnen worden berekend: barycentrische coördinaten zijn gelijk aan de verhouding van het oppervlak van de driehoeken gevormd in de figuur hierboven tot het totale oppervlak van de driehoek (om deze reden worden ze soms ook gebiedscoördinaten genoemd):

De derde coördinaat kan niet worden berekend door het gebied van de driehoeken, omdat de som van de drie coördinaten gelijk is aan eenheid - in feite hebben we slechts twee vrijheidsgraden.

Nu is alles klaar voor lineaire attribuutinterpolatie: de attribuutwaarde op het gegeven punt van de driehoek is gelijk aan de lineaire combinatie van barycentrische coördinaten en attribuutwaarden op de overeenkomstige hoekpunten:

Om het perspectief te corrigeren, gebruiken we een andere formule - eerst berekenen we de geïnterpoleerde waarde T / z, vervolgens de geïnterpoleerde waarde 1 / zen deel ze vervolgens in elkaar om de uiteindelijke waarde te krijgen T gezien het perspectief:

Het verschil tussen de verschillende transversale algoritmen is hoe de pixels worden geselecteerd voor verificatie. We zullen verschillende opties overwegen.

Backtracking-algoritme

Dit algoritme bestaat uit de volgende stappen:

  • Begin bij de bovenste pixel onder het bovenste hoekpunt
  • We gaan naar links totdat we een pixel links van de polygoon ontmoeten (backtracking)
  • Ga naar rechts en schilder de pixels totdat we een pixel rechts van de polygoon ontmoeten
  • Ga naar de onderstaande regel en begin opnieuw vanaf de tweede stap.

Dit kan als volgt worden weergegeven:

U kunt als volgt verifiëren dat de pixel links van de polygoon is - voor ten minste één vlak waarvoor de normaal naar rechts wijst (d.w.z. een> 0), is de waarde van de vergelijking van dit vlak negatief.

Zigzag-algoritme

Dit algoritme kan worden beschouwd als een verbeterde versie van het backtracking-algoritme. In plaats van "inactief" om door de pixels in een lijn te gaan totdat er een pixel is van waaruit we naar rechts kunnen beginnen te bewegen, onthouden we de informatie over de pixel van waaruit we op de lijn begonnen te bewegen en gaan we vervolgens door de pixels links en rechts van hem.

  • Begin bij de bovenste pixel onder het bovenste hoekpunt
  • Onthoud de positie
  • We gaan naar links en schilderen over de pixels die de polygoon ingaan totdat we een pixel links van de polygoon ontmoeten (backtracking)
  • We keren terug naar de pixel waarmee we zijn begonnen (we hebben het onthouden in stap 2) en gaan naar rechts, vullen de pixels in die de polygoon ingaan, totdat we een pixel buiten de polygoon ontmoeten
  • Ga naar de onderstaande regel en begin opnieuw vanaf de tweede stap.

Rasterisatie-algoritme in homogene coördinaten

Dit algoritme werd oorspronkelijk beschreven in de publicatie Triangle scan conversie met behulp van 2D homogene coördinaten, Marc Olano & Trey Greer. De belangrijkste voordelen zijn de afwezigheid van de noodzaak van knippen en delen door de w-coördinaat tijdens de transformatie van de hoekpunten (met uitzondering van een paar voorbehouden - ze zullen later worden beschreven).

Stel in de eerste plaats dat bij het begin van de rasterisatie X en Y de coördinaten van de hoekpunten bevatten waarden die worden weergegeven in de coördinaten op het scherm door eenvoudig te delen door de overeenkomstige wx-coördinaat. Dit kan de hoekpunttransformatiecode enigszins veranderen, op voorwaarde dat verschillende rasterisatie-algoritmen worden ondersteund, omdat deze geen deling door w-coördinaat omvat. Coördinaten in een homogene tweedimensionale ruimte worden rechtstreeks overgedragen naar een functie die rastering uitvoert.

Laten we de kwestie van lineaire interpolatie van attributen langs de veelhoek nader bekijken. Omdat de kenmerkwaarde (laten we het noemen) p) groeit lineair, het moet voldoen aan de volgende vergelijking (in driedimensionale ruimte):

Sinds het punt (x, y, z) geprojecteerd op een vlak met uniforme coördinaten (x, y, w)waarin w = z, we kunnen deze vergelijking ook in homogene coördinaten schrijven:

Stel je voor dat we de coëfficiënten kennen een, b en met (we zullen overwegen ze later te vinden). Tijdens rasterisatie hebben we te maken met de coördinaten van pixels in de schermruimte, die zijn gekoppeld aan de coördinaten in een homogene ruimte volgens de volgende formule (dit was onze eerste veronderstelling):

We kunnen de betekenis uitdrukken p / w met alleen de coördinaten in de schermruimte, gedeeld door w:

Om de juiste waarde te krijgen p met behulp van schermcoördinaten moeten we deze waarde gewoon verdelen in 1 / w (of, wat hetzelfde is, vermenigvuldigen met w):

1 / w, op zijn beurt, kan worden berekend met een soortgelijk algoritme - het is voldoende om te veronderstellen dat we een bepaalde parameter hebben die op alle hoekpunten hetzelfde is: p = [1 1 1].

Overweeg nu hoe we de coëfficiënten kunnen vinden een, b en met. Omdat voor elk attribuut zijn waarden zijn ingesteld op de hoekpunten van de veelhoek, hebben we eigenlijk een stelsel vergelijkingen van de vorm:

We kunnen dit systeem in matrixvorm herschrijven:

Het is belangrijk op te merken dat we slechts één inverse matrix per polygoon hoeven te berekenen - dan kunnen deze coëfficiënten worden gebruikt om op elk punt op het scherm de juiste attribuutwaarde te vinden. Omdat we de determinant van een matrix moeten berekenen om deze om te keren, krijgen we ook aanvullende informatie, omdat de determinant ook het volume van een tetraëder met hoekpunten aan de oorsprong en punten van de veelhoek vermenigvuldigd met twee berekent (dit volgt uit de definitie van een gemengd product van vectoren). Als de determinant gelijk is aan nul, betekent dit dat de polygoon niet kan worden getekend, omdat deze ofwel is gedegenereerd of door een rand is gedraaid ten opzichte van de camera. Het volume van de tetraëder kan ook zijn met een plusteken en een minteken - en dit kan worden gebruikt om polygonen af ​​te snijden die "terug" worden gekeerd naar de camera (de zogenaamde achterwaartse ruiming). Als we het correct achten om de hoekpunten tegen de klok in te bestellen, moeten polygonen waarvan de waarde van de determinant positief is, worden overgeslagen (op voorwaarde dat een linkshandig coördinatensysteem wordt gebruikt).

Het probleem van attribuutinterpolatie is dus al opgelost - we kunnen de juiste waarde (rekening houdend met het perspectief) van elk attribuut op een bepaald punt op het scherm berekenen. Het blijft alleen om te beslissen tot welke punten op het scherm de polygoon behoort.

Laten we ons herinneren hoe de pixelrelatie met de polygoon is geverifieerd in traversale algoritmen. We berekenden de vergelijkingen van de gezichten en controleerden vervolgens hun waarden op het gewenste punt op het scherm. Als ze allemaal positief waren (of nul, maar tot de linker- of bovenvlakken behoorden), hebben we de pixel overschilderd. Omdat we al weten hoe we attributen langs het oppervlak van een driehoek moeten interpoleren, kunnen we precies dezelfde aanpak gebruiken, ervan uitgaande dat we een pseudo-attribuut interpoleren dat nul is langs het gezicht en een positieve waarde (de handigste is 1) op het tegenovergestelde hoekpunt (in feite is het een vlak door deze gezichten):

Dienovereenkomstig zijn de waarden van deze pseudo-attributen voor elk van de gezichten:

Hiermee kunnen we de bijbehorende coëfficiënten berekenen een, b en met voor elk van de gezichten en krijg hun vergelijkingen:

Nu kunnen we op dezelfde manier hun waarden interpoleren langs het oppervlak van de driehoek en hun waarden berekenen op het punt dat we nodig hebben. Als het positief is, of als het nul is, maar we ons aan de linker- en bovenrand bevinden, bevindt de pixel zich binnen de polygoon en moet deze worden opgevuld. We kunnen ook een kleine optimalisatie toepassen - we hebben helemaal geen exacte waarden van de vergelijkingen van de gezichten nodig, alleen het teken is voldoende. Daarom delen door 1 / wwe kunnen gewoon de borden controleren p / w en 1 / w - ze moeten overeenkomen.

Omdat we op dezelfde gezichtsvergelijkingen werken, kan veel van wat in het gedeelte over traversale algoritmen is gezegd, ook op dit algoritme worden toegepast. Er kan bijvoorbeeld een regel linksboven worden geïmplementeerd

Bekijk de video: Real Life Trick Shots. Dude Perfect (Mei 2022).

Pin
Send
Share
Send
Send