Segmentacja półprzezroczystego materiału, np. Szkła


11

Całkowicie utknąłem w kwestii dotyczącej segmentacji szklistych przedmiotów. Muszę uzyskać obiekt tak precyzyjnie, jak to możliwe. Moje podejście było inne. Najpierw próbowałem usunąć tło, aby pozostały tylko ostre kontury. Ale działa to tylko w przypadku obiektów, które mają ostre krawędzie / gradienty. W przeciwnym razie sam obiekt również zostanie usunięty. Zamieściłem dwa różne obrazy.

zdjęcie 1 zdjęcie 2

Próbowałem usunąć tło za pomocą operacji morfologicznych, takich jak rozszerzenie skali szarości i podział na nie. ale to niewiele pomogło. po tym próbowałem k-średnich z k = 3, aby oddzielić zmodyfikowane tło od wartości szarości i czerni szkła. W niektórych przypadkach nie było to udane, ale nie ogólnie / średnio. Starałem się również wykryć sprytne wykrywanie krawędzi za pomocą ogólnego filtru blured, ale prowadziło to do słabszych wyników w postaci otwartych konturów, dużego hałasu itp. Pp.

Canny z automatycznymi wynikami progowymi:

testimg = imread('http://i.imgur.com/huQVt.png');  
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);

To samo dotyczy drugiego obrazu.

wyjście canny # 1 wyjście canny # 2

Jak widać, wewnątrz i na zewnątrz jest dużo hałasu, a podwójne krawędzie od granicy szyby. Nawet na krawędziach są luki.

Potrzebuję więc twoich rad, aby uzyskać ogólne podejście do rozwiązania tego problemu półprzezroczystych materiałów, a nie tylko tych dwóch obrazów.

1) Inne pomysły na usunięcie tła bez uszkodzenia obiektu?

2) Inne metody segmentacji w celu oddzielenia obiektu od tła?

Jeśli to możliwe, to dzięki Matlab, IPT lub statystycznym podpowiedziom. Wszelkie inne wskazówki są również mile widziane!

Z góry dziękuję za odpowiedź. szczerze


Czy tło jest zawsze identyczne?
endolith

prawie różni się nieco ciemniej / jaśniej.
mchlfchr

1
Dobrze odjęcie tła z każdego obrazu będzie start, dzięki czemu jest bardziej jednolity: imgur.com/9WhcB
endolit

1
Co masz na myśli? Czy masz zdjęcie tła bez szkła?
endolith

1
@DennisJaheruddin Wiem, że krawędź NIE jest czarną linią. Krawędź jest definiowana jako zmiana intensywności / częstotliwości, co oznacza, że ​​jej szare wartości zmieniają się mniej lub bardziej gwałtownie. Niemniej jednak, jak widać z kontekstu, metoda Canny'ego nie będzie tutaj bronią z wyboru, ponieważ z powodu tła będę dużo hałasować (z Canny). I nie mogę przewidzieć automatycznego progu / sigmy. Potrzebuję więc metody, która eliminuje tło, ale nie sam obiekt.
mchlfchr

Odpowiedzi:


3

Dlaczego nie skorzystać z prostego filtru górnoprzepustowego 2D FFT (guassian)?

Zrobiłem to naprawdę szybko, używając MATLAB

Odłamek nr 1 przy użyciu FFT górnoprzepustowego:

http://i47.tinypic.com/rbjxnd.jpg

To samo zrobiono na # 2.

Odłamek 2 przy użyciu FFT górnoprzepustowego:

http://i45.tinypic.com/209kms0.jpg

Jak widać, tło i obszar szkła są usuwane, a tylko krawędzie są wykreślane. Nie spędzałem na tym czasu, ale możesz ustawić próg filtrowanej mocy wyjściowej HP, aby uzyskać bardziej ostre krawędzie, lub przesunąć HP wyżej.

Czy to więcej wyników, które chcesz uzyskać?


1

To nie jest próba odpowiedzi na całe pytanie, ale mam pomysł na temat „czyszczenia obrazu” .

Powiedziałeś, że już próbowałeś operacji morfologicznych , i jest to odmiana tego pomysłu, mam nadzieję, że jest to ulepszenie.

W tym artykule: A. Vichik, R. Keshet, D. Malah: Morfologia podwójna na półksiężycach i aplikacjach drzewnych proponuje sposób ulepszenia klasycznych operatorów morfologicznych w sposób, który może nadać im bardziej pożądane właściwości.

Artykuł sugeruje wybranie hierarchicznej reprezentacji obrazu zgodnie z pożądanymi właściwościami, a następnie proponuje metodę definiowania operatorów, takich jak erozja, dylatacja, otwieranie, odgrywanie roli w tej reprezentacji . Innymi słowy:

Przedstawiliśmy ogólne ramy tworzenia nowych operatorów morfologicznych (...)

Wyjaśniłem te hierarchiczne struktury w kształcie drzewa w drugiej części tej odpowiedzi ( podejścia semantyczne ) , do której można dodać drzewo Extrema-Watershed wspomniane w artykule, który zamieściłem tutaj (i ponownie) .

Jest to uaktualnienie do (cytowanie autorów) „tradycyjnej morfologii matematycznej w skali szarości”, ponieważ operacje zachowują pożądane właściwości przedstawień . Np. Jeśli twoja hierarchiczna reprezentacja jest self-dualna, twoi operatorzy będą naprawdę self-dualni (np. Porównaj z quasi -sobą-dualnym otwieraniem-zamykaniem przez rekonstrukcję, która tak naprawdę nie jest dualistyczna).

Połączony artykuł przedstawia również niektóre wyniki w odfiltrowywaniu hałasu - możesz porównać ich wyniki z artykułu (i tezy wymienionej w artykule) do tego, czego potrzebujesz (przynajmniej wizualnie) i sprawdzić, czy zadziała to przed rozpoczęciem kodować.

Tak więc, wybierając najprostsze drzewo reprezentacji (maks./min.), Uzyskamy dokładnie klasyczne operacje, wybranie drzewa podwójnego, które najlepiej odpowiada Twoim potrzebom, może dać ci wystarczająco solidne podejście.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.