Jak wybrać najlepszy zestaw parametrów w algorytmie wykrywania Canny Edge zaimplementowanym w openCV?

Pracuję z openCV na platformie Android. Dzięki ogromnej pomocy tej społeczności i techników jestem w stanie skutecznie wykryć arkusz z obrazu. Oto krok, którego użyłem.

1.Imgproc.cvtColor()
 2.Imgproc.Canny()
 3.Imgproc.GausianBlur()
 4.Imgproc.findContours()
 5.Imgproc.approxPolyDP()
 6.findLargestRectangle()
 7.find the vertices of the rectangle
 8.find the vertices of the rectangle top-left anticlockwise order using center of mass approach
 9.find the height and width of the rectangle just to maintain the aspect ratio and do warpPerspective transformation.

Po zastosowaniu wszystkich tych kroków mogę łatwo uzyskać dokument lub największy prostokąt z obrazu, ale to w dużym stopniu zależy od różnicy w intensywności tła i arkusza dokumentu. Jak krawędź Canny'ego działa na zasadzie gradientu intensywności, różnica w intensywność jest zawsze przyjmowana od strony implementacji. Dlatego Canny wziął pod uwagę różne parametry progowe.

Niższa temperaturaHeigher Thershold

Jeśli więc gradient intensywności piksela jest większy niż wyższy próg, zostanie dodany jako piksel krawędziowy na obrazie wyjściowym. Piksel zostanie całkowicie odrzucony, jeśli jego wartość gradientu intensywności jest niższa niż próg dolny. A jeśli piksel mieć intensywność między dolnym i wyższym progiem, będzie dodany tylko jako piksel krawędzi, jeśli jest podłączony do dowolnego innego piksela o wartości większej niż próg wyższy.

Moim głównym celem jest wykorzystanie wykrywania krawędzi Canny'ego do skanowania dokumentów, więc chcę wiedzieć, jak dynamicznie obliczyć ten próg, aby mógł on działać w obu przypadkach ciemnego i jasnego tła.

Próbowałem dużo, ręcznie dostosowując parametry, ale nie mogłem znaleźć powiązanego statku ze scenariuszami.

Mam nadzieję, że wyjaśnię swój punkt widzenia i z góry dziękuję

questionAnswers(2)

yourAnswerToTheQuestion