如何使用 skimage 完全填充图像的孔洞?
How to completely fill holes to an image using the skimage?
我正在使用 skimage 填充二进制输入图像的孔(左侧)。这是我的代码
from skimage import ndimage
img_fill_holes=ndimage.binary_fill_holes(binary).astype(int)
但是,上述代码的结果并不能完全填补二值图像的空洞。这意味着输出仍然是圆圈内的孔。我怎样才能完全填满圆圈内的所有洞?
您可能曾尝试在 RGB 图像(3D 矩阵,binary.shape[2] == 3
进行检查)上应用 binary_fill_holes
。
尝试:
img_fill_holes = ndimage.binary_fill_holes(binary[:,:,0]).astype(int)
或任何其他 "rgb2gray" 方法,您应该得到预期的输出
如果您有 3 维数组,只需将 structure
更改为 3 维数组。
例如:
import SimpleITK as sitk
from scipy import ndimage
brain_mask_raw = sitk.ReadImage('/PATH/TO/brain_mask.nii.gz')
brain_mask_array = sitk.GetArrayFromImage(brain_mask_raw)
brain_mask_array_filled = ndimage.binary_fill_holes(brain_mask_array, structure=np.ones((3,3,3))).astype(int)
brain_mask_filled = sitk.GetImageFromArray(brain_mask_array_filled.astype(brain_mask_array.dtype)).CopyInformation(brain_mask_raw)
sitk.WriteImage(brain_mask_filled, '/RESULT/PATH/brain_mask_filled.nii.gz')
我正在使用 skimage 填充二进制输入图像的孔(左侧)。这是我的代码
from skimage import ndimage
img_fill_holes=ndimage.binary_fill_holes(binary).astype(int)
但是,上述代码的结果并不能完全填补二值图像的空洞。这意味着输出仍然是圆圈内的孔。我怎样才能完全填满圆圈内的所有洞?
您可能曾尝试在 RGB 图像(3D 矩阵,binary.shape[2] == 3
进行检查)上应用 binary_fill_holes
。
尝试:
img_fill_holes = ndimage.binary_fill_holes(binary[:,:,0]).astype(int)
或任何其他 "rgb2gray" 方法,您应该得到预期的输出
如果您有 3 维数组,只需将 structure
更改为 3 维数组。
例如:
import SimpleITK as sitk
from scipy import ndimage
brain_mask_raw = sitk.ReadImage('/PATH/TO/brain_mask.nii.gz')
brain_mask_array = sitk.GetArrayFromImage(brain_mask_raw)
brain_mask_array_filled = ndimage.binary_fill_holes(brain_mask_array, structure=np.ones((3,3,3))).astype(int)
brain_mask_filled = sitk.GetImageFromArray(brain_mask_array_filled.astype(brain_mask_array.dtype)).CopyInformation(brain_mask_raw)
sitk.WriteImage(brain_mask_filled, '/RESULT/PATH/brain_mask_filled.nii.gz')