Wpis z mikrobloga

#programowanie #python #opencv #pomocy #programujzwykopem
Mircy potrzebuję pomocy.
Mapa głębi (po lewej, disparity map) jest numpy.ndarray float32
w taki sposób zamieniam ją na uint8: image = (image * 255).round().astype(np.uint8)
dochodzi jeszcze w międzyczasie operacja zamknięcia i otwarcia tak by wyrównać postrzępione granice kolorów
i to co mam po prawej (after filtering) to wynik zmiany z float32 na uint8
jak widać barwy szarości są ok odwzorowane, jednak czarne fragmenty zostały zamienione na białe, a nie może tak być
w jaki sposób zmienić na uint8 tak by wszystkie kolorki były dokładnie takie same jak po lewej stronie?
tr00ci0 - #programowanie #python #opencv #pomocy #programujzwykopem 
Mircy potrzebuj...

źródło: comment_WzWwRYcRPLZZsOjAQba1rtajAgsBgf5c.jpg

Pobierz
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@tr00ci0 Najprostszy fix to zastąpienie wartości brzegowych ich odwrotnością w uint8 (tz 255 (biel) w rgb na 0, ale to jest "plaster" na błędną konwersję.

Czym dokładniej są operacje zamknięcia i otwarcia wg tego co opisałeś?
  • Odpowiedz
@tr00ci0: jakaś wartosć brzegowa odpowiedzialna za czerń Ci wyszła poza skalęlub się wyzerowała. Sprawdź jaką wartość ma czerń w 1szym typie i pomnóż i zobacz co wychodzi. Może trzeba będzie jakieś if dołożyć
  • Odpowiedz
@tr00ci0: dobra dzięki za słowo "morfologia" już przypomniałem sobie o co chodzi. @regis_uszatek w zasadzie powiedział co ja podejrzewałem, ale chciałem się upewnić co rozumiesz pod dodatkową operacjami otwarcia/zamknięcia.

Dopisz po prostu warunek który nie powoli przekroczyć max val uint8 i jesli taka sytuacja nastąpi, zastąp jak tą wartością.Podobnie z dolną granicą MinVal(uint8)
  • Odpowiedz
@grubson234567: @regis_uszatek: no ok, ale żeby to zrobić to muszę w pętli przejrzeć wszystkie wiersze i kolumny i sprawdzić wartość punktu? dobrze rozumuję? bo jeśli tak to kicha trochę bo program działa w czasie rzeczywistym i już mam za dużą złożoność obliczeniową
  • Odpowiedz
Dobra uwaga. Pewnie da się to obejść. Najpierw sobie zdebugguj do jakiejś konsoli abyś dokładnie znał wartość czerni przed i wartość tego czarnego punktu po (nawet jak stanie się biały) pomoże w diagnozie
  • Odpowiedz
@regis_uszatek: ('Wartosc probki przed: ', -0.0625, 'Wartosc probki po: ', 240)
zamiana odbywa się w taki sposób:
opening2 = (opening * 255).round().astype(np.uint8)
czyli -0,0625 * 255= - 15.9375 a powinno być 0 żeby wyświetlał na czarno?

jak skasuje .round()
  • Odpowiedz
@tr00ci0: wydaje mi się, że zrobiłem ale muszę to jeszcze przeanalizować ;) tak czy inaczej wielkie dzięki za rady bo sam bym pewnie szybko nie wpadł na sprawdzanie tych wartości przed i po zmianie
  • Odpowiedz