Используя Simple ITK, чтобы найти ограничивающую рамку

Как я могу захватить ограничивающую рамку из 3D-маски, используя Simple ITK в python? ITK имеет функцию ограничивающего прямоугольника, но я не смог найти аналогичную функцию в SITK.

1 ответ

Вам нужен LabelShapeStatisticsImageFilter, и после выполнения вы можете получить BoundingBox вокруг определенных значений. В случае нескольких масок вы можете перебирать range(1,labelimfilter.GetNumberOfLabels()+1).(Работает таким образом, потому что вы не можете вычислить BoundingBox для значения 0.)

      import SimpleITK as sitk

bbox=[]

labelimfilter=sitk.LabelShapeStatisticsImageFilter()
labelimfilter.Execute(yourmaskimage)
for i in range(1,labelimfilter.GetNumberOfLabels()+1):
    box=labelimfilter.GetBoundingBox(i)
    bbox.append(box)

Это вернет координаты ограничивающей рамки в порядке [xstart, ystart, zstart, xsize, ysize, zsize]

Другие вопросы по тегам