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