Revision 9f72be66724fd1b8f970896b1f87aa663b8d420c authored by abbieneininger on 18 October 2023, 15:49:07 UTC, committed by GitHub on 18 October 2023, 15:49:07 UTC
1 parent 0cc0815
Raw File
binaryMeasure.py
from skimage.measure import label, regionprops
import numpy as np
import math

def binaryMeasure(binary, xres):
    binary = np.array(binary)
    mask = binary > 0
    label_img = label(mask)
    regions = regionprops(label_img)
    headerKeys = {"x": 1, 
                    "y": 2, 
                    "length": 3, 
                    "width": 4, 
                    "angle": 6, 
                    "AR": 5,
                    "area": 7,
                    "circ": 8
                    }
    numData = np.zeros((len(regions), 9))
    for i in range(len(regions)):
        if regions[i].minor_axis_length > 0:
            numData[i, 0] = i+1
            centroid = regions[i].centroid
            numData[i, 1] = centroid[1] / xres
            numData[i, 2] = centroid[0] / xres
            numData[i, 3] = regions[i].major_axis_length / xres
            numData[i, 4] = regions[i].minor_axis_length / xres
            if regions[i].minor_axis_length > 0:
                numData[i, 5] = regions[i].major_axis_length / regions[i].minor_axis_length
            radangle = regions[i].orientation
            degangle = np.rad2deg(radangle)
            angle = 90 + degangle
            numData[i, 6] = angle
            numData[i, 7] = regions[i].area / (xres*xres)
            numData[i, 8] = (4*math.pi)*(regions[i].area / regions[i].perimeter)

    return numData, headerKeys

back to top