例如,我有两个图像,其中第一个是规则的,第二个是颜色反转(我的意思是255像素的颜色值)。如何使用SIFT算法与彩色反转图像
我已经使用OpenCV和Lowe paper将SIFT算法应用到他们两个,所以现在我有每个图像的关键点和描述符。
KeyPoints位置确实匹配,但由于颜色反转,KeyPoints方向和描述符值不匹配。
我很好奇有人试图解决这样的问题吗?
此外 这里的梯度示例:
我使用的OpenCV下使用this教程和模块/非游离/ SRC/sift.cpp文件++实现。此外,我做了下面的方法来看待梯度:梯度的
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);
}
例。
正如你可以看到倒置和原始图像的梯度不是相反
难道你只是反转第二种颜色? :D – karlphillip 2013-02-23 15:40:36
不,重点是使SIFt不变色反转,我知道可以将8 bin直方图更改为4 bin,将前4个bin添加到第4个bin并将last 4改为零,但它应该是别的东西。 – fen1ksss 2013-02-23 16:45:34