处理scikit-image regionprops结果

时间:2018-11-27 14:42:58

标签: python scikit-image

我对Python完全陌生,并且在数据处理方面有些挣扎。到目前为止,我一直在使用Matlab进行大多数数据分析。

我正在使用skimage.measure.regionprops分析图像,该图像输出属性列表。现在,我在子区域中处理图像,并希望更改此列表中的项目。

具体地说,我在处理子图像时将区域切成两半。现在,我要将更新的区域包括在列表中。由于我在分区上工作,因此质心属性无法在完整图像中给我坐标。因此,我想添加偏移值以对此进行纠正。

但是,我无法编辑regionprops输出列表。我首先尝试编辑质心属性,但这是一个元组,并且这些属性显然不可更改。然后,我尝试删除质心字段并用新值替换它,但显然我也根本无法更改属性列表。

有什么方法可以操纵regionprops结果列表?

我正在研究一种解决方法,但是我想知道这是否完全可能...

1 个答案:

答案 0 :(得分:-1)

from skimage.measure import regionprops
import numpy as np

arr = np.zeros((10, 10))

arr[[1, 4, 9], [1, 4, 9]] = 1
arr[[4, 7, 8], [2, 4, 6]] = 2

这将创建一个如下所示的数组:

array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  2.,  0.,  1.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  2.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  2.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.]])


list_from_regprops = regionprops(arr.astype(int))

这将生成您的区域列表,您可以通过索引列表并提取要更改的值来访问,然后使用相同的机制进行覆盖

#list_from_regprops = [r1, r2, r3]


old_centroid_x, old_centroid_y = list_from_regprops[0].centroid
new_centroid_x, new_centroid_y = old_centroid_x + 4, old_centroid_y - 4#for example
list_from_regprops[0].centroid = new_centroid_x, new_centroid_y

这应该可以满足您的需要,只需将0替换为您需要更改的任何索引即可。