skimage求凸包、包络

给一幅分割 label,求某个物体的凸包(convex hull)[1]和包络(polygon)[2],所得是一幅 0/1 的 mask。凸包、包络都是包含物体的,分别在于包络不要求凸,可以更细致地勾勒物体形状。例:

obj-poly-chull
从左到右:此物体的 segmentation mask、包络 mask、凸包 mask。包络、凸包两 mask 或可用于 masked dice loss[3]

Code

  • 包络:skimage.draw.polygon
  • 凸包:skimage.morphology.convex_hull_image
import numpy as np
import medpy.io as medio
from PIL import Image
import skimage# 读一幅 seg label
label, _ = medio.load("test/ctpelvic1k/dataset5_1411226_Image_mask_4label.nii.gz")
print(label.shape, label.min(), label.max(), label.dtype) # (512, 512, 175) 0 4 uint16
lab = label[:, :, 100]# object seg mask
lab_bin = (lab > 0).astype(np.uint8) * 255# polygon
px, py = np.where(lab > 0)
rr, cc = skimage.draw.polygon(px, py)
polygon = np.zeros_like(lab, dtype=np.uint8)
polygon[rr, cc] = 255# convex hull
chull = skimage.morphology.convex_hull_image(lab_bin)
print(chull.shape, chull.min(), chull.max(), chull.dtype) # (512, 512) False True bool
chull = chull.astype(np.uint8) * 255# 一并展示
comb = np.concatenate([lab_bin, polygon, chull], axis=1)
Image.fromarray(comb).save("test.png")

References

  1. Convex Hull
  2. skimage.draw.polygon
  3. MaskedDiceLoss

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenModelica】4命令行大全

