3

画像を線でスイープするために必要な画像処理アルゴリズムを実装しました。直線の有効な点を2つのベクトルに生成します:lx_valid、、ly_valid。次に、を使用して線形インデックスを生成しsub2ind、結果をプロットします。ご覧のとおり、私の行はオブジェクトと明確に交差していますがlocmax == 0、コードを実行した後です。座標はすべて有効です(画像内)。しかし、さらに奇妙な結果が1つあり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');  期待どおりに動作します

4

1 に答える 1

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