Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
Skimage regionprops功能';s(面积,欧拉数)尺寸在Python中不正确_Python_Matlab_Image Processing_Computer Vision_Scikit Image - Fatal编程技术网

Skimage regionprops功能';s(面积,欧拉数)尺寸在Python中不正确

Skimage regionprops功能';s(面积,欧拉数)尺寸在Python中不正确,python,matlab,image-processing,computer-vision,scikit-image,Python,Matlab,Image Processing,Computer Vision,Scikit Image,我有1797张Mnist图像,我需要提取两个特征(FilledArea、EulerNumber)。我知道如何在Matlab中实现它。我的特征矩阵在Matlab中的大小为1797*2(每个维度为1797),并且是正确的 matlab代码(工作正常) 我想在python中使用Skimage regionprops做同样的事情,但是对于1797个图像,我得到了29350*2个特性(每个特性有29350个道具),根据我的理解应该是1797*2 python代码(工作不正常) 我的方法可能有什么问题?为什

我有1797张Mnist图像,我需要提取两个特征(FilledArea、EulerNumber)。我知道如何在Matlab中实现它。我的特征矩阵在Matlab中的大小为1797*2(每个维度为1797),并且是正确的

matlab代码(工作正常)

我想在python中使用Skimage regionprops做同样的事情,但是对于1797个图像,我得到了29350*2个特性(每个特性有29350个道具),根据我的理解应该是1797*2

python代码(工作不正常)


我的方法可能有什么问题?为什么每个特性都有29350个元素而不是1797个元素?

就像在Matlab中需要一个for循环来计算每个图像的属性一样,在Python中也需要一个for循环。目前,您正在计算单个形状的三维图像(1797,8,8)的属性,而不是1797个形状的二维图像(8,8)。以下是与您所追求的内容相当的Python代码:

features=[]
对于数字图像。图像:
labels=(图像>0).astype(int)#图像中只有一个对象
道具=区域道具(标签、图像)[0]#仅一个对象
特征.附加((props.euler\u编号,props.filled\u区域))

就像在Matlab中需要一个for循环来计算每个图像的属性一样,在Python中也需要一个for循环。目前,您正在计算单个形状的三维图像(1797,8,8)的属性,而不是1797个形状的二维图像(8,8)。以下是与您所追求的内容相当的Python代码:

features=[]
对于数字图像。图像:
labels=(图像>0).astype(int)#图像中只有一个对象
道具=区域道具(标签、图像)[0]#仅一个对象
特征.附加((props.euler\u编号,props.filled\u区域))

是数字。图像是二进制图像吗?如果它们是整数值,
regionprops
可能会为每个不同的强度级别(它解释为标签)生成一个输出。@CrisLuengo,我是图像处理新手,我从这里加载了数据集“”我如何检查此项?链接提到“功能:整数0-16”,所以不是二进制的问题吗?你应该显示你的数据并查看它。这是图像处理的一个优点,它完全是可视化的!:)@CrisLuengo我现在加载了二进制图像,但1000个图像中有91856个是
数字。图像
二进制图像?如果它们是整数值,
regionprops
可能会为每个不同的强度级别(它解释为标签)生成一个输出。@CrisLuengo,我是图像处理新手,我从这里加载了数据集“”我如何检查此项?链接提到“功能:整数0-16”,所以不是二进制的问题吗?你应该显示你的数据并查看它。这是图像处理的一个优点,它完全是可视化的!:)@CrisLuengo i现在加载了二进制图像,但1000张图像得到了91856张
for i = 1:2*N
    img = regionprops(BW(:,:,i),'FilledArea', 'Solidity');
    features(i, 1) = img.EulerNumber;
    features(i, 2) = img.FilledArea;
    clear img;
end
digits = datasets.load_digits()
label_img = digits.images
rps = regionprops(label_img, cache=False)
print(len([r.area for r in rps]))  #29350
print(len([r.euler_number for r in rps]))  #29350