Kärnbild
macOS grafikmodell |
---|
Rendering |
Compositing |
Core Image är en pixelexakt, nära realtid, icke-förstörande bildbehandlingsteknik i Mac OS X. Implementerad som en del av QuartzCore-ramverket för Mac OS X 10.4 och senare tillhandahåller Core Image en plugin-baserad arkitektur för applicering av filter och effekter inom Quartz- grafikåtergivningslagret. Ramverket lades senare till iOS i iOS 5 .
Översikt
Core Image abstraherar den manipuleringsprocess på pixelnivå som krävs när ett filter appliceras på en bild, vilket gör det enkelt för applikationer att implementera bildtransformationsfunktioner utan omfattande kodning. I en enkel implementering tillämpar Core Image ett enda bildfilter på pixeldata från en given källa för att producera den transformerade bilden. Varje bildfilter anger en enda transformation eller effekt, antingen inbyggd i Core Image eller laddad från ett plugin som kallas en Image Unit . I kombination med förinställda eller användardefinierade inmatningsparametrar kan filtret appliceras på den ursprungliga pixeldatan utan att modifiera den, vilket ger oförstörande bildredigering.
Liksom Photoshop kan Core Image tillämpa flera filter på samma bildkälla. Istället för att tillämpa en serie filter individuellt, sammanställer Core Image en dynamisk instruktionspipeline så att endast en beräkning behöver tillämpas på pixeldata för att uppnå en kumulativ effekt. Tillämpning av pixeloperationer som är förknippade med flera filter kan uppnås samtidigt och utan en betydande ökning av bearbetningstiden. Oavsett antalet filter, sammanställer Core Image koden för denna instruktionspipeline med en just-in-time kompilator , som exekveras av antingen CPU:n eller grafikkortets GPU, beroende på vilken som kan utföra beräkningen snabbare.
Filter skrivs i Core Image Kernel Language , som delar en underuppsättning av kommandon med OpenGL Shading Language (GLSL) . När en kompatibel GPU är tillgänglig skriver Core Image-kompilatorn instruktionspipelinen med hjälp av GLSL, och hanterar buffertar och tillstånd transparent. Även om GPU-rendering är att föredra [ citat behövs ] , kan kompilatorn arbeta i ett CPU reservläge och generera kommandon som är lämpliga för den nuvarande CPU-arkitekturen istället. CPU fallback använder vektorbearbetning kapaciteten hos den eller de nuvarande CPU:erna, och den är medveten om flera processorer. Sålunda beror Core Image-prestanda på GLSL-kapaciteten hos GPU:n eller processorkraften. Med en GPU som stöds kan de flesta effekter renderas i realtid eller nära realtid.
Historik och genomförande
Core Image introducerades med Mac OS X 10.4 . Tidiga exempel på dess användning kan hittas i krusningseffekten i Dashboard och Apples professionella digitala fotoapplikation Aperture . Från och med Mac OS X 10.5 kan alla program som implementerar Image Kit använda Core Image. Preview och iPhoto är vanliga exempel.
2011 lade Apple till Core Image till iOS i iOS 5.0.
Xcode - verktygen inkluderar Core Image Fun House och Quartz Composer ; båda använder Core Image.
Core Image plugin-arkitekturen var inspirerad av Core Audio.
Pixelnoggrannhet
All pixelbehandling som tillhandahålls av en bildenhet utförs i en förmultiplicerad alfa ( RGBA ) färgrymd, som lagrar fyra färgkanaler: röd, grön, blå och transparens ( alfa ). Varje färgkanal representeras av ett 32-bitars flyttalnummer . Detta ger exceptionellt färgdjup, mycket större än vad det mänskliga ögat kan uppfatta , eftersom varje pixel representeras av en 128-bitars vektor (fyra 32-bitars färgkanaler). För färgrymder med lägre bitdjup ger den flyttalsberäkningsmodell som används av Core Image exceptionell prestanda, vilket är användbart vid bearbetning av flera bilder eller videorutor.
Grafikprocessorer som stöds
Alla programmerbara grafikprocessorer som stöder de nödvändiga OpenGL Shader-kommandona ( GLSL ) är Core Image-kompatibla. Apple har använt följande grafikkort för att stödja Core Image GPU-behandling i Mac OS X 10.4 och Aperture, så följande lista kan betraktas som ett exempel på minimikrav:
- ATI Mobility Radeon 9700 (Mobility Radeon 9600 är också kapabel)
- ATI Radeon 9550, 9600, 9650, 9600 XT, 9600 Pro, 9700 Pro, 9800 XT och 9800 Pro
- ATI Radeon X600 XT, X600 Pro, X800 XT, X850 XT, X1600, X1900 XT
- ATI Radeon HD 2400 XT, HD 2600 Pro och HD 2600 XT
- NVIDIA GeForce FX 5200 Ultra, FX Go 5200
- NVIDIA GeForce 6600, 6600 LE, 6800 Ultra DDL och 6800 GT DDL
- NVIDIA GeForce 7300 GT, 7600 GT och 7800 GT
- NVIDIA GeForce 8600M GT & 8800 GT
- NVIDIA GeForce 9400M & 9600M GT
- NVIDIA GeForce GT 120 & GT 130
- NVIDIA GeForce GTX 285
- NVIDIA Quadro FX 4500 & FX 5600
- NVIDIA Quadro FX 4800
- NVIDIA Quadro 4000
- NVIDIA GeForce 320M
- NVIDIA GeForce GT 330M
- NVIDIA GeForce GT 640M
- NVIDIA GeForce GT 650M
- NVIDIA GeForce GTX 660M
- NVIDIA GeForce GTX 675M
- NVIDIA GeForce GTX 680MX
- NVIDIA GeForce GT 750M
- NVIDIA GeForce GT 755M
- NVIDIA GeForce GTX 775M
- NVIDIA GeForce GTX 780M
- Intel GMA 900 , GMA 950 eller GMA X3100
- Intel HD Graphics 3000 (Sandy Bridge)
- Intel HD Graphics 4000 (Ivy Bridge)
- Intel HD Graphics 5000 (Haswell)
- Intel Iris 5100 (Haswell)
- Intel Iris Pro 5200 (Haswell)
- Intel HD Graphics 5300 (Broadwell)
- Intel HD Graphics 6000 (Broadwell)
- Intel Iris 6100 (Broadwell)
Observera att alla GPU som kan hantera Core Image-instruktioner också är Quartz Extreme- kompatibla. Kraven för Core Image är högre än för Quartz Extreme.
Inbyggda filter
macOS innehåller många inbyggda filter, inklusive följande. Mac OS X 10.4 introducerade över 100 av dem, och Mac OS X 10.5 har lagts till i listan.
- Oskärpa, som median, gaussisk, rörelse och brus
- Färgjusteringar och effekter, som exponering, gammajustering och sepiaton
- Kompositionsoperationer, som addition och multiplicera blandningar eller hårt ljus
- Förvrängningar, som Pinch, Circle Splash och Vortex
- Generatorer, som Star Shine och Lenticular Halo
- Geometrijusteringar, såsom Beskär, Skala, Rotera och Affin transformation
- Halvtons-, Tile- och Posterize-filter
- Övergångar, såsom Dissolve och Ripple
En dokumentationswebbplats med öppen källkod för inbyggda Core Image-filter finns på CIFilter.io .
Se även
- Öppning
- Kärnbild Roligt hus
- Kvartskompositör
- LiveQuartz
- Pixelmator
- improviserad
- GEGL , ett programmeringsbibliotek som används av GIMP
- Windows Imaging Component , en Windows-komponent med liknande API-design men med färre bildoperationer som stöds.
Bibliografi
- Singh, Amit (19 juni 2006). Mac OS X Internal: A Systems Approach . Addison-Wesley Professional. ISBN 978-0-13-270226-3 .
externa länkar
- Core Image Programming Guide – Mac OS X Developer Library
- Apple förhandsgranskar Mac OS X "Tiger" - tillkännagivande av Mac OS X 10.4, inklusive Core Image
- Filterpedia - Swift -app med öppen källkod som visar nästan alla tillgängliga inbyggda CoreImage-filter tillsammans med anpassade GLSL- och metallbaserade filter av Simon Gladman.