命令行大全 文章目录 命令行大全一、Summary of Commands for the Interactive Session Handler二、Running the compiler from command line 一、Summary of Commands for the Interactive Session Handler 以下是交互式会话处理器中当前可用命令的完整列表。 • simulate(mo…

中国500米逐年植被净初级生产力(NPP)数据集(2000-2022)

净初级生产力(NPP)是指植物在单位时间单位面积上由光合作用产生的有机物质总量中扣除自养呼吸后的剩余部分,是生产者能用于生长、发育和繁殖的能量值,反映了植物固定和转化光合产物的效率,也是生态系统中其他生物成员生存和繁衍的物质基础。其…

电脑控制面板在哪?5招教你快速打开!

“我在执行一个任务时要进入电脑的控制面板中查看,但是我不知道电脑的控制面板在哪,谁能帮帮我呀?” 电脑控制面板是一个系统文件夹,它提供了各种对计算机系统进行设置和管理的工具。控制面板允许用户查看并操作基本的系统设置&am…

我不想使用 CSS 样式,你知道在 HTML 中有什么标签可以加粗文本么

网页设计过程中&#xff0c;我们经常会遇到需要加粗文本来凸显特定文本的情况。 <b> 标签在强调文本时扮演着不可或缺的角色&#xff0c;它就像是我们语言中的语气词&#xff0c;虽微不足道&#xff0c;但能有效地抓住读者的注意力。 1. 基础语法 什么是 <b> 标…

Leetcode 76 最小覆盖子串 java版

官网链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 1. 问题&#xff1a; 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a; 对于 …

document.getElementById(‘username‘).value 是什么

document.getElementById(username).value; 这段代码是 JavaScript 中用于获取 HTML 元素的值的常见方式。 document 是 JavaScript 中代表当前文档&#xff08;即 HTML 页面&#xff09;的对象。getElementById(username) 是 document 对象的方法&#xff0c;用于获取具有指定…

Windows运维_Windows下配置Apache-Haus(Apache2.4)

Windows运维_Windows下配置Apache-Haus(Apache2.4) Apache Haus 是一个由网站管理员, 开发人员和爱好者组成的社区, 他们更喜欢使用 Apache Web 服务器而不是 IIS。 无论是出于商业还是娱乐目的, Apache 在 Windows 上的使用正在稳步增加, 我们希望通过为人们提供一个可以获得…

VsCode安装,配置,快捷键及常用开发插件的安装与介绍

文章目录 一.安装包下载方式一.官网下载方式二.网盘下载 二.安装三.VSCode插件安装1.中文语言包2.拼写检察器3.HTML自动补全4.JavaScript-ES6语法提示5.补全前端代码6.路径提示7.Vue3/Vue2开发必用8.自动闭合HTML/XML标签9.标签同步修改10.格式化html,css,js11.区分括号12.快速…

Vue3更新Package.json版本号

由于我之前已经更新过了&#xff0c;下面的方法提示我已经是最新的了&#xff0c;记录一下&#xff0c;过段时间在测试一下 npm install -g vue/clivue upgrade

面试算法-113-打家劫舍

题目 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放…

DHCP中继配置示例

DHCP&#xff0c;属于应用层的协议&#xff08;使用UDP协议封装&#xff0c;客户端端口&#xff1a;68&#xff0c;服务器端端口&#xff1a;67&#xff0c;中继端的端口&#xff1a;67&#xff09; 两种配置方式&#xff1a;1、接口配置&#xff1b;2、全局配置。 ipconfig …

Redis-指定配置启动

基础篇Redis 3.3.5.指定配置启动 如果要让Redis以后台方式启动&#xff0c;则必须修改Redis配置文件&#xff0c;就在我们之前解压的redis安装包下&#xff08;/usr/local/src/redis-6.2.6&#xff09;&#xff0c;名字叫redis.conf&#xff1a; 我们先将这个配置文件备份一份…

微信小程序版本更新检测

app.vue文件 <script>export default {onLaunch: function() {console.log(App Launch)// #ifdef MP-WEIXINthis.getUpdateManager();// #endif},methods: {// 检测小程序更新getUpdateManager() {const updateManager wx.getUpdateManager();updateManager.onCheckFor…

JS基础之 数据浅拷贝与深拷贝

一、拷贝背景 JS引用数据类型有两类&#xff1a;基本数据类型和引用数据类型&#xff1b; 基本类型&#xff1a;String&#xff0c;Number&#xff0c;Boolean&#xff0c;Null&#xff0c;Undefined&#xff0c;symbol这6种基本数据类型它们是直接按值存放的&#xff0c;所以…

Day21代码随想录(1刷) 二叉树

530. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#xff1a;1示例 2&#xff1…

微信小程序实现图片懒加载的4种方案

实现图片懒加载的意义 实现图片懒加载可以提高小程序的性能和用户体验&#xff0c;是微信小程序开发中非常重要的一项优化手段。微信小程序实现图片懒加载的目的主要有以下几点&#xff1a; 提高页面加载速度&#xff1a;图片通常是页面中最耗时的资源&#xff0c;如果一次性…

【Java项目】基于jspssm的高校二手交易平台

目录 背景 技术简介 系统简介 界面预览 背景 随着互联网技术的不断进步&#xff0c;高校二手交易市场通过网络平台得到了显著的扩展。开发这一平台时&#xff0c;首要任务是深入挖掘并满足用户的实际需求&#xff0c;通过精准把握用户需求来构建一个专门化的高校二手交易系…

Linux下的I/O模型

目录 一、什么是IO&#xff1f; 二、IO操作的两个阶段 三、五种I/O模型 1、阻塞I/O(blocking I/O) 2、非阻塞I/O(non-blocking I/O) 3、多路复用I/O(multiplexing I/O) 4、信号驱动I/O(signal-driven I/O) 5、异步I/O(asynchronous I/O) 四、五种I/O模型比较 一、什么…

3.25作业

定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream>using namespace std;namespace…

Ansys Zemax | 在 MATLAB 或 Python 中使用 ZOS-API 进行光线追迹的批次处理

附件下载 联系工作人员获取附件 这篇文章会说明如何在 MATLAB 或 Python 中以 Zemax OpticStudio 应用程式介面 (ZOS-API)处理光线数据库(Ray Database, ZRD)档案&#xff0c;过程中我们将使用ZRDLoader.dll。本文提供了在 Matlab 中批次处理序列光线追迹(一般、归一化、偏振…