Измерьте расстояние между объектами на картинке с помощью python

У меня есть изображение с квадратами, представленными в виде массива numpy. Квадраты имеют переменную ширину и горизонтальное положение, но цвета фиксированы. Как мне рассчитать ширину и расстояние между этими (синими) квадратами в питоне?

квадраты

numpy_array[1] содержит массив изображений: [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 195 196 202 204 207 203 201 216 219 223 228 233 235 237 239 236 235 233 233 233 232 232 234 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 239 241 239 240 239 241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 4 1 1 2 87 93 93 93 93 93 93 93 93 47 1 2 0 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199 199]


person Danijel Cwix Predojevic    schedule 13.12.2014    source источник
comment
Расстояние от края до края? Что внутри numpy_array[1]?   -  person jmunsch    schedule 13.12.2014
comment
Правый край левого синего квадрата до левого края правого синего квадрата, или, другими словами, ширина первого красного квадрата   -  person Danijel Cwix Predojevic    schedule 13.12.2014


Ответы (1)


Вы можете получить список границ ваших квадратов (которые не являются квадратными...) с помощью

>>> da = np.where(np.abs(np.diff(a)) > 100)
>>> da
(array([120, 254, 375]),)

из которого вы можете рассчитать нужные вам расстояния и ширину, возможно, с помощью:

>>> da = np.insert(da, 0,0)
>>> da = np.append(da, len(a))
>>> np.diff(da)
array([120, 134, 121, 165])

Если ваши данные зашумлены (как кажется), вам может потребоваться настроить порог, 100. Насколько я вас понимаю, a совпадает с numpy_array[1] в вашем вопросе: вы можете подумать о суммировании или усреднении строк, чтобы удалить часть шума.

person xnx    schedule 13.12.2014