我想要实现一个简单的功能即提取一个医学图像的轮廓计算边缘周长(这个医学图像读取之后是一个3d的矩阵,我选取其中一层就是一个普通的二维矩阵了),但是我提取的边缘还包含内部的,有什么办法可以去掉这些内部的边缘吗?这是我的代码:
from skimage.segmentation import find_boundaries
import cv2
import matplotlib.pyplot as plt
from PIL import Image
1. 读取NIfTI文件
nii_file_path = r'file' # 文件路径
img = nib.load(nii_file_path)
data = img.get_fdata()
2. 获取中间层面
middle_slice = data[:, data.shape[1] // 2,:]
3. 将信号强度低于200的地方置0
middle_slice[middle_slice < 200] = 0
3. 使用Otsu阈值分割
threshold_value = threshold_otsu(middle_slice)
binary_image = middle_slice > threshold_value
4. 寻找外围边缘
outer_edges = find_boundaries(binary_image, mode='inner')
这是我提取之后的图像:
有什么办法可以在这个图像的基础上去掉内部的轮廓只保留最外围的那一条线吗?非常感谢