Mam zdjęcie zrobione aparatem telefonu komórkowego z ostrością na jego części, powiedzmy twarz lub cokolwiek innego. Chcę wiedzieć - w przybliżeniu - gdzie jest skupiony obszar. Na przykład obwiednia wokół wybranego obszaru. przykład:
Mam zdjęcie zrobione aparatem telefonu komórkowego z ostrością na jego części, powiedzmy twarz lub cokolwiek innego. Chcę wiedzieć - w przybliżeniu - gdzie jest skupiony obszar. Na przykład obwiednia wokół wybranego obszaru. przykład:
Odpowiedzi:
Zasadniczo jest to problem z segmentacją obrazu ( http://en.wikipedia.org/wiki/Image_segmentation ), w którym próbowałbyś izolować skupione obszary na nieostrych obszarach obrazu.
Soczewki optyczne i tak są równoważne filtrom dolnoprzepustowym, a efektem filtra dolnoprzepustowego na sygnał jest wygładzenie go przez ograniczenie zawartości wyższej częstotliwości.
W cyfrowym przetwarzaniu obrazu niskie częstotliwości odpowiadają dużym obiektom (forma ogólna), a wyższe częstotliwości odpowiadają małym obiektom (szczegóły).
Dlatego, aby wyizolować obszar zogniskowany, możesz szukać obszarów o wyższym standardowym odchyleniu w stosunku do rozmytych obszarów, które byłyby przy niższym standardowym odchyleniu z powodu wygładzania obiektywu nieostrego.
Aby rozróżnić regiony „zamazane” od „niewyraźnych”, możesz ustawić „okno” wymiarów i przesuń go po swoim obrazie.
W każdej pozycji okna oblicz wariancję wartości „łatki” tak, jakby były one jednowymiarowym wektorem wartości. Spowoduje to powstanie kolejnego „obrazu” (lub bardziej ogólnie dwuwymiarowej tablicy) przedstawiającego odmianę odchylenia standardowego w każdym miejscu obrazu. Następnie możesz zebrać wszystkie te wartości i uzyskać ich histogram. Histogram wykaże rozkład multimodalny (więcej informacji można znaleźć na stronie http://en.wikipedia.org/wiki/Multimodal_distribution ).
W przypadku obrazu w poście histogram może wykazywać dwa tryby. Jedna odpowiada stosunkowo wysokim wartościom odchylenia standardowego (obszar skupiony), a druga odpowiada stosunkowo niskim wartościom odchylenia standardowego (obszary rozmyte).
Następnie możesz ustawić próg, na przykład tylko między dwoma trybami, aby ustalić kryterium między regionami zogniskowanymi i nieostre, a następnie wybrać wszystkie „łatki” (lub obszary okna MxN), których odchylenie standardowe jest wyższe niż próg. (Aby uzyskać więcej informacji, zobacz: http://en.wikipedia.org/wiki/Thresholding_%28image_processing%29 )
To wyodrębni dla ciebie skupione części obrazu.
Mam nadzieję że to pomoże.
Oto łatwiejsze podejście, które nie wymaga analizy okna przesuwnego.
Konwertuj obraz na skalę szarości (nie jest to wymagane, ale dla zachowania przejrzystości założę, że masz tylko jeden kanał)
Oblicz gradient w obu kierunkach
Oblicz wielkość (lub po prostu wyrównaj gradient)
Zsumuj oba obrazy gradientowe w obu kierunkach
Jak już powiedziano, zogniskowana część obrazu będzie miała wyższe częstotliwości niż nieostry obszar. Po podsumowaniu otrzymasz dwie projekcje, w których występuje duża zmienność (wyższe wartości) w tej części, w której skupiony obiekt jest umieszczony wzdłuż tego kierunku. Możesz teraz wykonać następujące czynności:
Określ punkt początkowy i końcowy tych wyższych wartości. Możesz użyć prostego progu (np. 0,7 * maksymalna_wartość) lub wygładzić profile, wziąć drugą pochodną i sprawdzić tam najwyższe wartości.
Pozycje Start / Stop z poprzedniego kroku podają pozycje pikseli w obu kierunkach, w których należy umieścić prostokąt wskazujący obszar ostrości.