Алгоритм обнаружения углов Харриса и Стивенса: определитель всегда равен 0 (ноль)

В рамках своей дипломной работы я пытаюсь реализовать детектор углов с помощью алгоритма Харриса и Стивенса: Комбинированный детектор углов и краев

Я вычисляю:

  1. X- и y-отклонения с фильтрами Собеля (3x3)
  2. Рассчитать системную матрицу M

    M = [A C; C B]

    что означает, если я получил все в порядке:

    1. A = Response of sobel_x squared: Ix * Ix (at certain pixel)
    2. B = ответ sobel_y в квадрате: Iy * Iy (в определенном пикселе)
    3. C = ответ sobel_x, умноженный на ответ sobel_y: Ix * Iy (в определенном пикселе)
  3. теперь я вычисляю трассировку (M) и что меня особенно беспокоит: определитель (M)

В этой статье они предлагают следующее приближение для определителя, поскольку оно позволяет избежать дорогостоящего вычисления собственных значений:

дет (М) = А * В - С ^ 2

Это должно всегда заканчиваться на Zero!

Выражение det(M) = A * B - C^2 можно переписать как: (используя знание пункта 2)

дет(М) = А * В - С * С

det(M) = Ix*Ix * Iy*Iy - Ix*Iy * Ix*Iy

det(M) = Ix*Ix * Iy*Iy - Ix*Ix * Iy*Iy

дет (М) = 0

Так почему я должен даже беспокоиться о вычислении определителя? Насколько я вижу, достаточно вычислить след! (Или я где-то допустил серьезную ошибку?)


person muuh    schedule 25.02.2013    source источник
comment
Вы имели в виду для матрицы M = [A C; C B]? В противном случае я понятия не имею, что B имеет в виду.   -  person hardmath    schedule 25.02.2013


Ответы (2)


Прежде чем вычислять R, примените ядро ​​Гаусса к Ix2, Iy2, Ixy.

person hakunami    schedule 13.11.2013
comment
Чтобы уточнить это: кажется, что матрица M должна фактически включать суммирование условий градиента для окна вокруг пикселя. Таким образом, определяющие члены не должны сокращаться. См. этот другой пост для получения дополнительной информации: stackoverflow.com/questions/16803587/ - person Patrick Finnigan; 12.04.2015

Я столкнулся с той же проблемой. Для каждого пикселя изображения вы хотите рассмотреть небольшое окно, скажем, 3x3 вокруг пикселя.

Для каждого пикселя в этом окне 3x3 вы применяете к нему гауссову маску для Ix^2, Ix*Iy и Iy^2, чтобы построить матрицу 2x2 H'. Затем вы суммируете матрицы H', чтобы получить окончательную матрицу H, и вычисляете определитель оттуда.

Что мне не ясно, так это то, почему необходимо применять маску Гаусса, поскольку многие слайды и ресурсы, найденные в Интернете, не упоминают об этом.

person Jay Hu    schedule 19.04.2015