System wizyjny pomagający osobom niewidomym

1. Cel i założenia projektu

Celem było stworzenie stosunkowo taniego, łatwego w obsłudze i mobilnego urządzenia, które pozwoli osobom niewidomym lub niedowidzącym na odczytanie drukowanego tekstu z dokumentów czy książek.
Założenia kluczowe:

  • Wykorzystanie powszechnie dostępnych, budżetowych komponentów, w tym minikomputera Raspberry Pi 4B.
  • Rozpoznawanie tekstu w języku polskim (w tym znaków diakrytycznych) oraz konwersja na mowę.
  • Obsługa dwóch wariantów klasyfikacji: własnej sieci neuronowej CNN oraz modelu ResNet50 (transfer learning).

2. Budowa urządzenia

2.1 Raspberry Pi 4B

W projekcie użyto Raspberry Pi 4B z 4 GB pamięci RAM, pracującego pod kontrolą systemu Raspberry Pi OS (Bookworm). Jest to serce urządzenia odpowiedzialne za:

  • Akwizycję obrazu z kamery.
  • Przetwarzanie (filtrację i segmentację) obrazu.
  • Klasyfikację rozpoznanych liter za pomocą wybranego modelu sieci neuronowej.
  • Syntezę mowy (eSpeak lub inny TTS) i wysyłanie jej na słuchawki/głośnik Bluetooth.

2.2 Kamera 5MP OV5647

Do przechwytywania obrazu wybrano kamerę 5 MP OV5647, kompatybilną z Raspberry Pi. Zapewnia ona dobrą jakość przy zachowaniu niskiej ceny. Dzięki rozdzielczości 2592×1944 pikseli możliwe jest skuteczne uchwycenie tekstu o standardowej wielkości czcionki.

2.3 Obudowa

W celu integracji komponentów zaprojektowano i wydrukowano w technologii 3D dwuczęściową obudowę (góra/dół), zaprojektowaną w Autodesk Inventor Professional 2025. Obudowa umożliwia stabilny montaż Raspberry Pi i kamery, zapewniając jednocześnie łatwy dostęp do portów i złączy.

2.4 Komunikacja z komputerem PC

Urządzenie łączy się z komputerem (np. laptopem) poprzez Wi-Fi. Komputer pozwala m.in. na:

  • Podgląd obrazu w czasie rzeczywistym.
  • Wybór modelu sieci neuronowej (autorskiej lub ResNet50).
  • Testowanie i diagnostykę (np. z użyciem środowiska Matlab/Simulink).

3. Algorytm przetwarzania obrazu i rozpoznawania tekstu

  1. Przechwycenie obrazu z kamery i przekazanie go do Raspberry Pi.
  2. Filtracja i binaryzacja – konwersja do skali szarości, poprawa kontrastu, usuwanie szumów (filtr Wienera), a następnie zamiana na obraz czarno-biały.
  3. Segmentacja – rozdzielanie obrazu na poszczególne litery (najlepsze wyniki uzyskano, stosując segmentację opartą na detekcji konturów).
  4. Klasyfikacja – dla każdego wyodrębnionego znaku wywoływana jest sieć neuronowa. Projekt przewiduje dwie opcje:
    • Autorska CNN – mniejsza i szybsza w trenowaniu, jednak nieco mniej dokładna w rozpoznawaniu skomplikowanych czcionek.
    • ResNet50 (transfer learning) – głęboka sieć residualna wstępnie wytrenowana na dużym zbiorze danych, następnie dostosowana do polskich liter. Bardziej złożona, osiąga wyższą dokładność kosztem dłuższego czasu przetwarzania.
  5. Synteza mowy – rozpoznany tekst przekazywany jest do syntezatora (np. eSpeak) i odczytywany przez słuchawki lub głośnik Bluetooth.

4. Sieci neuronowe

4.1 Autorska sieć CNN

  • Dwie warstwy konwolucyjne, warstwy aktywacji ReLU, pooling, batch normalization i dropout.
  • Obrazy wejściowe o wymiarach 28×28 pikseli (binarnie).
  • Dokładność w testach: ok. 79–84% (dla zbioru testowego i większych czcionek).
  • Zaletą jest krótszy czas trenowania oraz mniejsze wymagania sprzętowe.

4.2 Transfer Learning: ResNet50

  • Głęboka sieć z 50 warstwami konwolucyjnymi i blokami resztkowymi.
  • Zmodyfikowana końcowa warstwa klasyfikująca (dostosowana do polskich znaków).
  • Dokładność w testach: nawet 87–92% (przy dobrej jakości obrazu).
  • Wadą jest nieco dłuższy czas przetwarzania na Raspberry Pi.

5. Testy i wyniki

  • Dokładność rozpoznania:
    • Dla dobrze oświetlonych, wyraźnych tekstów sieć ResNet50 znacząco przewyższa autorską CNN.
    • W warunkach słabego oświetlenia lub przy małych, gęsto upakowanych literach obydwa modele mają trudności – kluczowa staje się wtedy segmentacja oraz jakość zdjęcia.
  • Czas przetwarzania:
    • Autorska sieć CNN: średnio ~12 s na przetworzenie typowego fragmentu tekstu.
    • ResNet50: ~20 s, ale wyższa dokładność.
  • Wady: problemy z rozpoznawaniem zbyt małych lub zniekształconych znaków, zwłaszcza przy złej segmentacji lub słabym oświetleniu.

6. Implementacja i obsługa

  1. Oprogramowanie w Matlab/Simulink:
    • Dzięki pakietom MATLAB/Simulink Support Package for Raspberry Pi Hardware możliwe było szybkie wdrożenie i testowanie.
    • Aplikacja w Matlabie wyświetla podgląd kamery, umożliwia zmianę modelu (CNN/ResNet50) oraz przesyła dane do i z minikomputera.
  2. Połączenia bezprzewodowe:
    • Raspberry Pi łączy się przez Wi-Fi z komputerem (wgląd w obraz, wybór modelu).
    • Wyjście dźwięku odbywa się poprzez Bluetooth (np. słuchawki).
  3. Obudowa 3D:
    • Wydruk 3D z tworzywa  – kompaktowa konstrukcja dla RPi i kamery.

7. Podsumowanie i możliwości rozwoju

Zaprojektowane urządzenie spełnia główny cel: potrafi przechwycić obraz z kamery, rozpoznać drukowany tekst i odtworzyć go w formie dźwiękowej. Dzięki zastosowaniu dwóch modeli (autorskiej sieci CNN i ResNet50) można wybrać rozwiązanie szybsze lub dokładniejsze.

Możliwe dalsze usprawnienia:

  • Poprawa jakości obrazu: doświetlanie LED, lepsza kamera o wyższej rozdzielczości.
  • Rozbudowa algorytmów segmentacji (np. inteligentne wykrywanie linii tekstu).
  • Ulepszenie obudowy (materiały, ergonomia, estetyka).
  • Dalsze dopracowanie modeli sieci neuronowych (więcej danych treningowych, kolejne warstwy, inny typ transfer learningu).
  • Implementacja szybszych bibliotek TTS z lepszą jakością głosu.

Projekt pozwolił na zdobycie doświadczenia w dziedzinie systemów wbudowanych, przetwarzania obrazu, uczenia maszynowego oraz inżynierii oprogramowania w praktyce. Urządzenie może stanowić ciekawą bazę do dalszej komercjalizacji i rozwijania rozwiązań z zakresu asysty osobom z dysfunkcjami wzroku.

pl_PLPolish
Scroll to Top