3

我实现了一个图像处理算法,需要用一条线扫描图像。我将线的有效点生成为两个向量: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);情节(lx_valid,ly_valid,'go');  按预期工作

4

1 回答 1

2

我解决了这个问题:由 sub2ind 生成的索引已饱和,并以 uint16 静默返回。如果我将参数转换为双精度,sub2ind 会返回一个对于索引来说足够大的双精度值。

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');
于 2012-10-05T17:36:56.807 回答