Как рассчитать 10-й и 90-й процентиль для маски по изображению SimpleITK - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу вычислить 10-й и 90-й процентили пикселей в маске, нарисованной над простым изображением. Я могу только получить среднее значение.

Я использую следующий код:

img = sitk.ReadImage(image_path)
label = sitk.ReadImage(label_path)

labelstatsFilter = sitk.LabelIntensityStatisticsImageFilter()
labelstatsFilter.Execute(label, img)
mean = labelstatsFilter.GetMean(1)

Я не смог найти метод для вычисления процентилей, кроме как, если я могу преобразовать маску в numpy массив. Я не смог найти способ использовать метод GetArrayfromImage для работы с маской, как она работает с основным изображением.

1 Ответ

0 голосов
/ 23 апреля 2020

Решение:

Используйте np.extract для извлечения значений маски для массива, затем используйте np.percentile

Пример:

img = sitk.ReadImage(image_path)
label = sitk.ReadImage(label_path)

img = sitk.GetArrayFromImage(img)
label = sitk.GetArrayFromImage(label)

mask = np.extract(label,img)
10xpercentile= np.percentile(mask,10)
...