2013年2月15日金曜日

OpenCVでベクトルから長さと角度を計算する


Sobelなどでx方向、y方向のエッジ強度を求めたあと

cv::Matの形式のままだと

cv::cartToPolar(matX, matY, magnitude, angle, true);

を使用すれば一度に変換することができる。

補足:
cv::cartToPolarの入力データの形式は、短精度か倍精度の浮動小数点なので、sobelの出力の形式をあわせておく必要がある CV_32Fなど


各要素ごとに計算する場合は、

cv::norm(cv::Point(x , y));
cv::fastAtan2(y , x);
を使用することになる

注意
双方とも角度の結果は、0-360となり、精度は0.3である
cv::Point(0,0)の角度は、0になるので、ヒストグラムを計算する場合除外しなければいけない

0 件のコメント:

コメントを投稿