たとえば、2 つの画像があります。最初の画像は通常の画像で、2 番目の画像は色が反転したものです (つまり、255 - ピクセルの色の値)。
OpenCV とLowe paperを使用して両方に SIFT アルゴリズムを適用したので、各画像のキー ポイントと記述子が得られました。
KeyPoints の位置は一致しますが、KeyPoints の向きと Descriptors の値は一致しません。これは、色が反転しているためです。
誰かがそのような問題を解決しようとしていますか?
さらに 、グラデーションの例を次に示します。
このチュートリアルと modules/nonfree/src/sift.cpp ファイルを使用して OpenCV C++ 実装を使用しています。さらに、グラデーションを調べるために次の方法を作成しました。
void MINE::showKeypoints(cv::Mat image, std::vector<cv::KeyPoint> keypoints, string number)
{
cv::Mat img;
image.copyTo(img);
for(int i=0;i<(int)keypoints.size();i++)
{
cv::KeyPoint kp = keypoints[i];
cv::line(img, cv::Point2f(kp.pt.x ,kp.pt.y), cv::Point2f(kp.pt.x ,kp.pt.y), CV_RGB(255,0,0), 4);
cv::line(img, cv::Point2f(kp.pt.x ,kp.pt.y), cv::Point2f(kp.pt.x+kp.size*cos(kp.angle),kp.pt.y+kp.size*sin(kp.angle)), CV_RGB(255,255,0), 1);
}
cv::imshow (str, img);
}
グラデーションの例。
ご覧のとおり、反転した画像と元の画像のグラデーションは反対ではありません