Почему OpenCV хорошо справляется с обнаружением ORB и ключевых точек Харриса для крупномасштабных изображений?

Несколько недель назад я посетил вебинар Arrayfire, организованный NVIDIA, и инженеры представили несколько интересных графиков для сравнения производительности библиотеки ArrayFire с процессором OpenCV (1 поток) и графическим процессором (CUDA).

Обнаружение ключевых точек HARRIS

Обнаружение ключевых точек Харриса

Обнаружение ключевых точек ORB

введите здесь описание изображения

У меня была возможность спросить их, почему ускорение ArrayFire (по сравнению с однопоточной реализацией ЦП) уменьшается для больших изображений. Они ответили мне, что "это произошло из-за того, что ЦП OpenCV очень эффективно обрабатывал крупномасштабные данные" - без каких-либо технических подробностей.

У вас есть идеи о том, что они могут быть?


person Djeb    schedule 23.12.2014    source источник
comment
ммм... интересно. Я думаю, что это что-то связанное с инструкциями SEE.   -  person    schedule 24.12.2014


Ответы (1)


Я тот, кто реализовал Harris и ORB на ArrayFire и на самом деле построил графики, которые вы опубликовали. Используемые образцы изображений были разными, поэтому они имеют разные функции и разное соотношение пикселей на функцию.

Производительность ORB и Harris зависит как от количества пикселей, так и от характеристик изображения. В ближайшие несколько недель я постараюсь собрать больше данных и получить более стабильное соотношение пикселей к функции, чтобы убедиться, что причина именно в этом.

person pentschev    schedule 30.12.2014