python中的连接组件属性



我想计算二进制图像的连接组件的统计信息。在matlab中我们有

形状测量

    'Area'              'EulerNumber'       'Orientation'               
    'BoundingBox'       'Extent'            'Perimeter'          
    'Centroid'          'Extrema'           'PixelIdxList' 
    'ConvexArea'        'FilledArea'        'PixelList'
    'ConvexHull'        'FilledImage'       'Solidity' 
    'ConvexImage'       'Image'             'SubarrayIdx'            
    'Eccentricity'      'MajorAxisLength' 
    'EquivDiameter'     'MinorAxisLength' 

python中有类似的东西吗?

感谢

刚刚回答了一个类似的问题。使用scikit映像中的regionprops函数来获取Python中的CC属性。

from scipy.ndimage.measurements import label
from skimage.measure import regionprops
label = label(img)
props = regionprops(label)
# get centroid of second object
centroid = props[1].centroid
# get eccentricity of first object
ecc = props[0].eccentricity

regionprops输出的形状测量包括上述问题中列出的所有特征。Python中等效的'PixelIdxList'regionprops输出的coords属性。

我认为openCV的cv2接口可能就是您想要的。

正如我所知,当Matlab试图找到'PixelIdxList'时,将数组视为1D数组,然后计算索引,但在regionprops[i].coords中,返回一个数组数组(2D数组),每个内部数组都有两个元素,通过使用它们可以找到索引值。

类似于x = [[x1,y1],[x2,y2],....,[xn,yn]]。我试图实现Matlab的精确代码,如果你想的话,你可以使用:

import skimage.measure as skme
import numpy as np
 
state = skme.regionprops(image)
for j in range(np.size(state)):
    s1 = state[j].coords
    flg = 0
    if np.size(s1,axis=0)>1:
        flg = 1
        InrList = []
        for k in range(np.size(s1,axis=0)):
            x1, y1 = state[j].coords[k]
            InrList.append(image[x1,y1])
        PixelIdxList.append(InrList)
    if flg == 0:
        x1, y1 = state2[j].coords[0]
        PixelIdxList.append(iamge[x1,y1])
# PixelIdxList is exact out put in Matlab
#STATS = regionprops(image,'PixelIdxList');          matlab
''' EACH ONE TEACH ONE '''

相关内容

  • 没有找到相关文章

最新更新