Cache-cache d'image

15

Dans ce défi, vous devez trouver un pixel spécifique dans une photographie (prise avec un vrai appareil photo).

Vous passez un tuple (R, G, B) et une image, et vous devez renvoyer un point (x, y) dans l'image qui correspond à la couleur RVB donnée . L'image peut avoir plusieurs points qui correspondent à la couleur; il vous suffit d'en trouver 1.

Le défi est que vous devez le faire en lisant le moins de pixels possible . Votre score sera le nombre total de pixels lus dans tous les cas de test.

Si vous le souhaitez, vous pouvez lire l'image entière dans un tableau de valeurs RVB, tant que vous n'effectuez aucun traitement sur les pixels. J'autorise cela uniquement à des fins d'efficacité. Par exemple, en Python, list(Image.open("image_name+".jpg").convert("RGB").getdata())c'est ok.

Les emplacements de codage en dur ne sont pas autorisés. Votre algorithme devrait bien fonctionner pour plus que les cas de test répertoriés ci-dessous. Vous n'êtes pas autorisé à enregistrer des données entre les scénarios de test. J'ai choisi des valeurs RVB qui apparaissent rarement ( <10) dans l'image (au cas où cela ferait une différence pour votre algorithme). Si vous utilisez l'aléatoire dans votre algorithme, veuillez définir une valeur de départ, afin que votre score soit constant.

Les images peuvent être trouvées sur Github

Cas de test:

image_name: 
(r, g, b) [all possible answers]

barn:
(143,91,33) [(887,1096),(2226,1397),(2007,1402),(2161,1508),(1187,1702)]
(53,35,59) [(1999,1260)]
(20,24,27) [(1328,1087),(154,1271)]
(167,148,176) [(1748,1204)]
(137,50,7) [(596,1498)]
(116,95,94) [(1340,1123)]
(72,49,59) [(1344,857),(1345,858),(1380,926),(1405,974),(1480,1117)]
(211,163,175) [(1963,745)]
(30,20,0) [(1609,1462),(1133,1477),(1908,1632)]
(88,36,23) [(543,1494),(431,1575)]
daisy:
(21,57,91) [(1440,1935),(2832,2090),(2232,2130),(1877,2131),(1890,2132)]
(201,175,140) [(1537,1749),(2319,1757)]
(169,160,0) [(2124,759)]
(113,123,114) [(1012,994),(2134,1060),(1803,1183),(1119,1335)]
(225,226,231) [(3207,829),(3256,889),(3257,889),(1434,981),(2599,1118),(2656,1348),(2656,1351)]
(17,62,117) [(2514,3874),(2336,3885)]
(226,225,204) [(3209,812)]
(119,124,146) [(2151,974),(2194,1021),(2194,1022),(2202,1034),(2812,1500)]
(2,63,120) [(2165,3881),(2326,3882),(2330,3882),(2228,3887)]
(200,167,113) [(1453,1759)]
dandelion:
(55,2,46) [(667,825),(668,825)]
(95,37,33) [(1637,1721),(1625,1724),(1405,1753),(2026,2276),(2016,2298)]
(27,41,50) [(1267,126),(424,519),(2703,1323),(1804,3466)]
(58,92,129) [(2213,3274)]
(136,159,105) [(1300,2363),(2123,2645),(1429,3428),(1430,3432),(1417,3467),(1393,3490),(1958,3493)]
(152,174,63) [(2256,2556)]
(78,49,19) [(2128,2836)]
(217,178,205) [(2736,3531)]
(69,95,130) [(870,305),(493,460),(2777,1085),(2791,1292),(2634,3100)]
(150,171,174) [(2816,1201),(2724,2669),(1180,2706),(1470,3215),(1471,3215)]
gerbera:
(218,186,171) [(4282,1342)]
(180,153,40) [(4596,1634),(4369,1682),(4390,1708),(4367,1750)]
(201,179,119) [(4282,1876),(4479,1928)]
(116,112,149) [(5884,252),(4168,371),(4169,372),(4164,384),(5742,576)]
(222,176,65) [(4232,1548)]
(108,129,156) [(5341,3574),(5339,3595),(5302,3734)]
(125,99,48) [(4548,1825),(4136,1932),(5054,2013),(5058,2023),(5058,2035),(5055,2050),(5031,2073)]
(170,149,32) [(4461,1630),(4520,1640)]
(156,185,203) [(3809,108)]
(103,67,17) [(4844,1790)]
hot-air:
(48,21,36) [(1992,1029),(2005,1030),(2015,1034),(2018,1036)]
(104,65,36) [(3173,1890),(3163,1893)]
(169,89,62) [(4181,931),(4210,938),(4330,1046),(4171,1056),(3117,1814)]
(68,59,60) [(1872,220),(1874,220),(1878,220),(1696,225),(3785,429)]
(198,96,74) [(4352,1057)]
(136,43,53) [(1700,931)]
(82,42,32) [(4556,961),(4559,973),(4563,989),(4563,990),(4441,1004),(4387,1126),(4378,1128)]
(192,132,72) [(1399,900),(3105,1822),(3104,1824),(3105,1824),(3107,1826),(3107,1827),(3104,1839),(3119,1852)]
(146,21,63) [(1716,993)]
(125,64,36) [(4332,937)]
in-input:
(204,90,1) [(1526,1997),(1385,2145),(4780,2807),(4788,3414)]
(227,163,53) [(1467,1739),(2414,1925),(2441,2198),(134,2446)]
(196,179,135) [(3770,2740),(1110,3012),(3909,3216),(1409,3263),(571,3405)]
(208,59,27) [(1134,1980),(4518,2108),(4515,2142)]
(149,70,1) [(4499,1790),(2416,2042),(1338,2150),(3731,2408),(3722,2409),(4400,3618)]
(168,3,7) [(987,402),(951,432),(1790,1213),(1790,1214),(1848,1217),(4218,1840),(4344,1870),(1511,1898)]
(218,118,4) [(3857,1701),(1442,1980),(1411,2156),(25,2606)]
(127,153,4) [(3710,2813)]
(224,230,246) [(2086,160),(2761,222),(4482,1442)]
(213,127,66) [(4601,1860),(4515,2527),(4757,2863)]
klatschmohn:
(170,133,19) [(1202,2274),(1202,2275),(957,2493),(1034,2633),(3740,3389),(3740,3391),(3683,3439)]
(162,92,4) [(489,2854)]
(159,175,104) [(3095,2475),(3098,2481)]
(199,139,43) [(1956,3055)]
(171,169,170) [(3669,1487),(3674,1490),(3701,1507)]
(184,115,58) [(1958,2404)]
(228,169,5) [(1316,2336),(1317,2336)]
(179,165,43) [(3879,2380),(1842,2497),(1842,2498)]
(67,21,6) [(1959,2197),(2157,2317),(2158,2317),(2158,2318),(2116,2373)]
(213,100,106) [(1303,1816)]
tajinaste-rojo:
(243,56,99) [(1811,2876),(1668,4141),(2089,4518),(1981,4732),(1659,4778),(2221,5373),(1779,5598),(2210,5673),(2373,5860)]
(147,157,210) [(1835,1028),(1431,3358)]
(114,37,19) [(1792,3572),(1818,3592)]
(108,117,116) [(2772,4722),(1269,5672),(2512,5811),(2509,5830),(2186,5842),(2186,5846),(2190,5851),(2211,5884)]
(214,197,93) [(1653,4386)]
(163,102,101) [(2226,2832),(2213,3683),(1894,4091),(1875,4117)]
(192,192,164) [(2175,2962),(2206,3667),(2315,3858),(1561,3977),(3039,5037),(3201,5641)]
(92,118,45) [(1881,1704),(1983,1877),(2254,2126),(3753,5862),(3766,5883)]
(145,180,173) [(1826,1585)]
(181,124,105) [(1969,3892)]
turret-arch:
(116,70,36) [(384,648),(516,669)]
(121,115,119) [(2419,958)]
(183,222,237) [(172,601),(183,601),(110,611),(111,617)]
(237,136,82) [(2020,282),(676,383),(748,406),(854,482),(638,497),(647,661),(1069,838),(1809,895),(1823,911)]
(193,199,215) [(1567,919),(1793,1047)]
(33,30,25) [(1307,861),(309,885),(1995,895),(504,1232),(2417,1494)]
(17,23,39) [(1745,1033),(788,1090),(967,1250)]
(192,139,95) [(1445,1337)]
(176,125,98) [(1197,1030)]
(178,83,0) [(2378,1136)]
water-lilies:
(86,140,80) [(2322,2855),(4542,3005),(4540,3006),(4577,3019)]
(218,124,174) [(1910,2457)]
(191,77,50) [(2076,1588)]
(197,211,186) [(4402,1894)]
(236,199,181) [(2154,1836)]
(253,242,162) [(1653,1430)]
(114,111,92) [(1936,2499)]
(111,93,27) [(2301,2423),(2127,2592),(2137,2717),(2147,2717)]
(139,92,102) [(1284,2243),(1297,2258)]
(199,157,117) [(3096,993)]
Nathan Merrill
la source
2
Y a-t-il une corrélation dans les images sur lesquelles nous allons être testés? (Les images peuvent-elles être du bruit) Sinon, la seule façon sera sûrement d'échantillonner au hasard jusqu'à ce que le bon pixel soit choisi?
Bleu
2
@muddyfish les images sont prises avec de vraies caméras d'objets réels, donc il y a une optimisation à trouver. Votre algorithme devrait certainement cibler les images, mais pas les couleurs spécifiques que je donne.
Nathan Merrill
"en lisant le moins de pixels possible" comment déterminez-vous cela?
David
En raison de différences dans les bibliothèques et les langues, je ne peux pas définir de méthodes considérées comme "accédant". À quoi pensez-vous en particulier?
Nathan Merrill,
Une solution doit-elle afficher le nombre de pixels vérifiés?
trichoplax

Réponses:

5

Python, score: 14035624

Tout d'abord, voici le code:

from heapq import heappush, heappop
from PIL import Image
import random

random.seed(1)


def dist(x, y):
    return sum([(x[i] - y[i]) ** 2 for i in range(3)])


def gradient_descent(image_name, c):
    im = Image.open(image_name + '.jpg').convert('RGB')
    L = im.load()
    sx, sy = im.size
    heap = []
    visited = set()
    count = 0
    points = []
    for i in range(0, sx, sx / 98):
        for j in range(0, sy, sy / 98):
            points.append((i, j))
    for x in points:
        heappush(heap, [dist(c, L[x[0], x[1]]), [x[0], x[1]]])
        visited.add((x[0], x[1]))

    while heap:
        if count % 10 == 0:
            x = random.random()
            if x < 0.5:
                n = heap.pop(random.randint(10, 100))
            else:
                n = heappop(heap)
        else:
            n = heappop(heap)
        x, y = n[1]
        c_color = L[x, y]
        count += 1

        if c_color == c:
            p = float(len(visited)) / (sx * sy) * 100
            print('count: {}, percent: {}, position: {}'.format(len(visited), p, (x, y)))
            return len(visited)

        newpoints = []
        newpoints.append((x + 1, y))
        newpoints.append((x - 1, y))
        newpoints.append((x, y + 1))
        newpoints.append((x, y - 1))
        newpoints.append((x + 1, y + 1))
        newpoints.append((x + 1, y - 1))
        newpoints.append((x - 1, y + 1))
        newpoints.append((x - 1, y - 1))

        for p in newpoints:
            if p not in visited:
                try:
                    d = dist(c, L[p[0], p[1]])
                    heappush(heap, [d, [p[0], p[1]]])
                    visited.add(p)
                except IndexError:
                    pass

et voici un gif montrant comment l'algorithme examine les pixels:

Alors, voici ce que fait ce code: La variable heapest une file d' attente prioritaire de (x, y)coordonnées dans l'image, triée par la distance euclidienne de la couleur à cette coordonnée par rapport à la couleur cible. Il est initialisé avec 10 200 points qui sont répartis uniformément sur toute l'image.

Avec le tas initialisé, nous sautons ensuite le point avec la distance minimale à la couleur cible. Si la couleur à ce point a une distance> 0, c'est-à-dire si la couleur à ce point n'est PAS la couleur cible, on en ajoute les 8 points environnants heap. Pour garantir qu'un point donné n'est pas pris en compte plus d'une fois, nous conservons la variable visited, qui est un ensemble de tous les points qui ont été examinés jusqu'à présent.

Parfois, au lieu de prendre directement le point avec la distance de couleur minimale, nous choisirons au hasard un autre point près du haut de la file d'attente. Ce n'est pas strictement nécessaire, mais lors de mes tests, cela réduit d'environ 1 000 000 pixels du score total. Une fois la couleur cible trouvée, nous renvoyons simplement la longueur de l' visitedensemble.

Comme @Karl Napf, j'ai ignoré les cas de test où la couleur spécifiée n'était pas présente dans l'image. Vous pouvez trouver un programme de pilote pour exécuter tous les cas de test dans le référentiel GitHub que j'ai créé pour cette réponse.

Voici les résultats de chaque cas de test spécifique:

barn
color: (143, 91, 33), count: 20388 / 0.452483465755%, position: (612, 1131)
color: (53, 35, 59), count: 99606 / 2.21061742643%, position: (1999, 1260)
color: (72, 49, 59), count: 705215 / 15.6512716943%, position: (1405, 974)

daisy
color: (21, 57, 91), count: 37393 / 0.154770711039%, position: (1877, 2131)
color: (169, 160, 0), count: 10659 / 0.0441179100089%, position: (2124, 759)
color: (113, 123, 114), count: 674859 / 2.79326096545%, position: (1119, 1335)
color: (225, 226, 231), count: 15905 / 0.0658312560927%, position: (3256, 889)
color: (17, 62, 117), count: 15043 / 0.0622634131029%, position: (2514, 3874)
color: (226, 225, 204), count: 138610 / 0.573710808362%, position: (1978, 1179)
color: (119, 124, 146), count: 390486 / 1.61623287435%, position: (2357, 917)
color: (2, 63, 120), count: 10063 / 0.0416510487306%, position: (2324, 3882)
color: (200, 167, 113), count: 16393 / 0.06785110224%, position: (1453, 1759)

dandelion
color: (95, 37, 33), count: 10081 / 0.0686342592593%, position: (1625, 1724)
color: (27, 41, 50), count: 2014910 / 13.7180691721%, position: (1267, 126)
color: (58, 92, 129), count: 48181 / 0.328029684096%, position: (1905, 756)
color: (136, 159, 105), count: 10521 / 0.0716299019608%, position: (1416, 3467)
color: (152, 174, 63), count: 10027 / 0.0682666122004%, position: (2256, 2558)
color: (69, 95, 130), count: 201919 / 1.37472086057%, position: (2708, 2943)
color: (150, 171, 174), count: 29714 / 0.202301198257%, position: (1180, 2706)

gerbera
color: (180, 153, 40), count: 21904 / 0.0906612910062%, position: (4459, 1644)
color: (116, 112, 149), count: 14896 / 0.0616549758413%, position: (5884, 252)
color: (222, 176, 65), count: 76205 / 0.315414704215%, position: (4313, 2097)
color: (108, 129, 156), count: 12273 / 0.0507983027994%, position: (5302, 3734)
color: (125, 99, 48), count: 26968 / 0.111621333814%, position: (5054, 2013)
color: (170, 149, 32), count: 89591 / 0.370819746281%, position: (4478, 1647)
color: (156, 185, 203), count: 177373 / 0.734151989118%, position: (4096, 368)
color: (103, 67, 17), count: 11035 / 0.0456741849093%, position: (4844, 1790)

hot-air
color: (48, 21, 36), count: 49711 / 0.24902994992%, position: (1990, 1095)
color: (104, 65, 36), count: 9927 / 0.0497298447599%, position: (3191, 1846)
color: (68, 59, 60), count: 195418 / 0.978957066918%, position: (3948, 470)
color: (82, 42, 32), count: 12216 / 0.0611967143737%, position: (4559, 984)
color: (192, 132, 72), count: 116511 / 0.583668171938%, position: (3103, 1844)

in-input
color: (204, 90, 1), count: 44058 / 0.248299807393%, position: (4695, 2559)
color: (227, 163, 53), count: 12654 / 0.0713147615132%, position: (221, 2384)
color: (196, 179, 135), count: 181534 / 1.02307996812%, position: (1030, 3486)
color: (208, 59, 27), count: 9956 / 0.0561095120614%, position: (4518, 2108)
color: (149, 70, 1), count: 13698 / 0.0771984829467%, position: (3731, 2408)
color: (168, 3, 7), count: 19381 / 0.10922644167%, position: (942, 398)
color: (218, 118, 4), count: 36648 / 0.206538911011%, position: (25, 2606)
color: (224, 230, 246), count: 1076427 / 6.06647185011%, position: (4482, 1442)
color: (213, 127, 66), count: 62673 / 0.353209265712%, position: (4701, 2579)

klatschmohn
color: (170, 133, 19), count: 11535 / 0.0724321530189%, position: (1034, 2633)
color: (162, 92, 4), count: 103795 / 0.651763790429%, position: (489, 2854)
color: (159, 175, 104), count: 10239 / 0.0642941321856%, position: (3098, 2481)
color: (171, 169, 170), count: 10119 / 0.063540611738%, position: (3674, 1490)
color: (184, 115, 58), count: 22425 / 0.140814133632%, position: (1958, 2404)
color: (228, 169, 5), count: 10449 / 0.0656127929688%, position: (1316, 2336)
color: (179, 165, 43), count: 10285 / 0.0645829816905%, position: (1842, 2498)
color: (67, 21, 6), count: 10206 / 0.0640869140625%, position: (2116, 2373)
color: (213, 100, 106), count: 11712 / 0.073543595679%, position: (1303, 1816)

tajinaste-rojo
color: (243, 56, 99), count: 126561 / 0.5273375%, position: (2241, 5424)
color: (114, 37, 19), count: 11285 / 0.0470208333333%, position: (1818, 3583)
color: (108, 117, 116), count: 33855 / 0.1410625%, position: (1269, 5672)
color: (163, 102, 101), count: 1058090 / 4.40870833333%, position: (1546, 4867)
color: (192, 192, 164), count: 10118 / 0.0421583333333%, position: (1919, 3171)
color: (92, 118, 45), count: 13431 / 0.0559625%, position: (3766, 5883)
color: (145, 180, 173), count: 1207713 / 5.0321375%, position: (1863, 955)

turret-arch
color: (116, 70, 36), count: 145610 / 3.23161258822%, position: (96, 671)
color: (183, 222, 237), count: 11704 / 0.259754094722%, position: (140, 604)
color: (237, 136, 82), count: 60477 / 1.34220338231%, position: (1063, 993)
color: (193, 199, 215), count: 359671 / 7.98240046163%, position: (2259, 953)
color: (33, 30, 25), count: 148195 / 3.28898308846%, position: (1307, 861)
color: (17, 23, 39), count: 10601 / 0.235274535044%, position: (2080, 1097)
color: (192, 139, 95), count: 219732 / 4.87664787607%, position: (1127, 970)
color: (176, 125, 98), count: 2471787 / 54.8578942696%, position: (147, 734)

water-lilies
color: (86, 140, 80), count: 10371 / 0.0717376936238%, position: (4542, 3005)
color: (218, 124, 174), count: 25655 / 0.177459312498%, position: (1910, 2457)
color: (197, 211, 186), count: 1144341 / 7.91557073177%, position: (4402, 1894)
color: (253, 242, 162), count: 14174 / 0.0980435897622%, position: (1672, 1379)
color: (111, 93, 27), count: 10405 / 0.0719728764975%, position: (2147, 2717)
color: (199, 157, 117), count: 10053 / 0.0695380420403%, position: (3096, 993)

Total: 14035624
Andrew Epstein
la source
2
C'est une très bonne réponse. Bel algorithme aussi.
niemiro
1
Cette recherche de voisin le plus proche avec plusieurs graines est géniale! J'ai également envisagé d'utiliser un BFS sur un DFS avec un tas comme vous, mais la quadsearch est trop large.
Karl Napf
1

Python, score: 396 250 646

  • Bien qu'il n'y ait pas de PNG à analyser et qu'il y ait toujours des problèmes avec les tests, j'ai décidé de programmer quand même.
  • Les cas de test où la valeur n'est pas présente dans l'image ont été ignorés (comparés à une recherche linéaire traditionnelle, qui avait un score de 544 017 431 )
from PIL import Image

def dist(x,y):
 d = 0
 for i in range(3):
  d += (x[i]-y[i])**2
 return d

def mid(x,y):
 return (x+y)/2

class Finder:
 def __init__(self, image_name, c):
  self.image_name = image_name,
  self.c = c
  self.found = False
  self.position = None
  self.im = Image.open(image_name+".jpg").convert("RGB")
  self.L = self.im.load()
  self.visited = set()

 def quadsearch(self,x0,x1,y0,y1):
  if x0==x1 and y0==y1: return
  xm=mid(x0,x1)
  ym=mid(y0,y1)
  R = [
   (x0,xm,y0,ym),
   (xm,x1,y0,ym),
   (x0,xm,ym,y1),
   (xm,x1,ym,y1),
   ]
  P = [(mid(t[0],t[1]), mid(t[2],t[3])) for t in R]
  DR = []
  for i in range(len(P)):
   p = P[i]
   if p in self.visited: continue
   self.visited.add(p)
   u = self.L[p[0], p[1]]
   d = dist(u, self.c)
   if d == 0:
    self.found = True
    self.position = (p[0], p[1])
    return
   DR.append((d,R[i]))
  S = sorted(range(len(DR)), key=lambda k: DR[k][0])
  for i in S:
   if self.found == True: return
   r = DR[i][1]
   self.quadsearch(r[0], r[1], r[2], r[3])

 def start(self):
  sx,sy = self.im.size
  self.quadsearch(0,sx,0,sy)

 def result(self):
  if self.found:
   count = len(self.visited)
   sx,sy = self.im.size
   ratio = float(count)/(sx*sy)
   print len(self.visited), ratio, self.position, self.L[self.position[0], self.position[1]], "=", self.c
  else:
   print self.c, "not found"

if __name__ == "__main__":
 image_name="turret-arch"
 c=(116,70,36)
 F = Finder(image_name, c)
 F.start()
 F.result()

Il s'agit d'une recherche récursive en quatre sections. Parfois, il trouve la valeur correcte dans quelques pour cent, parfois plus de 75%. Voici les résultats pour tous les tests:

pixels_visited, percentage, (position) (RGB at position) = (RGB searched)

tajinaste-rojo
1500765 0.062531875 (2329, 5146) (243, 56, 99) = (243, 56, 99)
(147, 157, 210) not found
335106 0.01396275 (2116, 5791) (114, 37, 19) = (114, 37, 19)
1770396 0.0737665 (1269, 5672) (108, 117, 116) = (108, 117, 116)
(214, 197, 93) not found
8086276 0.336928166667 (1546, 4867) (163, 102, 101) = (163, 102, 101)
12859 0.000535791666667 (1476, 4803) (192, 192, 164) = (192, 192, 164)
7505961 0.312748375 (3766, 5883) (92, 118, 45) = (92, 118, 45)
15057489 0.627395375 (1871, 1139) (145, 180, 173) = (145, 180, 173)
(181, 124, 105) not found
in-input
35754 0.00201500551852 (4695, 2559) (204, 90, 1) = (204, 90, 1)
5029615 0.283456451895 (10, 2680) (227, 163, 53) = (227, 163, 53)
6986547 0.393744217722 (1383, 3446) (196, 179, 135) = (196, 179, 135)
1608341 0.090642053775 (4518, 2108) (208, 59, 27) = (208, 59, 27)
581774 0.0327873194757 (3750, 2798) (149, 70, 1) = (149, 70, 1)
1302581 0.0734101891628 (4374, 1941) (168, 3, 7) = (168, 3, 7)
6134761 0.345739701008 (25, 2606) (218, 118, 4) = (218, 118, 4)
(127, 153, 4) not found
9760033 0.550050913352 (4482, 1442) (224, 230, 246) = (224, 230, 246)
212816 0.0119937745268 (4701, 2579) (213, 127, 66) = (213, 127, 66)
water-lilies
5649260 0.390767412093 (4577, 3019) (86, 140, 80) = (86, 140, 80)
12600699 0.871608412215 (1910, 2457) (218, 124, 174) = (218, 124, 174)
(191, 77, 50) not found
3390653 0.234536328318 (4402, 1894) (197, 211, 186) = (197, 211, 186)
(236, 199, 181) not found
7060220 0.488365537823 (1672, 1379) (253, 242, 162) = (253, 242, 162)
(114, 111, 92) not found
6852380 0.473988947097 (2147, 2717) (111, 93, 27) = (111, 93, 27)
(139, 92, 102) not found
14105709 0.975712111261 (3096, 993) (199, 157, 117) = (199, 157, 117)
dandelion
(55, 2, 46) not found
9094264 0.619162854031 (1637, 1721) (95, 37, 33) = (95, 37, 33)
2358912 0.16060130719 (1526, 3129) (27, 41, 50) = (27, 41, 50)
11729837 0.798600013617 (1905, 756) (58, 92, 129) = (58, 92, 129)
6697060 0.455954520697 (2246, 2685) (136, 159, 105) = (136, 159, 105)
6429635 0.437747480937 (2148, 2722) (152, 174, 63) = (152, 174, 63)
(78, 49, 19) not found
(217, 178, 205) not found
80727 0.00549611928105 (2481, 3133) (69, 95, 130) = (69, 95, 130)
239962 0.0163372821351 (2660, 917) (150, 171, 174) = (150, 171, 174)
turret-arch
210562 0.0467313240712 (725, 655) (116, 70, 36) = (116, 70, 36)
(121, 115, 119) not found
2548703 0.565649385237 (140, 604) (183, 222, 237) = (183, 222, 237)
150733 0.033453104887 (2165, 601) (237, 136, 82) = (237, 136, 82)
3458188 0.767497003862 (2259, 953) (193, 199, 215) = (193, 199, 215)
2430256 0.539361711572 (265, 1222) (33, 30, 25) = (33, 30, 25)
638995 0.141816103689 (1778, 1062) (17, 23, 39) = (17, 23, 39)
2506522 0.556287895601 (1127, 970) (192, 139, 95) = (192, 139, 95)
1344400 0.298370988504 (147, 734) (176, 125, 98) = (176, 125, 98)
(178, 83, 0) not found
hot-air
17474837 0.875411434688 (1992, 1029) (48, 21, 36) = (48, 21, 36)
1170064 0.0586149905099 (3191, 1846) (104, 65, 36) = (104, 65, 36)
(169, 89, 62) not found
11891624 0.595717352134 (3948, 470) (68, 59, 60) = (68, 59, 60)
(198, 96, 74) not found
(136, 43, 53) not found
12476811 0.625032612198 (4387, 1126) (82, 42, 32) = (82, 42, 32)
4757856 0.238347376116 (3105, 1822) (192, 132, 72) = (192, 132, 72)
(146, 21, 63) not found
(125, 64, 36) not found
daisy
5322196 0.220287235367 (2171, 2128) (21, 57, 91) = (21, 57, 91)
(201, 175, 140) not found
22414990 0.9277629343 (2124, 759) (169, 160, 0) = (169, 160, 0)
20887184 0.864526601043 (1119, 1335) (113, 123, 114) = (113, 123, 114)
595712 0.0246566923794 (2656, 1349) (225, 226, 231) = (225, 226, 231)
3397561 0.140626034757 (2514, 3874) (17, 62, 117) = (17, 62, 117)
201068 0.00832226281046 (1978, 1179) (226, 225, 204) = (226, 225, 204)
18693250 0.773719036752 (2357, 917) (119, 124, 146) = (119, 124, 146)
3091040 0.127939041706 (2165, 3881) (2, 63, 120) = (2, 63, 120)
3567932 0.147677739839 (1453, 1759) (200, 167, 113) = (200, 167, 113)
barn
314215 0.0697356740202 (784, 1065) (143, 91, 33) = (143, 91, 33)
2448863 0.543491277908 (1999, 1260) (53, 35, 59) = (53, 35, 59)
(20, 24, 27) not found
(167, 148, 176) not found
(137, 50, 7) not found
(116, 95, 94) not found
2042891 0.453391406631 (1345, 858) (72, 49, 59) = (72, 49, 59)
(211, 163, 175) not found
(30, 20, 0) not found
(88, 36, 23) not found
klatschmohn
3048249 0.191409829222 (3683, 3439) (170, 133, 19) = (170, 133, 19)
1057649 0.0664133456509 (489, 2854) (162, 92, 4) = (162, 92, 4)
2058022 0.129230138206 (3095, 2475) (159, 175, 104) = (159, 175, 104)
(199, 139, 43) not found
2060805 0.129404892156 (3674, 1490) (171, 169, 170) = (171, 169, 170)
7725501 0.485110247577 (1958, 2404) (184, 115, 58) = (184, 115, 58)
2986734 0.187547095028 (1316, 2336) (228, 169, 5) = (228, 169, 5)
497709 0.0312528257017 (3879, 2379) (179, 165, 43) = (179, 165, 43)
3996978 0.250983720944 (2157, 2318) (67, 21, 6) = (67, 21, 6)
3332106 0.209234167028 (1303, 1816) (213, 100, 106) = (213, 100, 106)
gerbera
(218, 186, 171) not found
9445576 0.390955128952 (4377, 1750) (180, 153, 40) = (180, 153, 40)
(201, 179, 119) not found
6140398 0.254152853347 (5742, 576) (116, 112, 149) = (116, 112, 149)
6500717 0.269066561215 (4233, 1541) (222, 176, 65) = (222, 176, 65)
13307056 0.550782905612 (5302, 3734) (108, 129, 156) = (108, 129, 156)
13808847 0.571552180573 (5058, 2023) (125, 99, 48) = (125, 99, 48)
9454870 0.391339810307 (4478, 1647) (170, 149, 32) = (170, 149, 32)
2733978 0.113160142012 (4096, 368) (156, 185, 203) = (156, 185, 203)
11848606 0.490417237301 (4844, 1790) (103, 67, 17) = (103, 67, 17)
Karl Napf
la source