Jak mogę wyostrzyć obraz za pomocą OpenCV ?
Istnieje wiele sposobów wygładzania lub rozmywania, ale żaden z nich nie byłby możliwy do wyostrzenia.
image-processing
opencv
AruniRC
źródło
źródło
Możesz wypróbować proste jądro i funkcję filter2D , np. W Pythonie:
Wikipedia zawiera dobry przegląd jąder z kilkoma przykładami tutaj - https://en.wikipedia.org/wiki/Kernel_(image_processing)
źródło
Przykładowy kod dotyczący wyostrzania obrazu przy użyciu algorytmu „maski wyostrzającej” można znaleźć w dokumentacji OpenCV .
Zmiana wartości
sigma
,threshold
,amount
dadzą różne wyniki.źródło
Obraz można wyostrzyć, używając maski wyostrzającej . Więcej informacji na temat nieostrego maskowania można znaleźć tutaj . A oto implementacja Pythona przy użyciu OpenCV:
źródło
amount
to po prostu stopień wyostrzenia. Na przykład wartośćamount
2,0 daje ostrzejszy obraz w porównaniu z domyślną wartością 1,0.threshold
jest progiem dla maski o niskim kontraście. Innymi słowy, piksele, dla których różnica między obrazem wejściowym a rozmazanymi obrazami jest mniejsza niżthreshold
pozostaną niezmienione.Jednym ze sposobów jest połączenie z obrazem samodzielnie utworzonego jądra filtru.
Istnieje inna metoda odejmowania zamazanej wersji obrazu od jego jasnej wersji. Pomaga to wyostrzyć obraz. Należy jednak zachować ostrożność, ponieważ po prostu zwiększamy wartości pikseli. Wyobraź sobie wartość 190 pikseli w skali szarości, która pomnożona przez wagę 2 daje 380, ale jest zmniejszona do 255 ze względu na maksymalny dopuszczalny zakres pikseli. To utrata informacji i prowadzi do wyblaknięcia obrazu.
źródło
Dla jasności w tym temacie należy zwrócić uwagę na kilka kwestii:
Wyostrzanie obrazów to źle postawiony problem. Innymi słowy, rozmycie jest operacją stratną, a powrót z niej na ogół nie jest możliwy.
Aby wyostrzyć pojedyncze obrazy, musisz w jakiś sposób dodać ograniczenia (założenia) dotyczące tego, jakiego rodzaju obrazu chcesz i jak się rozmyło. To jest obszar statystyki obrazu naturalnego. Podejścia do wyostrzania zawierają te statystyki jawnie lub niejawnie w swoich algorytmach (głębokie uczenie jest najbardziej niejawnie zakodowane). Powszechne podejście polegające na zwiększaniu wagi niektórych poziomów rozkładu piramidy Psa lub Laplaciana , które jest uogólnieniem odpowiedzi Briana Burnsa, zakłada, że rozmycie Gaussa zepsuło obraz, a sposób ważenia jest powiązany z założeniami dotyczącymi tego, co było na obrazku.
Inne źródła informacji mogą sprawić, że problem z ostrzeniem będzie słuszny. Typowymi źródłami informacji są wideo poruszającego się obiektu lub ustawienia wielu widoków. Wyostrzanie w tym ustawieniu jest zwykle nazywane super rozdzielczością (co jest bardzo złym określeniem, ale utknęło w kręgach akademickich). Nastąpił metody super-rozdzielczości w OpenCV od dawna .... choć zwykle nie pracuję, że dobrze na rzeczywiste problemy ostatnio sprawdziłem je. Spodziewam się, że głębokie uczenie się również przyniosło wspaniałe rezultaty. Może ktoś napisze w uwagach o tym, co jest warte zachodu.
źródło
Aby wyostrzyć obraz, możemy użyć filtra (jak w wielu poprzednich odpowiedziach)
Najwięcej będzie, gdy mianownik będzie wynosił 1 i będzie maleć wraz ze wzrostem (2,3 ...)
Najczęściej używany jest, gdy mianownik to 3.
Poniżej znajduje się realizacja.
źródło
Spróbuj z tym:
Więcej informacji znajdziesz tutaj .
źródło