Используя 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]