Chcę znaleźć linię między kolorem niebieskim a kolorem szarym na poniższym obrazku:
Dokładniej, punkty końcowe tej linii.
Czy transformacja Hougha jest wyborem? Jeśli tak, jak powinienem skonfigurować zdjęcie przed użyciem Hough?
Każdy sposób rozwiązania tego byłoby pomocne.
Odpowiedzi:
Ogólnie rzecz biorąc, potrzebujesz detektora krawędzi, takiego jak detektor krawędzi Canny, do tego rodzaju problemów. Transformacja Hougha jest przydatna do wydobywania linii, a nie krawędzi.
Jednak w tym konkretnym przypadku lepiej jest zrobić coś takiego:
ponieważ jest to taki prosty obraz.
źródło
W przypadku obrazu to proste jądro splotowe, takie jak poniżej, ładnie znajdzie krawędzie:
[-1 2–1]
Daje to pojedynczy piksel krawędzi w każdym punkcie krawędzi. Bez kłopotów, bez musów. Canny jest zbyt zaangażowany w ten problem. Jeśli chcesz znaleźć punkty krawędzi dla linii pod dowolnym kątem, możesz użyć prostego Laplaciana, Laplaciana Gaussa (LoG) lub Różnicy Gaussa (DoG). Sobel i Prewitt są również proste, ale nieodpowiednie, ponieważ dają linię „podwójnej grubości”.
Istnieje zła szybka implementacja Hougha opisana tutaj: http://www.ic.uff.br/~laffernandes/projects/kht/index.html
Istnieją również „bezparametrowe algorytmy Hougha”, które są bardzo szybkie, ale nieco trudne do wdrożenia i debugowania.
źródło