Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sckimage.draw.ELIPLIZE中的draw.ELLPOID和ELIPLIZE_统计信息如何与栅格间距配合使用?_Python_Scikit Image_Drawellipse - Fatal编程技术网

Python sckimage.draw.ELIPLIZE中的draw.ELLPOID和ELIPLIZE_统计信息如何与栅格间距配合使用?

Python sckimage.draw.ELIPLIZE中的draw.ELLPOID和ELIPLIZE_统计信息如何与栅格间距配合使用?,python,scikit-image,drawellipse,Python,Scikit Image,Drawellipse,我正在调查这件事 和skimage.draw.椭球体_stats(a,b,c) 计算半长轴与指定间距的栅格尺寸对齐的椭球体的分析表面积和体积 但是查看他们的代码,并没有关于引入间距的信息。也许我错过了什么 我的问题是: -在知道半径a、b、c和栅格间距的情况下,如何计算椭球体的体积?我正在使用具有不同间距的DICOM CT卷 def ellipsoid_stats(a, b, c): """ Calculates analytical surface area and volum

我正在调查这件事 和skimage.draw.椭球体_stats(a,b,c)

计算半长轴与指定间距的栅格尺寸对齐的椭球体的分析表面积和体积

但是查看他们的代码,并没有关于引入间距的信息。也许我错过了什么

我的问题是: -在知道半径
a、b、c
和栅格间距的情况下,如何计算椭球体的体积?我正在使用具有不同间距的DICOM CT卷

def ellipsoid_stats(a, b, c):
    """
    Calculates analytical surface area and volume for ellipsoid with
    semimajor axes aligned with grid dimensions of specified `spacing`.
    Parameters
    ----------
    a : float
        Length of semimajor axis aligned with x-axis.
    b : float
        Length of semimajor axis aligned with y-axis.
    c : float
        Length of semimajor axis aligned with z-axis.
    Returns
    -------
    vol : float
        Calculated volume of ellipsoid.
    surf : float
        Calculated surface area of ellipsoid.
    """
    if (a <= 0) or (b <= 0) or (c <= 0):
        raise ValueError('Parameters a, b, and c must all be > 0')

    # Calculate volume & surface area
    # Surface calculation requires a >= b >= c and a != c.
    abc = [a, b, c]
    abc.sort(reverse=True)
    a = abc[0]
    b = abc[1]
    c = abc[2]

    # Volume
    vol = 4 / 3. * np.pi * a * b * c

    # Analytical ellipsoid surface area
    phi = np.arcsin((1. - (c ** 2 / (a ** 2.))) ** 0.5)
    d = float((a ** 2 - c ** 2) ** 0.5)
    m = (a ** 2 * (b ** 2 - c ** 2) /
         float(b ** 2 * (a ** 2 - c ** 2)))
    F = ellip_F(phi, m)
    E = ellip_E(phi, m)

    surf = 2 * np.pi * (c ** 2 +
                        b * c ** 2 / d * F +
                        b * d * E)

    return vol, surf
def椭球体_统计数据(a、b、c):
"""
使用计算椭球体的分析表面积和体积
半长轴与指定“间距”的栅格尺寸对齐。
参数
----------
a:浮动
与x轴对齐的半长轴长度。
b:浮动
与y轴对齐的半长轴长度。
c:浮球
与z轴对齐的半长轴长度。
退换商品
-------
卷:浮动
椭球体的计算体积。
冲浪:漂浮
椭球体的计算表面积。
"""
如果(a=c和a!=c。
abc=[a,b,c]
abc.sort(反向=真)
a=abc[0]
b=abc[1]
c=abc[2]
#卷
vol=4/3.*np.pi*a*b*c
#解析椭球面面积
φ=np.arcin((1.-(c**2/(a**2.))**0.5)
d=浮动((a**2-c**2)**0.5)
m=(a**2*(b**2-c**2)/
浮动(b**2*(a**2-c**2)))
F=椭圆F(φ,m)
E=椭圆(φ,m)
surf=2*np.pi*(c**2+
b*c**2/d*F+
b*d*E)
返回卷,冲浪

scikit函数提供以像素为单位的结果-因此,表面积以像素为单位(如果您有2D图像),体积以像素为单位^2

对于图像,若要将其转换为mm和mm^2,则需要查找PixelSpacing标记以获得每个像素的大小(单位为mm),并使用该值转换单位

如果您使用的是pydicom,那么您可以使用.PixelSpacing[0]。PixelSpacing是一个2元素列表,但我知道的所有CT都具有相同的行/列像素间距,因此仅使用列表PixelSpacing[0]中的第一个元素就足够了