![the image](https://i.stack.imgur.com/5mRvR.png)
Я хочу, чтобы тот же алгоритм повторялся в диапазоне значений DX, DY вместо меня, устанавливая значения внутри функции перевода.
Изображение, которое я использовал, является простым двоичным изображением абстрактной формы.Мне нужен массив расстояний, которые рассчитываются по разным значениям dx, dy
. Я считаю, что я пытаюсь использовать некоторую форму грубой силы, чтобы найти наиболее оптимальный dx, dy, который дает наилучшеерасстояние
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')
def ellipse(x, y):
value = (x*x) + (y*y)/3
if (value >= 600):
return 0
else:
return 1
def translate(x, y):
DX = 45
DY = 75
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 np.dot(matrix, (x,y))
data = np.zeros((100,100))
for i in range(0, 100):
for j in range(0, 100):
(x, y) = translate(i,j)
(x, y) = rotate(x, y)
data[i,j] = ellipse(x, y)
#np.append(data,ellipse(x,y))
plt.imshow(data, cmap="gray")
plt.show()
plt.imshow(im)
plt.show()
counter = 0 #tracking white
counter1 = 0 #tracking black
#getting the dimensions of the image -> y
yDim = im.shape[0]
#getting the dimensions of the image -> x
xDim = im.shape[1]
for i in range(yDim):
for j in range (xDim):
if np.any(im[i,j]) == 0:
counter += 1
else:
counter1 += 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:
np.append(a,im[i,j],axis=None)
#spatial distance
a = a.flatten()
data = data.flatten()
distance = distance.hamming(data,a)
print (distance)