在Matlab中查找连接的组件会给出错误的结果
我有一个60×90×10的二值3D图像。使用以下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
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)的图像。也许这有帮助。。。