skimage求凸包、包络

2024-03-26 13:28
文章标签 包络 skimage 求凸包

本文主要是介绍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

这篇关于skimage求凸包、包络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848649

相关文章

【Opencv】rgb2hsv与skimage_hsv的差别

import cv2​​​​​​​from skimage.color import rgb2hsvcv_HSV = cv2.cvtColor(img_RGB, cv2.COLOR_RGB2HSV)skimage_HSV = np.array(rgb2hsv(img_RGB) * 255).astype(np.uint8) 如上面的代码所示,cv2.cvtColor使用cv2.COLOR_R

skimage包的小优化(2):模仿remove_small_objects()函数保留图片中连通域最大的区域

python模仿remove_small_objects()函数保留图片中连通域最大的区域 skimage包的morphology子模块中,提供了一个remove_small_objects()函数,可以通过自己设定的连通域面积阈值有效去掉图片中的噪点,但是在具体使用过程中会发现:这个函数使用起来还有诸多的不便,好在这个函数的源代码并不长,在在skimage包的小优化(1):模仿remove_s

skimage.io.imsave保存图像注意类型

深度学习接触一段时间也慢慢有些东西要改一些了,基本的就是图像的操作。我前面的《图像目标分割》文档有个错误,就是关于imsave()的,说要乘以256,实际上应该是255。更准确的说,要根据类型看。例如: import skimage.ioimage_png = skimage.io.imread('/tmp/test_png.png')image_new = rgba2rgb(image_pn

希尔伯特 包络证明 未出现模态混合现象 是啥?

希尔伯特变换在信号处理中常用于求信号的包络,它是一种线性运算,能够将实数信号转换为其解析信号,即包含原信号及其希尔伯特变换的复数信号。解析信号的实部是原信号,虚部是原信号的希尔伯特变换。 包络证明 在信号处理中,"包络证明"通常指的是使用希尔伯特变换来估计信号的包络的过程,并且在这个过程中没有出现所谓的“模态混合”现象。 希尔伯特变换求包络: 信号的希尔伯特变换可以表示为解析信号的虚部,记作

直方图匹配from skimage.exposure import match_histograms

from skimage.exposure import match_histograms match_histograms 的实现非常简洁有效。直方图匹配或者直方图规定化 import cv2import numpy as npfrom matplotlib import pyplot as pltdef match_histograms(image, reference, *, cha

ImportError: cannot import name ‘compare_mse‘ from ‘skimage.measure‘

问题描述  在复现模型代码的时候遇到错误:ImportError: cannot import name 'compare_mse' from 'skimage.measure' 。 解决方案 这是由于 scikit-image 的版本问题,由于scikit-image版本升级后就修改了库函数。 方法1(修改scikit-image版本,不推荐): pip install sci

Skimage, ImageDataGenerator()图片处理 ,numpy的ravel()和flatten()函数比较, 统计一个序列list中相同元素个数

Python 基础: # numpy 将数组打乱顺序 np.random.shuffle(array) super() 函数是用于调用父类(超类)的一个方法。 super 是用来解决多重继承问题的,直接用类名 调用父类方法在使用单继 class A:def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super

【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,包络熵,散布熵,究竟实现了什么?(第六篇)——“散布熵”及其MATLAB实现

今天讲散布熵,之前用了几篇文章分别讲述了功率谱熵、奇异谱熵、能量熵、近似熵、样本熵、模糊熵、排列熵、包络熵这8种类型的熵: Mr.看海:【熵与特征提取】基于“信息熵”的特征指标及其MATLAB代码实现(功率谱熵、奇异谱熵、能量熵) Mr.看海:【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第一篇)——“近似熵”及其MATLAB实现 Mr.看海:【熵与特征提取】从

用Skimage学习数字图像处理(021):图像特征提取之线检测(下)

本节是特征提取之线检测的下篇,讨论基于Hough变换的线检测方法。首先简要介绍Hough变换的基本原理,然后重点介绍Skimage中含有的基于Hough变换的直线和圆形检测到实现。 目录 10.4 Hough变换 10.4.1 原理 10.4.2 实现 10.4 Hough变换 Hough变换(霍夫变换)是一种在图像处理和计算机视觉中广泛使用的技术,是由Paul Hough在196