Core ImageCore Image est une interface de programmation précise et non destructive dédiée au traitement et à l'affichage dans Mac OS X. Faisant partie du framework QuartzCore, il étend les capacités d'affichage de Quartz avec son architecture à base de plugiciels pour gérer les filtres et autres effets[1],[2]. DétailsCore Image est conçu pour abstraire les manipulations d'images aux logiciels sans nécessiter de code dédié à chaque matériel. Core Image fonctionne en appliquant le traitement d'une (ou plusieurs) Image Unit à chaque pixel d'une image, créant ainsi le rendu d'une nouvelle image transformée. Chaque image unit définie un filtre, une transformation ou tout autre effet qui peut être appliqué au pixel de l'image d'origine sans modifier les données initiales. De cette façon, Image Units permet l'édition non destructive des images[3]. Comme les filtres Photoshop, un Image Unit peut être appliqué en parallèle d'autres. Core Image peut mettre en place une queue de traitement à la volée de telle sorte qu'un seul calcul soit appliqué au pixel pour rendre les multiples effets. Il en résulte que plusieurs Image Units peuvent être appliqués à une image sans nécessiter trop de temps de calcul supplémentaire. Core Image utilise un compilateur juste-à-temps pour créer le code qui effectue les opérations associées à une ou plusieurs Image Units de chaque pixel. Le code est alors exécuté soit par le processeur centrale soit par le processeur de la carte graphique, en fonction de celui qui peut exécuter le-dit code le plus rapidement[4]. Lorsqu'un processeur graphique compatible est disponible, le compilateur de Core Image génère un code en utilisant des instructions issue du langage OpenGL[5]. Si le GPU supporte ce langage, il sera utilisé en priorité par Core Image. Si ce n'est pas le cas, le compilateur fonctionnera en mode dégradé en utilisant le processeur central, générant des instructions adéquates pour le processeur de l'ordinateur[2]. Cette fonctionnalité utilise les capacités de calcul vectoriel des processeurs (graphiques ou centraux) et prend en charge les multi-processeurs. Les performances de Core Image dépendent donc de la capacité de gestion du langage OpenGL du processeur graphique ou de la puissance de calcul du processeur central. Avec un processeur graphique supporté, la plupart des effets peuvent être rendus en temps-réel ou avec un léger décalage par rapport au temps-réel[6]. HistoireCore Image est inclus depuis Mac OS X v10.4[7]. Core Image Fun House et Quartz Composer, inclus les Developer Tools, l'utilisent. L' effet goutte d'eau du Dashboard utilise un filtre Core Image. Aperture est un exemple d'application qui utilise quasiment uniquement Core Image[8]. Au pixel prèsTous les traitements de pixels fournit par une Image Unit sont effectués dans un espace de couleur alpha pré-multiplié, stoquant quatre canaux de couleur : rouge, vert, bleu et la transparence alpha. Chaque canal de couleur est représenté par un flottant de 32b. Ceci permet une profondeur de couleur exceptionnelle, grandement supérieure à ce qui peut être perçu par l'œil humain, chaque pixel étant représenté par un vecteur de 128b (quatre canaux de 32b). Pour les espaces colorimétriques moins profonds, le modèle de calcul à virgule flottante utilisé par Core Image est d'une performance exceptionnelle, ce qui est utile lors du traitement de plusieurs images (y compris les images fixes issues d'une vidéo)[3],[9]. Processeurs graphiques supportésN'importe quel processeur graphique qui gère les commandes OpenGL nécessaires est capable de traiter les instructions Core Image. Apple a utilisé les cartes graphiques suivantes pour supporter Core Image en mode "commandes OpenGL"[10],[11]:
Les processeurs graphiques capables d'être utilisés par Core Image peuvent aussi être utililsés par Quartz Extreme. Les besoins de Core Image sont plus grands que Quartz Extreme[10]. Image UnitsMac OS X 10.4 inclut une centaine d' Image Unit en standard, y compris [7]:
Références
Liens externes
|