Obecnie mam dużo trudności z myśleniem o dobrej metodzie usuwania gradientu z obrazu, który otrzymałem.usunąć gradient obrazu bez obrazu porównania
Zdjęcie to zdjęcie zrobione aparatem mikroskopowym, które ma pośrodku jasne światło. Obraz ma wzór przechodzący przez obraz. Jednak mam usunąć jasne światło na obrazie utworzonym przez światło kamery.
Niestety ze względu na naturę aparatu nie można zrobić zdjęcia na czarnym tle ze światłem, aby znaleźć rozkład gradientu. Nie mam też obrazu porównawczego bez gradientu. (uwaga - lokalizacja jasnego olśnienia zawsze będzie się składać podczas robienia zdjęcia)
W łatwiejszy sposób, jak w przypadku zdjęcia z lampą błyskową, ale chcę się pozbyć lampy błyskowej. Jedyny problem polega na tym, że nie mam możliwości uzyskania obrazu bez lampy błyskowej, aby porównać go z czarnym fleszem lub nawet uzyskać czarny obraz z samą lampą błyskową.
Moja obecna myśl polega na wykrywaniu krawędzi i otrzymywaniu próbek w określonych miejscach z dala od krawędzi (z powodu różnicy kolorów) i używam tego do określenia rozkładu gradientu, ponieważ te obszary powinny mieć stosunkowo identyczne kolory. Jednak zastanawiałem się, czy był łatwiejszy i lepszy sposób na zrobienie tego.
W razie potrzeby opublikuję przykładowy obraz później.
W tej chwili mam preferowanie rozwiązania tego w C++ przy użyciu opencv, jeśli to ułatwia.
z góry dziękuję za wszelkie możliwe pomysły na ten problem. Jeśli istnieje inny link, samouczek lub wpis, który może rozwiązać mój problem, bardzo bym go docenił.
jak można powiedzieć, że jest to ów świetlne są shinned na img jak można powiedzieć z białą plamą. a góra jest lżejsza niż bottome ze względu na światło, kolor wewnątrz owalu jest rzeczywiście inny, gdy zdjęcie jest zrobione w kolorze. Jednak kolor między pudełkiem a owalem powinien być jednolity. Mój oryginalny pomysł był do być może spróbować tylko te obszary, niektóre jak i zbudować profil, który mogę wykorzystać, aby usunąć światło, ale jestem pewien, jak skuteczne byłoby czy istnieje lepszy sposób
EDIT:
Cóż, wypróbowałem sugestię Rogera, a wyniki były niezłe. Wykorzystując rozmycie gaussowskie w rozmiarze 110, by znaleźć oświetlenie i przewodzić CLAHE. (Oba wykonane w OpenCV)
Jednak moja Colleage powiedział mi, że obraz nie wygląda idealnie jednorodna i wskazał, że na całym obszarze, gdzie światło jest wykorzystywane do być nieco jaśniejsze. Zasugerował próbę selektywnego rozmycia gaussowskim, w którym obszary powyżej określonych wartości progowych pikseli nie są rozmyte, a reszta obrazu jest rozmyta.
Czy ktoś ma opinie na ten temat i może link, samouczek lub przykład czegoś podobnego?Większość rzeczy znajdę wydają się być selektywne rozmycie dla programów takich jak Photoshop i gimp
EDIT2:
trudno jest powiedzieć z tylko oczy, ale wierzę, że osiągnęliśmy stosunkowo blisko ujednolicenie za pomocą prostego algorytmu dopasowania płaszczyzny ((- A * x - B * y)/C) (x, y, z) gdzie z jest wartością piksela. Myślę, że można to poprawić, wykorzystując być może funkcję dopasowania sinusa? nie jestem pewien. Ale jestem stosunkowo zadowolony z wyników. Wielkie dzięki dla Rogera za świetne pomysły.
Wierzę, że za pomocą kilku zdjęć i uzyskanie avg byłoby kolejną dobrą metodą (sugerowaną przez Rogera), ale Unofruntely nie byłem w stanie zaimplementować tego, ponieważ nie byłem dostarczany z różnymi obrazami i maszyna jest w trakcie modyfikacji więc nie mogłem go użyć.
Możesz spróbować użyć rozmycia Gaussa z bardzo dużym jądrem, aby przekształcić obraz w przybliżenie gradientu tła. Trudno powiedzieć bez oglądania obrazu. –
Czy dystrybucja przez rozmycie byłaby wystarczająco skuteczna, aby w pełni stworzyć równomierny rozkład jasności na całym obrazie? – user2427671
Bardzo podoba mi się to pytanie i jego odpowiedzi.Podobne pytanie (http://stackoverflow.com/questions/19035835/correct-image-for-local-dark-light-spots-equalise-luminance-intensity-loca) opublikowałem miesiąc temu, ale odpowiedzi tutaj są dużo lepszy. – Leo