我想在场景中找到多个对象(对象看起来相同,但可能在比例和旋转方面有所不同,我不知道要检测的对象是什么)。我已经基于OpenCV中的featuredetectors实现了以下想法:
detect and compute keypoints from the object
for i < max_objects_todetect; i++
1. detect and compute keypoints from the whole scene
2. match scene and object keypoints with Flannmatcher
3. use findHomography/Ransac to compute the boundingbox of the first object (object which hast the most keypoints in the scene with multiple objects)
4. set the pixel in the scene, which are within the computed boundingbox to 0, -> in the next loopcycle there are no keypoints for this object to detect anymore.
这个实现的问题是我需要多次计算场景的关键点,这需要很多计算时间(250ms)。有没有人有更好的想法来检测多个对象?
谢谢Drian
答案 0 :(得分:0)
Hello togehter我尝试了ORB,这确实更快,我会尝试Akaze。
在测试ORB时,我遇到了以下问题:
虽然chaning我的图片大小不会影响Surf中检测到的关键点(在小图片和大图片中找到相同的关键点(在链接的图片右边)),它会影响ORB检测到的关键点。在小picute中,我无法找到这些关键点。我尝试使用ORB参数进行试验,但无法使其正常工作。
图片:http://www.fotos-hochladen.net/view/bildermaf6d3zt.png
SURF:
cv::Ptr<cv::xfeatures2d::SURF> detector = cv::xfeatures2d::SURF::create(100);
ORB:
cv::Ptr<cv::ORB> detector = cv::ORB::create( 1500, 1.05f,16, 31, 0, 2, ORB::HARRIS_SCORE, 2, 10);
您是否知道是否可以检测相同的关键点,而不管图片大小如何?
Greetings Drian