Ben*_*red 4 python numpy computer-vision scikit-image superpixels
我使用的regionprops
从函数scikit-imag
E(或skimage
)包使用从同一个包SLIC超像素算法分割图像的计算区域的特性。
我需要比函数中计算的那些额外的特征,主要是:标准偏差、偏度、峰度。
我修改了_regionprops.py
使用其他功能作为模板的源代码以包含这些属性:
@property
def sd_intensity(self):
return np.std(self.intensity_image[self.image])
@property
def skew_intensity(self):
return skew(self.intensity_image[self.image])
Run Code Online (Sandbox Code Playgroud)
我知道这是不好的做法,而不是一个长期的解决方案,因为我的代码将无法在另一台机器上运行,或者如果我更新 skimage。
我发现该函数skimage.measure.regionprops()
有一个extra_properties=None
参数,根据文档:
添加不包含在 skimage 中的额外属性计算函数。
我的问题是:我可以用 np.std 得到一个工作示例吗?我真的不知道如何使用这个参数。
谢谢
extra_properties
只需要一个带有区域掩码和强度图像的函数列表作为参数。这是一个快速示例:
from skimage import data, util
from skimage.measure import label, regionprops
import numpy as np
img = util.img_as_ubyte(data.coins()) > 110
label_img = label(img, connectivity=img.ndim)
def sd_intensity(regionmask, intensity_image):
return np.std(intensity_image[regionmask])
def skew_intensity(regionmask, intensity_image):
return skew(intensity_image[regionmask])
props = regionprops(label_img, intensity_image=img,
extra_properties=(sd_intensity, skew_intensity))
Run Code Online (Sandbox Code Playgroud)
您现在可以使用您的函数名称访问您的额外属性
props[0].sd_intensity
>>> 0.4847985617008998
Run Code Online (Sandbox Code Playgroud)
编辑 2021 年 8 月 28 日,更新了示例以实际计算 @CrisLuengo 和 @JDWarner 指出的区域本地统计数据(谢谢大家)