MATLAB ind2sub不是sub2ind的逆
我实现了一个图像处理算法,需要用一条线扫描图像。我将线的有效点生成为两个向量:MATLAB ind2sub不是sub2ind的逆,matlab,Matlab,我实现了一个图像处理算法,需要用一条线扫描图像。我将线的有效点生成为两个向量:lx\u valid,和ly\u valid。然后我用sub2ind生成线性索引,并绘制结果。如您所见,我的线与对象明显相交,但运行代码后,locmax==0。坐标均有效(在图像内);但我得到了一个更奇怪的结果:如果我将坐标生成为ind2sub(size(Im),c),我甚至不会返回坐标。我肯定是小东西,但我拿不到 valid = lx >= 1 & size(Im, 2) >= lx &
lx\u valid
,和ly\u valid
。然后我用sub2ind
生成线性索引,并绘制结果。如您所见,我的线与对象明显相交,但运行代码后,locmax==0
。坐标均有效(在图像内);但我得到了一个更奇怪的结果:如果我将坐标生成为ind2sub(size(Im),c)
,我甚至不会返回坐标。我肯定是小东西,但我拿不到
valid = lx >= 1 & size(Im, 2) >= lx & ly >= 1 & size(Im, 1) >= ly;
lx_valid = lx(valid);
ly_valid = ly(valid);
c = sub2ind(size(Im), ly_valid, lx_valid);
locmax = max(Im(c));
imshow(Im);plot(lx_valid,ly_valid,'go');
我解决了这个问题:sub2ind生成的索引被统计,并作为uint16无声地返回。如果我将参数转换为double,sub2ind将返回一个double值,该值对于索引来说足够大
valid = lx >= 1 & size(Im, 2) >= lx & ly >= 1 & size(Im, 1) >= ly;
lx_valid = double(lx(valid));
ly_valid = double(ly(valid));
c = sub2ind(size(Im), ly_valid, lx_valid);
locmax = max(Im(c));
imshow(Im);plot(lx_valid,ly_valid,'go');
你能打印尺寸(Im)吗?(以防万一是3d)有趣。我生成了一些合成数据,对我来说效果很好。也许您可以在代码中添加
Im
生成?也许像奥利建议的那样,Im
是3D的?