Что означает ksize и k в углу Харриса? - PullRequest
0 голосов
/ 16 февраля 2019

Я играл с функцией cornerHarris в OpenCV.Я не мог понять, что означают ksize и k в функции.В документации упоминаются ksize, чтобы быть Aperture parameter of Sobel derivative used и k, чтобы быть Harris detector free parameter in the equation, но я не уверен, что это действительно означает?

Может ли кто-нибудь помочь мне понять?

Iпопытался обнаружить углы в кубе, и получилось так:

enter image description here

с простым кодом, который я использовал из документации:

    import cv2
    import numpy as np

    filename = "cube.jpg"

    img = cv2.imread("./images/{}".format(filename))

    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    gray = np.float32(gray)
    dst = cv2.cornerHarris(gray,12,3,0.04)

    dst = cv2.dilate(dst,None)

    # Threshold for an optimal value, it may vary depending on the image.
    img[dst>0.01*dst.max()]=[0,0,255]

    cv2.imshow('dst',img)
    if cv2.waitKey(0) & 0xff == 27:
        cv2.destroyAllWindows()

Я пытался настроить K, но не мог понять его роль, хотя понял, что увеличение его до предела привело к обнаружению нулевого угла.

1 Ответ

0 голосов
/ 16 февраля 2019

Детектор углов Харриса используется для извлечения углов из изображений в градациях серого.Детектор Харриса сначала вычисляет градиент изображения, а затем вычисляет ковариацию градиента, которая является приблизительной величиной локального гессиана.

Он имеет 4 основных шага:

  1. Обнаружение краев (расчет пространственной производной). Первый шаг - преобразование изображения в градациях серого в изображение краев.Есть много способов сделать это, но cv2 использует фильтр, называемый ядром Собеля, который взаимно коррелирует с исходным изображением.Параметр ksize определяет размер ядра Собеля (3x3, 5x5 и т. Д.).При увеличении размера все больше пикселей становятся частью каждого процесса свертки, а края становятся более размытыми .

  2. Настройка тензора структуры - в основноммы строим матрицу M, которая представляет направление градиентов (ребер) в каждой точке изображения.Затем эту матрицу можно использовать для определения того, какие из краевых пикселей являются углами:

enter image description here

Расчет ответа Харриса - на этом шаге мы рассчитываем «угловую оценку» R каждого краевого пикселя.Идея состоит в том, что пиксель определяется как угол, только если он имеет большие градиенты в 2 перпендикулярных направлениях, что означает, что матрица М имеет 2 больших собственных значения (1 большое собственное значение будет просто ребром).Здесь мы видим свободный параметр детектора Харриса - k .Это эмпирически определенная константа в диапазоне [0,04,0.06]:

enter image description here

Параметр k позволяетвлияние на этом шаге, компромисс между точностью и отзывом.Таким образом, с большим k вы получите меньше ложных углов , но при этом вы также пропустите более реальные углы (высокая точность), а при меньшем k вы получите намного больше углов , поэтомувы пропустите менее истинные углы, но получите много ложных (высокий отзыв).

Не максимальное подавление - максимумы угловых пикселей в каждой локальной области найдены, а остальные подавлены.
...