Рассмотрим следующее изображение, сохраненное как массив numpy:
a = [[0,0,0,0,0,1,1,0,0,0],
[0,0,0,0,1,1,1,1,0,0],
[0,0,0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,0,0,0],
[0,0,0,0,0,2,2,0,0,0],
[0,0,0,0,0,2,0,0,0,0],
[0,0,0,0,3,3,3,0,0,0],
[4,0,0,0,0,0,0,0,0,0],
[4,4,0,0,0,0,0,0,0,0],
[4,4,4,0,0,0,0,0,0,0]]
a = np.array(a)
Нули представляют пиксели фона, 1,2,3 и 4 представляют пиксели, принадлежащие объектам. Вы можете видеть, что объекты всегда образуют непрерывные острова или области на изображении. Я хотел бы знать расстояние между каждой парой объектов. В качестве меры расстояния я хотел бы иметь кратчайшее прямолинейное расстояние между пикселями объекта, которые находятся ближе всего друг к другу. Пример: Distance(2,3) = 1
, потому что они касаются друг друга. Distance(1,2) = 2
, потому что существует ровно один пиксель фона, разделяющий две области, или, другими словами, ближайшие пиксели объектов находятся на расстоянии двух пикселей друг от друга.
Кто-нибудь может сказать мне, как можно было бы решить эту проблему в Python? Или связать меня с какими-то ресурсами?