Votre tâche consiste à prendre une image sRGB 24 BPP et à sortir la même image 3 fois en haut de l'échelle en sous-pixels rouges, verts et bleus. L'image résultante sera entièrement composée de pixels noirs, rouges, verts et bleus purs.
Chaque pixel de l'image source, lorsqu'il est agrandi, produit un arrangement de 9 sous-pixels qui peuvent être activés ou désactivés (c'est-à-dire leur couleur respective ou le noir). L'arrangement spécifique utilise trois colonnes de rouge, vert et bleu, dans cet ordre, comme suit:
(Notez que les bordures de ces "pixels" sont uniquement à des fins de démonstration.)
Étant donné que chacun des neuf sous-pixels ne peut être activé ou désactivé, vous devrez quantifier l'image d'entrée et utiliser différents modèles de sous-pixels pour obtenir 3 niveaux de luminosité.
Pour chaque sous-pixel de l'image:
- Pour les niveaux de couleur 0 à 74, tous les sous-pixels doivent être noirs.
- Pour les niveaux de couleur 75-134, le sous-pixel du milieu doit être la couleur respective et les deux autres doivent être noirs.
- Pour les niveaux de couleur 135-179, le sous-pixel du milieu doit être noir et les deux autres doivent être la couleur respective
- Pour les niveaux de couleur 180-255, les trois sous-pixels doivent être leur couleur respective
J'ai choisi ces gammes de niveaux parce que c'est ce qui se passait bien
Appliquez cette transformation à chaque pixel de l'image et sortez l'image agrandie en sous-pixels.
Exemples à pixel unique
rgb (40, 130, 175) produira ce modèle:
rgb (160, 240, 100) produira ce modèle:
Exemples d'images complètes
Images provenant de Wikipedia
Règles et notes
- L'entrée et la sortie peuvent être dans n'importe quel format pratique, qu'il s'agisse de fichiers d'image réels ou de listes (éventuellement imbriquées) de valeurs RVB.
- Vous pouvez supposer que les pixels sont dans l'espace colorimétrique sRGB avec 24BPP.
Bon golf!
la source
Réponses:
JavaScript (Node, Chrome, Firefox), 111 octets
Format d'E / S: matrice de
[R,G,B]
valeurs.Essayez-le en ligne! (juste un seul pixel)
Comment?
Toutes les valeurs de seuil sont des multiples de 15. Au lieu de faire des tests de comparaison explicites, il est un peu plus court de tester un masque de bits où chaque bit représente un intervalle de 15 valeurs (sauf le bit le plus significatif qui est mappé sur une seule valeur).
On a:
000000000111111111
000000111000011111
Commenté
Exemple
L'extrait de code suivant traite la tête de Mona Lisa (64x64). Ne fonctionne pas sur Edge.
Afficher l'extrait de code
la source
Gelée , 27 octets
[r, g, b]
Essayez-le en ligne! Cet exemple prend une image deux par deux où le pixel supérieur gauche est le premier exemple de pixel, le pixel supérieur droit est le deuxième exemple de pixel, le pixel inférieur gauche est un pixel noir et le pixel inférieur droit est un blanc pixel.
Comment?
la source
3⁼þ¤
réalise un produit extérieur de[1,2,3]=[1,2,3]
rendement[[1=1,2=1,3=1],[2=1,2=2,2=3],[3=1,3=2,3=3]]
qui est[[1,0,0],[0,1,0],[0,0,1]]
.Wolfram Language (Mathematica) , 186 octets
L'entrée et la sortie sont des listes de valeurs RVB
Essayez-le en ligne!
Wolfram Language (Mathematica), 243 octets
ce deuxième code est une fonction qui prend en entrée une image et sort une image
(je ne sais pas pourquoi les gens étaient confus dans les commentaires)
Donc, si vous nourrissez cet img
dans cette fonction
vous obtiendrez cette sortie
la source
i
c'est une image.C # (Visual C # Interactive Compiler) , 157 octets
Imprime le RVB de la sortie. La sortie est séparée par des sauts de ligne et non alignée. À l'origine, j'utilisais un masque de bits pour
1
être activé et0
désactivé, mais j'ai ensuite vu la réponse d'Arnauld, et je me suis rendu compte qu'utiliser0
comme activé et1
désactivé pouvait économiser des octets dans le nombre. Le lien TIO contient une "image" d'échantillon de 4 x 2 pixels.Essayez-le en ligne!
la source
APL + WIN, 102 octets
Demande une matrice 2d de pixels sous forme d'entiers 24 bits tels qu'ils apparaissent dans l'image
Essayez-le en ligne! Gracieuseté de Dyalog Classic
Produit une matrice 2d d'entiers 24 bits de l'image transformée. La plupart du code gère la mise en forme de l'entrée et de la sortie.
Exemple: prendre une image 2 x 2 composée des pixels échantillons
Contribution:
Production:.
la source
Rouille - 281 octets
Cette ligne est une fonction qui relève le défi, mais son entrée est en fait des données au format de fichier TGA comme décrit sur paulbourke.net , ainsi que la largeur et la hauteur pré-analysées, en pixels, de l'image. Il renvoie des données de pixels pour la sortie, sous forme d'octets, dans un vecteur 9 fois la taille des données de pixels d'entrée.
Cette deuxième ligne est une fonction main () qui peut transformer un fichier d'entrée nommé i.tga en un fichier de sortie nommé o.tga, en appelant la fonction z à partir de la première ligne, sans utiliser de bibliothèques externes. Il gère l'analyse de largeur / hauteur, la création d'un en-tête pour le fichier de sortie et la lecture + écriture du fichier. Il ajouterait 402 octets si le défi nécessitait des E / S de fichiers, pour un total de 683. Il est utile pour les tests.
la source