weixin_47746263 2023-09-18 14:26 采纳率: 100%
浏览 6
已结题

请教:python图像处理,如何去除内部轮廓

我想要实现一个简单的功能即提取一个医学图像的轮廓计算边缘周长(这个医学图像读取之后是一个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')
这是我提取之后的图像:

img


有什么办法可以在这个图像的基础上去掉内部的轮廓只保留最外围的那一条线吗?非常感谢

  • 写回答

3条回答 默认 最新

  • weixin_47746263 2023-09-18 16:35
    关注

    cv2我试过了,不行,因为有的线条是连着的被认为是一个轮廓了。
    我换了个思路发现这个问题其实很简单,我直接按行遍历矩阵,把每一行最左边和最右边的非0值保留,其它值全部置零就好了,就能保留最外侧轮廓了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月26日
  • 已采纳回答 9月18日
  • 创建了问题 9月18日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见