Počítám v pythonu vzájemnou euklidovskou vzdálenost RGBA dvou pixelů pomocí takové primitivní funkce (pro nepythonysty - ty dvě hvězdičky s dvojkou, to je nadruhou):
dist=math.sqrt(((r2-r1)**2)+((g2-g1)**2)+((b2-b1)**2)+((a2-a1)**2))
Je to stejné, jako když se měří vzdálenost, akorát že s barvičkama

Barvy pixelu jsou v rozmezí 0-255, takže maximální hodnota té funkce je sqrt(65025 * 4) = 510
Když tedy tu svoji funkci budu dělit těma 510, tak dostanu normalizovanou hodnotu v rozmezí 0.0 až 1.0.
No, a já si počítám z normalizované hodnoty novou barvičku tak, že tou normalizovanou hodnotou násobím 255.0, takže hodnota barvy by měla být v rozmezí 0 až 255. Upravená funkce tedy vypadá takto
dist=( ( math.sqrt(((r2-r1)**2)+((g2-g1)**2)+((b2-b1)**2)+((a2-a1)**2)) )/510.0) ) * 255.0
Dává Vám to smysl? Tak teď
pozor:
Ten kód většinou funguje, až narazí na situaci, kdy jeden pixel je (0,0,0,86) a druhý (0,0,0,89). Bude to tedy zjednodušeně
(Math.sqrt(3**2)/510.0)*255.0
(3/510.0)*255.0
a to se rovná 1.49999999999
A to je divné! Jak to může být víc než jedna?! Teda, já vím, že /510 * 255 je skoro to samý jako *0.5,
aritmeticky to samozřejmě může být jen dobře, ptám se, kde je díra v mém postupu, protože mě to připadá naprosto košer.