2015-05-23 1 views
0

Кто-нибудь еще заметил, что результаты от Matlab rgb2hsv() и OpenCV-х cvtColor() (с аргументом их быть CV_BGR2HSV), по всей видимости рассчитывается несколько иначе?MATLAB rgb2hsv() по сравнению с OpenCV cvtColor()

Во-первых, функция MATLAB отображает любой вход изображения в интервал [0,1], в то время как OpenCV поддерживает тот же интервал ввода (т. Е. Изображение с пикселями в [0,255] в RGB сохраняет одинаковый интервал [0,255] в ВПГ).

Но что более важно, при нормализации вывода cvtColor() (например, mat = mat/255) значения не совсем одинаковы.

Я не нашел ничего в документах о конкретных формулах, которые они используют. Может ли кто-нибудь пролить свет на эти различия?

+0

Просто из любопытства, насколько велики ваши отклонения? – fvu

+0

Довольно незначительный ... но достаточно, чтобы это было очевидно. Мы говорим как .04513 против .03777. Достаточно того, что это может повлиять на некоторые приложения CV, но недостаточно для основных вещей. – marcman

ответ

1

Для OpenCV формула находится прямо в документе, на который вы указываете. Для Matlab, посмотрите здесь http://www.mathworks.com/matlabcentral/newsreader/view_thread/269237:

Просто погрузитесь в код - они дали его вам. Просто наведите курсор на на функцию rgb2hsv() в свой код и введите control-d.

+0

Приближается, что вы правы в отношении OpenCV ... Я не прокрутил достаточно далеко – marcman