2013-07-12 10 views
12

co to dokładnie znaczy minhessian w następującym przypadkuWhats sens minHessian (Surffeaturedetector)

int minHessian = 50; 

SurfFeatureDetector detector(minHessian); 

Czytałem, że jest to próg ... ale co to znaczy? ... To tylko 50 Punkty kluczowe są wykrywane?

najlepsze odniesieniu

Odpowiedz

26

Aby zdecydować, czy piksela obrazu jest KeyPoint NA POWIERZCHNI przybliżeniem Heskiego matrycy jest zbudowany z pochodnych cząstkowych intensywność obrazu w plastrze wokół piksela. Wyznacznik tej macierzy nazywa się Hesjan i mówi, jak solidny jest ten piksel jako centrum typu blob.

Parametr minHessian jest progiem określającym, z której wartości chcesz zaakceptować punkty kluczowe. W praktyce im wyższy numer, tym mniejsza liczba punktów, które uzyskasz, ale oczekujesz, że będą bardziej powtarzalne (transformacje obrazu w r.t.t), a następnie bardziej użyteczne. Z drugiej strony im niższa wartość to minHessian, tym więcej punktów dostaniesz, ale mogą one być głośniejsze.

W zwykłych obrazach dobrze działa wartość od 400 do 800.

Należy pamiętać, że SurfFeatureDetector nie zapewnia sposobu na wybranie tylko stałej liczby punktów kluczowych. Aby to zrobić, musisz ustawić niski minHessian, posortuj punkty końcowe na podstawie ich wartości Hesjan, a następnie usuń najmniej trwałe.

+5

Krótka notatka na ten temat, dla osób, które potrzebują tego użyć. Możesz uzyskać wartości dla hessianów dla każdego punktu kluczowego w 'kluczach wektorowych ' dla: for (int i = 0; i

+0

@ChronoTrigger: "sortuj wynikowe keypoints przez swoją wartość Hesji "jaką wartość? Czy możesz wyjaśnić znaczenie wartości? Widzę rozmiar, kąt, odpowiedź, oktawę i identyfikator klasy. Co oznaczają wartości? Na przykład. wszystko z wyjątkiem rozmiaru wydaje się dziwne. –