Я уже некоторое время был в тупике по этой проблеме и задавался вопросом, сможет ли кто-нибудь помочь. Итак, скажем, у меня есть двоичное изображение, как показано ниже, и я хотел бы подсчитать черные элементы (zero
). Проблема в том, что я хочу знать количество элементов, связанных с «фоном» и «трапецией» в середине по отдельности, поэтому выведите два значения. Каким будет самый простой способ приблизиться к этому? Я пытался сделать это, не используя mask
, но это возможно? У меня есть библиотеки numpy
и scipy
, если это помогает.Вычислите область двух отдельных геометрий в Python
ответ
Вы можете использовать две функции из scipy.ndimage.measurements
: label
и find_objects
.
Сначала вы инвертируете массив, потому что функция label
считает ноль фоном.
inverted = 1 - binary_image_array
Тогда вы называете label
найти различные регионы:
labeled_array, num_features = scipy.ndimage.measurements.label(inverted)
Таким образом, для этих конкретного массива, где вы уже знаете есть exactely два черные пятна, у вас есть два регионов в labeled_array
.
Так как доступ будет размер каждого сгустка? Использую ли я 'find_objects'? –
Вы можете использовать что-то вроде этого: 'count = labeled_array [labeled_array == label_number] .astype (int) .sum()'. Это создаст логический массив, преобразует его в int и суммирует каждое событие. – heltonbiker
Очевидно, что быстрый подход является хорошим ответом.
Я думал, что вы можете работать с numpy.cumsum
и numpy.diff
, чтобы найти закрытую область.
Совокупная сумма будет равна нулю, пока вы в черной области, а затем увеличивается на единицу для каждого пикселя в белой области, быть устойчивым снова, пока вы пройти через замкнутую область, а затем начать вновь возрастает, и т.д.
Разница второго порядка затем находит места, где происходят прыжки, и вы остаетесь с «классифицированной» картой. Никакой гарантии, что это обобщает, просто идея.
a = numpy.zeros((10,10))
a[3:7,3:7] = 1
a[4:6, 4:6] = 0
y = numpy.cumsum(a, axis=0)
x = numpy.cumsum(a, axis=1)
yy= numpy.diff(y, n=2, axis=0)
xx = numpy.diff(x, n=2, axis=1)
numpy.dot(xx,yy)
array([[ 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., 2., 2., 2., 0., 0., 0.],
[ 0., 0., 0., 2., 4., 4., 2., 0., 0., 0.],
[ 0., 0., 0., 2., 4., 4., 2., 0., 0., 0.],
[ 0., 0., 0., 2., 2., 2., 2., 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. Добавление двух индексированных геометрий в BufferGeometry
- 2. Получить размер пересечения двух геометрий
- 3. Идентификация области перекрытия двух геометрий в холсте с использованием THREE.js
- 4. Python: слияние двух отдельных объектов в один?
- 5. Вычислите точный результат сложного броска двух D30
- 6. Вычислите возраст от двух дат vb.net
- 7. Связывание двух предметов из двух отдельных списков вместе. python
- 8. перекрытие геометрий в Scenekit
- 9. Объединение нескольких геометрий с Direct2D
- 10. Вычислите размер облицовки окон
- 11. Сравнение двух строк в двух отдельных таблицах
- 12. Сравнение двух отдельных столбцов на двух отдельных листах
- 13. Сохраните данные в двух отдельных приложениях Parse
- 14. Вычислите область и окружность треугольника со стороны пользователя
- 15. AngularJs в двух отдельных файлах
- 16. Поддержание двух отдельных значков
- 17. Построение двух отдельных векторов
- 18. Как найти сумму двух отдельных элементов данных в python, отдельно?
- 19. Умножение плавает из двух отдельных списков в Python
- 20. Индексирование больших геометрий в Elasticsearch
- 21. Применение ST_Intersection в списке геометрий
- 22. Удаление повторяющихся геометрий
- 23. Three.js добавить несколько геометрий
- 24. Область переменных в python
- 25. Область Мура в python
- 26. Область применения в Python
- 27. сравнение данных excel от двух отдельных листов с python/xlrd
- 28. Как найти пусковую установку для двух отдельных версий Python?
- 29. Split .txt файл и Append для двух отдельных списков Python
- 30. строковой список двух отдельных списков
ручной работы NumPy решение будет зависеть от предположений о форме/число регионов ... – Benjamin