Я использую функции SURF для регистрации изображений. У меня есть изображения типа uint16
.
pts1 = detectSURFFeatures(image)
Когда я использовал вышеуказанную функцию на uint16
изображениях, функция возвращала 0 пунктов SURF. В качестве обходного пути я использовал преобразование изображений в uint8
, после чего функция возвращала хорошее количество обнаруженных точек SURF. Таким образом, функция работала на uint8
изображениях, но не на uint16
.
Обратите внимание, что функция не показывает никаких ошибок. Он выполняется успешно, но SURFPoints object
вернул 0 очков SURFP.
Почему это происходит? Документация вышеуказанной функции говорит, что изображение может быть single, double, uint8, uint16, int16 and logical
. Тогда почему эта функция не работает на uint16
изображениях, которые я использую?
Я экспериментировал, конвертируя изображение в double
тип данных. Это не сработало. Работало только когда я конвертировал изображение в uint8
.
Извините, я не могу поделиться изображениями, поскольку они являются конфиденциальными данными, но кто-нибудь здесь сталкивался с подобными проблемами?
Я мог бы продолжить преобразование в uint8
, но это создает какую-то другую проблему, поэтому я хочу знать решение фундаментальной проблемы.
Я использую MATLAB 2017.