Search
Pokud obrázky reprezentujeme jako číselné vektory, jedná se vlastně o vzdálenost dvou vektorů (což už nezní tak divně).
S využitím funkcí z numpy lze (Euklidovskou) vzdálenost spočítat např. následujícími dvěma způsoby (viz d1 a d2):
numpy
d1
d2
from PIL import Image import numpy as np im1 = np.array(Image.open('train_data/img_1112.png')).astype(int).flatten() im2 = np.array(Image.open('train_data/img_1113.png')).astype(int).flatten() diff = im1 - im2 d1 = np.sqrt(np.sum(np.square(diff))) d2 = np.linalg.norm(diff)
Naše obrázky jsou šedotónové s odstíny šedi od 0 do 255 (datový typ numpy.uint8). Pokud bychom je načetli s jejich přirozeným datovým typem uint8, při počítání rozdílu im1 - im2 by mohlo dojít k podtečení, a naopak při umocnění rozdílu na druhou by mohlo dojít k přetečení. Proto raději hned po načtení odstíny šedi reprezentujeme jako obecný datový typ int (část .astype(int) je při načítání obrázku důležitá).
numpy.uint8
uint8
im1 - im2
int
.astype(int)