У меня есть этот код, который должен возвращать список различных пространственных расстояний.Однако, когда я печатаю массив, это только одно значение, заполненное в массиве, что явно неверно.Логика заключается в следующем:
Первый шаг: найдите как можно больше возможностей определения местоположения (x, y), затем
создайте изображение эллипса относительно угла, который должен быть зафиксирован (тета), иa location (x, y)
Секунда: вычислить пространственное расстояние между пикселями эллипса и абстрактным двоичным изображением пример изображения оба изображения с одинаковыми размерами, поскольку они должны рассматриваться какмассивы
Третье: сохранить пространственные расстояния в массиве / списке
combinations = []
def points (x,y):
dx = 5
dy = 5
return x + dx, y + dy
for x in range(0, 10):
for y in range(0, 10):
combinations.append(points(x,y))
print(combinations)
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from scipy.spatial import distance
import scipy.misc
im = scipy.misc.imread(r'C:\Users\mbore\Pictures\irregular1.png', flatten=False, mode='L')
#to store the spatial_distances calculated
distances = []
#getting the dimensions of the image -> y
yDim = im.shape[0]
#getting the dimensions of the image -> x
xDim = im.shape[1]
#initialize empty array this array will receive all the white pixels
a = np.empty([100,100])
for i in range(yDim):
for j in range (xDim):
if np.any(im[i,j]) == 0:
a = np.append(a,im[i,j],axis=None)
def ellipse(x, y):
value = (x*x) + (y*y)/3
if (value >= 600):
return 0
else:
return 1
def translate(x, y, DX, DY):
return (x- DX, y - DY)
def rotate(x, y):
theta = np.radians(45)
matrix = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
return matrix@(x,y)
data = np.zeros((100,100))
for i in range(0, 100):
for j in range(0, 100):
for DX,DY in combinations:
(x, y) = translate(i,j, DX, DY)
(x, y) = rotate(x, y)
data[i] = ellipse(x, y)
a = a.flatten()
data = data.flatten()
a = a[0:10000]
spatial_distance = distance.hamming(data,a)
distances.append(spatial_distance)