Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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
在Matlab中查找连接的组件会给出错误的结果_Matlab_Image Processing_Multidimensional Array_3d_Cluster Analysis - Fatal编程技术网

在Matlab中查找连接的组件会给出错误的结果

在Matlab中查找连接的组件会给出错误的结果,matlab,image-processing,multidimensional-array,3d,cluster-analysis,Matlab,Image Processing,Multidimensional Array,3d,Cluster Analysis,我有一个60×90×10的二值3D图像。使用以下Matlab代码,我正在图像中搜索1s的连接体素: conn = 26; CC = bwconncomp(img, conn); stats = regionprops(CC,'pixellist'); 真正奇怪的是,stats返回的坐标在3D图像之外 例如 voxels = stats(6).PixelList; voxels(23,:) 我得到了[61,15,4]的三维坐标 这里怎么了?关于这个问题,我还担心连接组件的计算是错误的 这是3D

我有一个60×90×10的二值3D图像。使用以下Matlab代码,我正在图像中搜索
1
s的连接体素:

conn = 26;
CC = bwconncomp(img, conn);
stats = regionprops(CC,'pixellist');
真正奇怪的是,stats返回的坐标在3D图像之外

例如

voxels = stats(6).PixelList;
voxels(23,:)
我得到了
[61,15,4]
的三维坐标

这里怎么了?关于这个问题,我还担心连接组件的计算是错误的


这是3D图像(如.mat文件):

您的.mat文件显示了一个大小为60x90x10的矩阵,这意味着60行、90列和10个波段,因此y=60、x=90和z=10

看起来计算是正确的,你只是对你的初始图像大小感到困惑。。。没有切换任何内容,您的图像与您假设的大小不同:-)(请尝试
imagesc(img(:,:,1))
查看!)


这个行/列与x/y的比较可能很烦人,我知道根据经验…

从脚趾开始,
PixelList
[x y z…]的形式返回坐标。
。我的猜测是它在切换
x
y
,因为它们通常表示
,而不是访问矩阵时默认的
。不管怎样,那太奇怪了!为什么y代表行?在矩阵中,通常行是第一个索引,列是第二个索引,所以行=x,列=y。使用大小(M,1)也可以得到行数…然而,我得到的是(61,15,4)的三维坐标,如果我想在img中查找它,我必须使用img(15,61,4)。这是对的吗?但是再想想:行是在垂直方向上计数的,因此Y(在2D情况下),columns=horizontal=X(至少MATLAB是这样认为的)。显示您的图像并查看!带有60x90x10的矩阵表示宽度为90(=X)且高度为60(=Y)的图像。也许这有帮助。。。