Почему класс ConnectedThresholdImageFilter не маркирует пиксели в пределах порога?
Я пытаюсь использовать класс ConnectedThresholdImageFilter для сегментирования "C", выглядящего белой областью двоичного изображения ("slice87.jpg"). Идея состояла в том, чтобы выбрать начальное значение, которое находится в пределах области, и добавить только соседние пиксели, которые также имеют интенсивность 255 (между пороговыми значениями от 254 до 256).
Однако мой код приводит к изображению с каждым пикселем, установленным в 0:
Вместо этого (отредактировано вручную через фотошоп):
Мое начальное значение было (х, у) = (115,35). img.GetPixel(115,35)
возвращает 255
import SimpleITK as sitk
img = sitk.ReadImage('slice87.jpg')
seeds = [(115,35)]
output = sitk.ConnectedThreshold(image1=img,
seedList = seeds,
lower = 254,
upper = 256,
replaceValue = 255)
sitk.WriteImage(output, 'output.jpg')
1 ответ
Какой тип вашего входного изображения img
? Я подозреваю, что это типа sitkUInt8
, в этом случае значение 256 не может быть представлено как тип пикселя входного изображения, и оно вызывает переполнение целых чисел. Нижний и верхний параметры образуют замкнутый интервал, который включает указанные границы. Вы должны указать upper
параметр как 255 или Cast
ваше изображение другого типа пикселей.