MATLAB ind2sub不是sub2ind的反转

时间:2012-10-05 15:58:56

标签: matlab

我实现了一个图像处理算法,需要用一条线扫描图像。我将该行的有效点生成为两个向量:lx_validly_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');

imshow(Im);plot(lx_valid,ly_valid,'go'); works as expected

1 个答案:

答案 0 :(得分:2)

我解决了这个问题: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');