logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Implementacja algorytmu binearyzacji(automatyczne szukanie)

CeHa7 26 Lis 2009 15:01 2386 14
  • #1 7311131
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    Witam! Chciałbym się dowiedzieć drodzy koledzy jak zaimplementować taki algorytm, mianowicie chodzi mi o automatyczne szukanie progu binearyzacji. Czy ktoś posiada dość jasno opisany ten algorytm? Może być w postaci kodu lub jakiegoś schematu blokowego. Dzięki z góry i pozdrawiam!!
  • #3 7311733
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    Zagadnienie jest z dziedziny przetwarzania obrazów cyfrowych, chodzi tu o to żeby RGB zamienić na YUV a następnie na obraz monochromatyczny(czarno biały) a przy tym wydobyć obiekt od tła. Binearyzacja polega na tym iż zostaje ustawiony próg(automatyczny albo ręcznie) dla którego barwy poniżej tego progu zamieniamy na biały kolor(tło) a powyżej na czarny(obiekt). Próbowałem już średnią z całej tablicy oraz średnią z max wartości i min ale to nie bardzo się spisuje. Dzięki za zainteresowanie
  • #4 7311931
    Dżyszla
    Poziom 42  
    Posty: 7076
    Pomógł: 1095
    Ocena: 225
    Jeśli chcesz zamieniać na monochromatyczny, to po prostu ustaliłbym taki próg jako stałą wartość średniej ważonej (bo to odpowiada najlepiej przejściu na skalę szarości/monochrom.) kolorów. Jeśli koniecznie ma to być jakiś adaptacyjny algorytm, to najlepiej, aby była to średnia dla skrajnych wartości kolorów z całego obrazu (z ewentualnym odrzucaniem "błędów" czyli iluś tam skrajnych wartości i przyjmowanie np 3 od lewej i od prawej pod względem średniej dla skali szarości wartości ze wszystkich pikseli obrazu). Jeśli zaś chcesz tworzyć kontur i np wykonać czarną sylwetkę twarzy na białym tle, to powinieneś oprzeć się na kontrastach pomiedzy pikselami (lub grupami pikseli sąsiadujących), w ten sposób wyznaczając krawędzie, a następnie zamalowując zamknięty w ten sposób obszar. Jednakże taka metoda może skończyć się zamalowaniem całego obszaru na jeden kolor.
  • #5 7312060
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    No powiem Ci że masz rację bo właśnie wszystkie te operacje już zrobiłem i wyniki są do siebie uderzająco podobne. Ale nie dało mi to spokoju i sprawdziłem wyniki tych samych obrazów z Matlabem i efekt okazał się ten sam więc powinno być ok. Teraz mam jeszcze jedno pytanie mianowicie program ten ma za zadaniem analizy obrazu z kamery dla robota mobilnego, który będzie się poruszać wyszukując znaczniki w kształcie koła i teraz potrzebuję żeby znaleźć współrzędne środka tego koła oczywiście już po binaryzacji. Potrzebny mi jest najprostszy sposób znalezienia tych współrzędnych. Dzięki
  • #6 7312088
    Dżyszla
    Poziom 42  
    Posty: 7076
    Pomógł: 1095
    Ocena: 225
    jeśli to koło (a nie elipsa) to wystarczy środek odcinka łączącego najdalej oddalone punkty bądź to w osi x, bądź y. A więc lecisz np wierszami od góry w poszukiwaniu niebiałego piksela (lub dla eliminacji błedów - nie białych 3 sąsiadujących pikseli). Po znalezieniu zapamiętujesz współrzędne. Następnie to samo analizując obraz od dołu. Nastepnie wyznaczasz środek odcinka.
  • #7 7319091
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    Dobra to mam załatwione ładnie wylicza mi współrzędne środka. Ale teraz zastanawiam się jak rozróżnić z pośród tylu przedmiotów które wychwyci kamera, znacznik w kształcie koła(czerwonego). Chodzi o to by pominąć zbędną analizę
  • #8 7319270
    Dżyszla
    Poziom 42  
    Posty: 7076
    Pomógł: 1095
    Ocena: 225
    mając współrzędne środka oraz dowolny punkt z obrysu możesz sprawdzić, czy znajdziesz punkty tak samo oddalone pod środka pod różnym kątem (od 0 do 360 z jakimś tam skokiem) i czy nieznacznie więcej niż promień nie ma punktu czarnego. Oczywiście doliczyć do tego jakiś margines błędu np poprzez wyznaczenie środka pierścienia lub nieznacznie zmniejszając promień, jeśli jest to koło. Myślę, że taka analiza wystarczy.
  • #9 7320606
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    Dżyszla w sumie nie głupi pomysł ale jest jedno ale, mianowicie nie wiadomo jaki będzie promień koła ponieważ odległość od znacznika może być różna a co za tym idzie i promień koła będzie się zmieniał. A może coś z kolorem?
  • #11 7343593
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    Hmm po przetestowaniu mojego algorytmu na zdjęciach przechwyconych z kamery niestety muszę stwierdzić że nie działa on prawidłowo i wydaje mi się że przyczyną jest tu różnica padającego światła(oświetlenia). W idealizowanych warunkach czyli narysowanych przeze mnie bitmapach wszystko działa prawidłowo no ale jak wiadomo nie o to chodzi. Teraz mam pytanie, a może bardziej problem jak z tym sobie poradzić? Dzięki za zainteresowanie i pozdrawiam!
  • #13 7344892
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    Przykładowe grafiki, pierwsza to rzeczywista a druga ideał
    Załączniki:
    • Implementacja algorytmu binearyzacji(automatyczne szukanie) real.JPG (60.49 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Implementacja algorytmu binearyzacji(automatyczne szukanie) ideal.JPG (20.74 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #14 7345647
    Dżyszla
    Poziom 42  
    Posty: 7076
    Pomógł: 1095
    Ocena: 225
    Obawiam się, że w ten sposób tego nie wyłapiesz :( Tło jest zdecydowanie zbyt złożone. Jeśli kółko jest czerwone można by spróbować popracować wyłącznie na tym kanale. W przeciwnym wypadku chyba będzie trzeba wrócić do algorytmu wyszukiwania krawędzi.

    Tak wygląda obraz po zaakcentowaniu krawędzi (Photoshop):
    Implementacja algorytmu binearyzacji(automatyczne szukanie)

    Można by teraz próbować na podstawie tego coś wyczaić...

    Kłopotem są dwa fakty - skala szarości kółka i tła niewiele się różnią. Dwa: kółko zajmuje bardzo niewielki obszar całego obrazu, przez co odpadają algorytmy bazujące na przeważającym kolorze.
  • #15 7345953
    CeHa7
    Poziom 15  
    Posty: 203
    Pomógł: 1
    Ocena: 7
    No powiem Ci że doszedłem do tego samego wniosku. Ale w sumie gdyby jednak tło było trochę bardziej jednorodne bo w sumie te znaczniki będą raczej na ścianie czy też podłodze to powinno raczej spełnić swoją rolę. Tylko teraz też będzie odgrywać tu pierwsze skrzypce światło o to kilka przykładów. Zdjęcia robione zostały na dywanie, pierwsze poddane binaryzacji tylko a drugie z wydzielenie kanału R i jeszcze jedno z R
    Załączniki:
    • Implementacja algorytmu binearyzacji(automatyczne szukanie) chanelR1.JPG (39.08 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Implementacja algorytmu binearyzacji(automatyczne szukanie) channelR.JPG (58.29 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Implementacja algorytmu binearyzacji(automatyczne szukanie) bin.JPG (54.58 KB) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

✨ W dyskusji poruszono temat implementacji algorytmu automatycznego szukania progu binearyzacji w kontekście przetwarzania obrazów cyfrowych. Użytkownik poszukiwał sposobu na konwersję obrazów RGB na monochromatyczne, aby wydobyć obiekty z tła. Proponowane metody obejmowały ustalanie progu na podstawie średniej wartości pikseli oraz analizę kontrastów między sąsiadującymi pikselami. Użytkownik zrealizował już część operacji, jednak napotkał problemy z różnicami w oświetleniu podczas testów na rzeczywistych obrazach. Wskazano na potrzebę analizy krawędzi oraz wykorzystania kanału kolorów, aby poprawić wyniki detekcji obiektów, takich jak czerwone znaczniki w kształcie koła. Dyskusja zawierała również sugestie dotyczące wyznaczania współrzędnych środka koła oraz rozróżniania obiektów na podstawie ich kolorów i kształtów.
Wygenerowane przez model językowy.
REKLAMA