2012-12-20 14 views
7

Pracuję nad projektem zszywania obrazów i rozumiem, że istnieją różne podejścia do radzenia sobie z kontrastem i jasnością obrazu. Mógłbym oczywiście poradzić sobie z tym problemem, zanim jeszcze zszytym obrazem, ale wynik nie jest tak konsekwentny, jak mam nadzieję. Moje pytanie brzmi, czy możliwe jest przez przypadek "zrównoważenie", a raczej "wyrównywanie" kontrastu i jasności na kolorowych zdjęciach po tym, jak miały miejsce szwy?Równoważenie kontrastu i jasności między zszytymi obrazami

Odpowiedz

4

Chcesz określić funkcję korekty histogramu, nie od wszystkich zdjęć, ale od strefy, w której dotkną lub zachodzą na siebie. Oczywiście chcesz mieć identyczne histogramy w obszarze pokrywania się, więc tutaj obliczasz funkcje. Następnie stosujesz funkcje wyrównujące, które wykonują to na wszystkich obrazach. Jeśli masz więcej niż dwa oczka, chcesz wcześniej uzyskać wyrównanie globalne, a następnie użyć ważonej aplikacji funkcji wyrównania, które zmniejszają siłę uderzenia w miarę oddalania się od zaszytej krawędzi.

Przepraszam, jeśli to już wszystko jest dla ciebie oczywiste, ale twoje ogólne pytanie prowadzi mnie do ogólnej odpowiedzi.

+0

Czy możesz przypadkiem pokazać mi praktyczny przykład? Rozumiem koncepcje, ale implementacja w OpenCV im trochę zaginęła. – JavaCake

4

Możesz chcieć rzucić okiem na Exposure Compensator class dostarczony przez OpenCV.

Kompensacja ekspozycji odbywa się w 3 etapach:

  1. Utwórz kompensatora ekspozycji

    Ptr<ExposureCompensator> compensator = ExposureCompensator::createDefault(expos_comp_type);

  2. wprowadzisz wszystkich obrazów wraz z najlepszych lewych rogach każdego z nich. Możesz pozostawić maski całkowicie białe, chyba że chcesz określić określone części obrazu do pracy.

    compensator->feed(corners, images, masks);

  3. Teraz ma wszystkie informacje, w jaki sposób obrazy nakładają się na siebie, można skompensować każde zdjęcie osobno

    compensator->apply(image_index, corners[image_index], image, mask);

skompensowanego obraz zostanie zapisany w image

+0

Czy udało Ci się ten kod zadziałać? – user65721

+0

Czy możesz udostępnić kod. Próbowałem tego i nie mogłem zarządzać działaniem! – user65721

+0

Próbuję też to zrobić. Na początek więcej informacji jest zaimplementowane w przykładzie 'stitching_detailed.cpp' z przykładowych projektów cpp. –

Powiązane problemy