Jak wyostrzyć obraz w OpenCV?
Jak wyostrzyć obraz za pomocą OpenCV ? Istnieje wiele sposobów wygładzania lub rozmycia, ale nie widziałem wyostrzania.
5 answers
Jedna ogólna procedura jest określona w artykule Wikipedii na temat maskowania unsharp : Używasz filtra wygładzającego Gaussa i odejmujesz wersję wygładzoną od oryginalnego obrazu (w sposób ważony, dzięki czemu wartości stałego obszaru pozostają stałe).
Aby uzyskać wyostrzoną wersję frame
do image
: (obie cv::Mat
)
cv::GaussianBlur(frame, image, cv::Size(0, 0), 3);
cv::addWeighted(frame, 1.5, image, -0.5, 0, image);
Parametry jest coś, co musisz dostosować dla siebie.
Jest też laplacian ostrzenie, powinieneś coś na tym znaleźć kiedy wygooglujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-14 15:36:19
Możesz wypróbować proste jądro i filter2D funkcja, np. w Pythonie:
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
im = cv2.filter2D(im, -1, kernel)
Wikipedia ma dobry przegląd jąder z kilkoma przykładami tutaj - https://en.wikipedia.org/wiki/Kernel_ (image_processing)
W przetwarzaniu obrazu jądro, macierz splotu lub maska jest małą macierzą. Służy do rozmycia, ostrzenia, wytłaczania, wykrywania krawędzi i innych. Osiąga się to poprzez zrobienie splotu pomiędzy jądrem i obraz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-12 10:26:18
Przykładowy kod dotyczący wyostrzania obrazu za pomocą algorytmu "unsharp mask" można znaleźć w dokumentacji OpenCV
Zmiana wartości sigma
,threshold
,amount
Da różne wyniki
// sharpen image using "unsharp mask" algorithm
Mat blurred; double sigma = 1, threshold = 5, amount = 1;
GaussianBlur(img, blurred, Size(), sigma, sigma);
Mat lowContrastMask = abs(img - blurred) < threshold;
Mat sharpened = img*(1+amount) + blurred*(-amount);
img.copyTo(sharpened, lowContrastMask);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-28 12:52:28
Dla jasności w tym temacie, kilka punktów naprawdę powinno być:
Wyostrzanie zdjęć to problem źle postawiony. Innymi słowy, rozmycie jest operacją stratną, a powrót z niej jest ogólnie niemożliwy.
Aby wyostrzyć pojedyncze obrazy, musisz w jakiś sposób dodać ograniczenia (założenia), jakiego rodzaju obrazu chcesz i jak został zamazany. Jest to obszar naturalnej statystyki obrazu. Podejścia do wyostrzania posiadają te statystyki jawnie lub niejawnie w swoich algorytmach (deep learning jest najbardziej niejawnie zakodowany). Wspólne podejście do ważenia niektórych poziomów psa lub Laplacian rozkładu piramidy , które jest uogólnieniem Briana Burnsa odpowiedzi, zakłada, że Gaussian rozmycie uszkodzone obraz, i jak waga jest zrobione jest związane z założeniami na to, co było w obrazie na początku.
Inne źródła informacji mogą spowodować wyostrzenie problemu dobrze pozowane. Powszechnym takim źródłem informacji jest wideo poruszającego się obiektu lub ustawienie wielu widoków. Wyostrzanie w tym ustawieniu jest zwykle nazywane superrozdzielczością (co jest bardzo złą nazwą, ale utkwiło w kręgach akademickich). Od dawna w OpenCV istnieją metody superrozdzielczości.... chociaż zwykle nie działają tak dobrze na prawdziwe problemy ostatnio sprawdziłem je. Spodziewam się, że głębokie uczenie przyniosło wspaniałe rezultaty również tutaj. Może ktoś napisze w komentarzach, co się tam opłaca.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-21 11:26:33
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-02 11:38:06