Манипулирование результатами scikit-изображения регион - PullRequest
0 голосов
/ 27 ноября 2018

Я совершенно новичок в Python и немного борюсь с обработкой данных.До сих пор я использовал Matlab для большей части моего анализа данных.

Я анализирую изображение с помощью skimage.measure.regionprops, который выводит список свойств.Теперь я обрабатываю изображение в субрегионах и хочу изменить элементы в этом списке.

В частности, я вырезал одну область на две при работе с подизображением.Теперь я хочу включить мои обновленные регионы в список.Так как я работаю в субрегионе, свойство centroid не дает мне координаты на полном изображении.Итак, я хотел бы добавить значения смещения, чтобы исправить это.

Но , я не могу редактировать список вывода regionprops.Сначала я попытался отредактировать свойство centroid, но это кортеж, и они, по-видимому, неизменяемы.Затем я попытался удалить поле центроида и заменить его новыми значениями, но, очевидно, я вообще не могу изменить список свойств.

Можно ли каким-либо образом манипулировать списком результатов regionprops?

Я работаю над обходным путем, но мне было интересно, возможно ли это вообще ...

1 Ответ

0 голосов
/ 27 ноября 2018
from skimage.measure import regionprops
import numpy as np

arr = np.zeros((10, 10))

arr[[1, 4, 9], [1, 4, 9]] = 1
arr[[4, 7, 8], [2, 4, 6]] = 2

Это создает массив, который выглядит следующим образом:

array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  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.,  2.,  0.,  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.,  2.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  2.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.]])


list_from_regprops = regionprops(arr.astype(int))

Это создает ваш список регионов, и вы можете получить к нему доступ, проиндексировав список и извлекая значение, которое вы хотите изменить, а затем просто перезаписатьиспользуя тот же механизм

#list_from_regprops = [r1, r2, r3]


old_centroid_x, old_centroid_y = list_from_regprops[0].centroid
new_centroid_x, new_centroid_y = old_centroid_x + 4, old_centroid_y - 4#for example
list_from_regprops[0].centroid = new_centroid_x, new_centroid_y

Это должно делать то, что вам нужно, просто замените 0 на любой индекс, который вам нужно изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...