Projekty indywidualne i zespołowe
MENU

Tematyka projektów indywidualnych i zespołowych związana jest najczęściej z szeroko pojętym przetwarzaniem obrazów (zwłaszcza pod kątem wykorzystania informacji wizyjnej do podjęcia jakiegoś działania) oraz programowaniem robotów mobilnych czy manipulatorów. Nie znaczy to jednak, że tematy niezwiązane z wyżej wymienionymi zagadnieniami się zupełnie nie zdarzają - są one jednak w mniejszości. Jeżeli Państwo macie jakiś własny pomysł, który chcielibyście zrealizować albo już nad czymś pracujecie i chcielibyście niejako przy okazji zaliczyć przedmiot, to proszę się ze mną skontaktować. Jestem otwarty na wszelkie inne propozycje, które choć trochę ocierają się o moją wiedzę i zainteresowania (o czym niektórzy zdołali się już przekonać). Wszelkie Państwa pomysły zostaną z należytą uwagą rozważone. Proponuję także zapoznać się z najciekawszymi zrealizowanymi projektami oraz propozycjami prac dyplomowych, które w okrojonej wersji mogą być realizowana jako projekty.

Do wielu projektów dostępne są u mnie materiały pomocnicze w postaci sprawozdań, artykułów, książek, a nawet gotowego kodu - mimo to, każdy projekt powinien rozpocząć się przeszukaniem Internetu i sprawdzeniem co w danej tematyce jest zrobione, co się robi, a co stanowi problem.

Pragnę zwrócić uwagę, że projekt NIE MUSI zakończyć się pełnym sukcesem. Robiąc założenia co do projektu, zazwyczaj nie mamy o tym pełnej wiedzy (właśnie po to jest projekt by ją zdobyć) i niektóre założenia mogą okazać się nierealizowalne. Liczyć się będzie głównie wkład pracy i poziom realizacji tego, co da sie zrobić. Poza tym tematy projektów są często formułowane dosyć ogólnie, aby dać Państwu możliwość wyboru konkretnych problemów do rozwiązania podczas pracy.

Projekt indywidualny czy nawet zespołowy może stać się zalążkiem pracy dyplomowej (było tak już w kilku przypadkach) - o wiele łatwiej jest napisać dobrą pracę, gdy poznało się już wcześniej dane zagadnienie i należy je "tylko" rozwinąć.

Jako język programowania zdecydowanie preferuję C/C++, ale nie jest to warunkiem koniecznym we wszystkich projektach. Jeśli chodzi o przetwarzenie obrazów to sugeruję wykorzystanie jednej z najlepszych (i do tego darmowych) bibliotek do przetwarzania i analizy obrazów jaką jest OpenCV. UWAGA: nie są wymagane wysokie umiejętności programowania w C++ czy też znajomość tajników przetwarzania obrazów. Wystarczą jedynie podstawy, gdyż większość kodu jest realizowana przez bibliotekę przetwarzania obrazów i nie pociąga to za sobą konieczności tworzenia skomplikowanych aplikacji, a sam kod jest stosunkowo prosty i zbliżony bardziej do standardowego C z elementami obiektowości.

W razie jakichkolwiek pytań zapraszam do pokoju GE-519B lub SK-201 w godzinach konsultacji, a także w innych porach lub o kontakt emailowy.

Tematy projektów indywidualnych i zespołowych podawane są zbiorczo, gdyż dany temat można potraktować wężej lub szerzej - w zależności od aspiracji/czasu/chęci/umiejętności wykonawcy (dotyczy projektów indywidualnych) lub liczby pracujących nad nim osób (dotyczy projektów zespołowych).

Projekty indywidualne mogą być w większości przypadków realizowane przez kilka osób jednocześnie - wówczas wspólna moża być część techniczna projektu (uruchomienie aplikacji, urządzenia itp.), ale część badawcza pozostaje zazwyczaj niezależna.

Sugeruję także zapoznanie się z listą proponowanych tematów dyplomowych, gdyż wiele z nich można zrealizować w zawężonym zakresie w ramach projektów indywidualnych czy zespołowych.

Propozycje tematów

  1. Projekt systemu wizyjnego do kontroli grubości warstwy pyłu na folii
    PROJEKT KOMERCYJNY dla firmy zajmującej się produkcją woreczków foliowych - wysokość wynagrodzenia do ustalenia w drodze negocjacji z firmą. Problem polega na zaproponowaniu i realizacji (niekoniecznie) systemu wizyjnego mierzącego ilość proszku na taśmie foliowej przesuwającej się z prędkością do 2 m/s. Rozwiązanie należy znaleźć na drodze eksperymentalnej - wydaje się, że wystarczający będzie pomiar jasności/barwy/nasycenia koloru folii przed posypaniem proszkiem i po posypaniu. Dobór sprzętu (kamer, obiektywów, konfiguracja komputera itp) pozostaje w gestii projektanta. Oferuję, oczywiście, swoją pomoc przy realizacji proejktu.

  2. Projekt systemu wizyjnego do kontroli jakości zgrzewów na folii
    PROJEKT KOMERCYJNY dla firmy zajmującej się produkcją woreczków foliowych folii - wysokość wynagrodzenia do ustalenia w drodze negocjacji z firmą. Problem polega na zaproponowaniu i realizacji (niekoniecznie) systemu wizyjnego badającego jakość zgrzewów na woreczkach foliowych. Woreczki przesuwają się na taśmie w tempie 4 na sekundę, ich szerokość waha się od 150 do 450 mm. Czasami zgrzewy nie są dokładne i woreczki są dziurawe. Należy zaproponować wizyjną metodę sprawdzania jakości zgrzewów - wydaje się, że potrzebne będą obrazy o dość wysokiej rozdzielczości, gdyż wady mogą mieć wymiary rzędu milimetra. Oferuję, oczywiście, swoją pomoc przy realizacji proejktu.

  3. Porównywanie dokumentów tekstowych
    Projekt polega przetestowaniu, usprawnieniu i rozszerzeniu istniejącej aplikacji do wykrywania plagiatów, ewentualnie do implementacji tej aplikacji w C++ (źródła są w Javie).

  4. Sterowanie nowoczesnym robotem mobilnym z wykorzystaniem czujników ultradźwiękowych.
    Projekt polega na zbadaniu możliwości dostarczonego wraz z robotem oprogramowania i napisaniu własnego kodu sterującego profesjonalnym robotem mobilnym w zamkniętym pomieszczeniu. Robot powinien wykorzystwać mapę pomieszczenia (jest gotowa) oraz własne czujniki ultradźwiękowe do omijania przeszkód lub podążania za człowiekiem itp.

  5. Kalibracja robotów mobilnych
    Projekt polega na zbadaniu aktualnych właściwości jezdnych robotów pod kątem dokładności realizacji zadanej trajektorii (czy roboty jadą tak daleko i skręcają o tyle, ile im się rozkaże oraz czy robią to jednakowo), a następnie eksperymentalnym dobraniu kilku parametrów kalibracyjnych tak, aby roboty jeździły jak najdokładniej w stosunku do wydanych im poleceń. Pracę należy oprzeć na istniejącym sprawozdaniu i rozszerzyć.

  6. Sterowanie najnowszymi robotami LEGO NXT
    Projekt polega na zapoznaniu się z najnowszym modelem robotów LEGO Mindstorms NXT i napisaniu dość zaawansowanego programu realizującego jakieś zadanie, np. śledzenie linii lub pokonywanie labiryntu itp.

  7. Sterowanie robotami mobilnymi przez internet
    Projekt polega na usprawnieniu/modyfikacji istniejacej aplikacji realizującej sterowanie robotem mobilnym Lego przez Internet. Decyzje co do zachowania robota, kierunku jazdy itp. są podejmowane przez używtkownika na podstawie obrazu z kamery obserwującej robota.

  8. Śledzenie/wykrywanie obiektów w sekwencjach obrazów
    Projekt polega na wykorzystaniu gotowej biblioteki przetwarzania obrazów do śledzenia/wyszukiwania obiektow w sekwencjach obrazów. Modyfikacją projektu może być stworzenie własnego wzorca poszukiwanego obiektu (według gotowej procedury). W efekcie, nowo zbudowany wzorzec pozwalałby np. na automatyczne wyszukanie wszystkich miejsc w filmie, w których występują jakieś określone obiekty.

  9. Rozpoznawanie banknotów i monet
    Projekt jest kontynuacją gotowej aplikacji do rozpoznawania banknotów (do ściągnięcia stąd). Polega na wszechstronnym jej przetestowaniu i próbie oszukania (czyli stworzenia takiego falsyfikatu, którego program nie rozpozna, co nie powinno być zbyt trudne), a następnie zaproponowaniu modyfikacji uniemożliwiającej oszustwa, a także otymalizacji jej działania.

  10. Stereowizja 1
    Projekt polega na implementacji algorytmu widzenia stereowizyjnego (uruchomienie jednego z gotowych algorytmów) i wykorzystanie informacji 3D o obserwowanej scenie (np. podanie najbliższej przeszkody przed robotem mobilnym).

  11. Stereowizja 2
    Projekt polega na wykorzystaniu gotowego oprogramowania do kalibracji rzeczywistego systemu stereowizyjnego.

  12. Stereowizja 3
    Projekt polega na zbadaniu właściwości specjalistycznych kamer stereo, analizie ich pracy, doborze parametrów do scen bliskich i dalekich itp.

  13. Rozpoznawanie i interpretacja ruchów dłoni (analiza obrazów).
    Projekt polega na eksperymentalnym dobraniu parametrów powszechnie stosowanej w automatycznym rozpoznawaniu obrazów przestrzeni HSV w taki sposób, aby obraz ludzkiej skóry (rasa biała) był prawidłowo wydzielany spośród innych obiektów w różnym oświetleniu (dzienne, żarowe, jarzeniowe itp). Kolejnym etapem byłaby próba rozpoznania kształtu dłoni (sprowadza się to do wydzielenia kilku prostokątów oznaczających palce i środek dłoni).

  14. Segmentacja obrazów kolorowych
    Projekt polega wykorzystaniu (oraz modyfikacji, optymalizacji itd.) istniejącego oprogramowania (w wersji Beta) do segmentacji obrazów kolorowych i wydzielenia z nich interesujących nas obszarów na podstawie ich kolorów z uwazględnieniem niewielkich zmian odcieni i jasności. Przykładem może być aplikacja wydzielająca elementy (kafelki) kostki Rubika czy też kolor skóry człowieka z tła. Należy odpowiednio zidentyfikować poszukiwane kolory oraz uodpornić aplikację na zmianę warunków oświetleniowych.

  15. Strzał z armaty
    Projekt polega na opracowaniu (w miarę możliwości jak najdokładniejszej) symulacji  lotu kuli wystrzeliwanej z armaty z wykorzystaniem jakiegoś silnika fizyki. Docelowa aplikacja powinna umożliwiać wizualizację wyznaczonej trajektorii np. w postaci prostej gry, w której strzela się do celu.

  16. Mozaika
    Projekt polega na napisaniu aplikacji, która z wielu małych obrazów ułoży jeden duży obraz. Dostępne są materiały w postaci niemal gotowej pracy magisterskiej na zbliżony temat.

  17. Wyszukiwanie/sortowanie obrazów
    Projekt polega na napisaniu aplikacji umożliwiającej posortowanie obrazów pod względem ich zawartości lub znalezienie obrazów najbardziej zbliżonych do danego. Dostępne są materiały w postaci niemal gotowej pracy magisterskiej na zbliżony temat. Jest też gotowy projekt, który można rozszerzyć,

  18. Rozpoznawanie tablic rejestracyjnych
    Projekt polega na usprawnieniu gotowej aplikacji rozpoznającej tablice rejestracyjne (do ściągnięcia stąd), a w szczególności na doborze cech znaków i metod porównywania wektorów cech.

  19. Test refleksu
    Projekt polega na napisaniu relatywnie prostej aplikacji dokonującej pomiaru szybkości reakcji człowieka na różne bodźce wzrokowe i/lub słuchowe.

  20. Wizyjne modelowanie i rozpoznawanie obiektów
    Projekt polega na napisaniu aplikacji wspomagającej proces uczenia klasyfikatorów rozpoznających obiekty na podstawie serii ich zdjęć. Sam proces budowy, uczenia i użycia klasyfikatora jest już zaimplementowany. Należy dodać intuicyjny interfejs użytkownika i zamodelować wybrany obiekt (np. kubek) i go rozpoznać. Takie aplikacje już istnieją. Projekt polegałby na napisaniu własnej albo rozszerzeniu istniejącej o dodatkową funkcjonalność.

  21. Tutorial do OpenCV
    Projekt polega na napisaniu tutoriala do popularnej biblioteki przetwarzania obrazów. O ile sama biblioteka jest często aktualizowana, to dokumentacja do niej pozostawia wiele do życzenia, zwłaszcza jeśli chodzi o przykłady wykorzystania. Projekt polega na zebraniu dostępnych materiałów (dokumentacja producenta, kilka prac magisterskich oraz dużo materiałów w sieci) i stworzeniu dokumentu po kolei omawiającego i, przede wszystkim, ilustrującego działanie wszystkich komend.

  22. Gadający robot
    Projekt polega na napisaniu aplikacji wydającej komunikaty głosowe w zależności od sytuacji w jakiej znajdzie się robot. Pożądanym rozwiązaniem jest wykorzystanie syntetyzatora mowy, a nie uprzednio nagranych komunikatów. Rozszerzeniem tej aplikacji byłoby dodanie wizerunku głowy oraz próba rozumienia kilku wybranych słów i reakcja na nie.

  23. Rozszerzenie funkcjonalności phpbbbyPrzemo
    Projekt polega na dopisaniu kilku dodatkowych funkcji do tytułowego produktu. Wymagana dobra znajomość PHP.

  24. Lokalizacja obiektów w przestrzeni
    Projekt polega na wykorzystaniu gotowego oprogramowania służącego do lokalizacji obiektów w przestrzeni na podstawie 4 znanych punktów obserwowanych przez kamerę. Zasadnicza część projektu to zbadanie kilku różnych celów, które obserwuje kamera i ich wpływu na dokładność lokalizacji.

  25. Sterowanie obrotową kamerą
    Projekt polega na  takim wysterowaniu kamerą na ruchomej głowicy by ta zawsze widziała twarz człowieka. Program do rozpoznawania twarzy jest gotowy.

  26. Zastosowanie metod optymalizacyjnych do porównywania obrazów
    Projekt polega na zastosowaniu metod optymalizacji nieliniowej w procesie porównywania obrazów, a ściślej wyszukiwania fragmentu obrazu w całości. Standardowe podejście zakłada przesuwanie naszego małego obrazka co piksel po całym obrazie i w każdym miejscu wyznaczania jakiegoś współczynnika podobieństwa. Po "przeleceniu" całego obrazu, punkt gdzie współczynnik podobieństwa osiągnął maksimum uznajemy za punkt najlepszego dopasowania fragmentu do całości. Taka metoda jest wykorzystywana do wyszukiwania jakichś obiektów w obrazach. Jest ona jednak bardzo czasochłonna, ale można ją znacznie przyspieszyć wykorzystując algorytmy optymalizacji nieliniowej (bezgradientowej).

  27. Metody wydzialania znaków
    Projekt polega na przetestowaniu/opracowaniu kilku metod wydzialania pojedyńczych znaków z zeskanowanych wyrazów. Chodzi oczywiście o pismo drukowane. Często się zdarza, że znaki zlewają się ze sobą i proste algorytmy ich wydzielania nie zdają egzaminu. Chodzi o to by spróbować mimo wszystko wydzielić je z ciągu.

  28. Sklejanie obrazków
    Projekt polega na napisaniu aplikacji do automatycznego zszywania czy też sklejania obrazków w panoramy. Sporo jest na ten temat materiałów w sieci (image stitching)

  29. Uruchomienie i przetestowanie biblioteki CMVision
    Projekt polega na uruchomieniu i przetestowaniu malutkiej biblioteki (dosłownie kilka funkcji) realizującej jeden z etapów przetwarzania obrazów. Wspomniana biblioteka jest napisana w wysoko zaawansowanym kodzie C, więc jest to projekt dla osoby biegłej w C. Pożądane by było również połączenie tej biblioteki z OpenCV.

  30. Synteza mowy
    Projekt polega na przetestowaniu dostępnych narzędzi do syntezy mowy i porównaniu ich pod kątem jakości, stabilności i możliwości implementacji z poziomu języka C. Dysponujemy oprogramowaniem firmy IVO.

  31. Analiza mowy
    Projekt polega na przetestowaniu dostępnych narzędzi do analizy mowy i porównaniu ich pod kątem jakości, stabilności i możliwości implementacji z poziomu języka C. Dysponujemy oprogramowaniem Dragon Naturally Speaking.

  32. Analiza ruchu samochodowego
    Projekt polega na wykorzystaniu algorytmu np. przepływu optycznego (zaimplementowany w bibliotece OpenCV) do analizy ruchu samochodów - liczenia pojazdów, wykrywania ciężarówek itp.

  33. Analiza senności kierowcy
    Projekt polega na napisaniu aplikacji, która wyznacza czas mrugnięcia okiem. Okazuje się, że im człowiek jest bardziej śpiący, tym ten czas jest dłuższy. Jednym ze sposobów rozpoznania oka i jego stanu (zamknięte, otwarte) jest wytrenowanie dwóch klasyikatorów, które będą rozpoznawać oczy otwarte i zamknięte. Inne metody też są oczywiście dopuszczalne. Wszystko do zrealizowania w bibliotece OpenCV. 

  34. Rozpoznawanie zegarka analogowego
    Projekt polega na napisaniu aplikacji, która automatycznie znajdzie w obrazie tarczę zegara analogowego a następnie odczyta godzinę. Wykorzystać należy bibliotekę OpenCV. 

  35. Stabilizacja obrazu w sekwencji
    Projekt polega na napisaniu aplikacji wykorzystującą bibliotekę OpenCV, a konkretnie zaimplementowany w niej algorytm przepływu optycznego do stabilizacji obrazu. Teoretycznie zagadnienie polega na wyznaczeniu wektora ruchu obrazu (takie wektory zwraca algorytm przepływu optycznego), który nie jest zamierzonym ruchem obrazu (np. przesuwaniem kamery), a ruchem przypadkowym (drgania charakteryzują się zbliżoną amplitudą i zmieniającym się znakiem) i przesunięciu obrazu o wektor przeciwny.

  36. Grafika w kodzie ASCII
    Projekt polega na napisaniu aplikacji tworzącej plik tekstowy na podstawie bitmapy. Problemem jest tu dobór odpowiednich znaków kodu ASCII, które mają jak najdokładniej odzwierciedlać dany fragment obrazu.

  37. Przetwarzanie obrazów w telefonie komórkowym
    Projekt polega na napisaniu aplikacji pod systemWindows Mobile wykorzystującej bibliotekę (lub jej fragmenty) OpenCV. APlikacja ma wykonać jakieś stosunkowo proste operacje na obrazie pobranym z kamery.

  38. Analiza i dekompozycja gazet
    Projekt polega na napisaniu aplikacji wykorzystującej bibliotekę OpenCV do automatycznego poetykietowania strony z gazety (lub czasomisma ;), w taki sposób by każdy artykuł otrzymał unikalną etykietę. Jest to pierwszy etap procesu automatycznej analizy prasy.

  39. Wizyjne sterowanie manipulatorem - rozwinięcie już zrealizowanego projektu.

  40. Rozpoznawanie znaków drogowych
    Projekt polega na napisaniu aplikacji wykorzystującej bibliotekę OpenCV do rozpoznawania znaków drogowych sfilmowanych kamerą zamieszczoną w samochodzie. Aplikacja miałaby za zadanie wspomaganie kierowcy, przypominanie mu o ograniczeniach prędkości, ostrzeganie przed niebezpiecznym zakrętem czy przejściem dla pieszych. Główna trudność zadania polega na tym, że w różnych warunkach pogodowych znaki drogowe wyglądają bardzo różnie. Trzeba więc zrobić szereg zdjęć wybranych znaków w różnych warunkach i próbować dobrać do tych danych jakąś metodę rozpoznawania.

  41. Wykrywanie samochodów przejeżdżających na czerwonym świetle
    Projekt polega na napisaniu aplikacji wykorzystującej bibliotekę OpenCV do analizy obrazu z kamery umieszczonej w pobliżu skrzyżowania. Kamera skierowana jest na sygnalizator świetlny, rozpoznaje światła i wykrywa samochody wjeżdżające na skrzyżowanie po zapaleniu się światła żółtego. W najprostszej wersji wystarczy wykryć zmianę obrazu w pewnej jego części po znalezieniu w nim żółtopomarańczowego kółka. Dalsza analiza byłaby dokonywana ręcznie (przez człowieka). Bardziej zaawansowane wersje mogą próbować nie podnosić alarmu, gdy na pasy wejdzie pieszy (taka zmiana obrazu "pod światłami" nie powinna być wychwytywana) czy jak samochód zjeżdża ze skrzyżowania. Kolejnym etapem może być automatyczne rozpoznawanie rejestracji tudzież marki pojazdu. W każdym razie potrzebnych będzie dużo zdjęć albomateriału filmowego.
  42. Zastosowanie sieci neuronowych do predykcji przebiegów czasowych
    Projekt polega na przetestowaniu różnych konfiguracji sieci neuronowych (jest do tego gotowe oprogramowanie) w zadaniu wyznaczania przyszłych wartości sygnału. Uczenie sieci polega na podaniu na jej wejście fragmentu przebiegu, a na wyjściu znanej wartości sygnału następującej po fragmencie wejściowym. Odpowiednia architektura sieci i odpowiedni zbiór sekwencji uczących powinien umożliwić sieci przewidzenie przyszłej wartości sygnału. Interesujące jest sprawdzenie poprawności takiej predykcji na sygnałach okresowych (łatwo), okresowych zaburzonych/złożonych (trudniej) i nieokresowych - np. kurs akcji (trudno).

  43. Śledzenie obiektów w sekwencjach obrazów
    Projekt polega na wszechstronnym przetestowaniu algorytmu śledzącego, znalezieniu jego wad i próbie ich zminimalizowania. http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html
  44. Wzbogacona rzeczywistość w OpenCV
    Projekt polega na wszechstronnym przetestowaniu algorytmu wykrywania znaczników, znalezieniu jego wad i próbie ich zminimalizowania, a także zaproponowaniu jakiejś aplikacji z wykorzystaniem tej technologii. http://www.uco.es/investiga/grupos/ava/node/26
  45. Rozpoznawanie obiektów 3D przy użyciu Point Cloud Library
    Projekt polega na przetestowaniu możliwości tytułowej biblioteki. http://pointclouds.org/
  46. ROS - Uniwersalny system operacyjny robotów
    Projekt polega na przetestowaniu możliwości tego uniwersalnego systemu operacyjnego robotów na naszych robotach (Lego NXT oraz Pioneer 3DX), a w wersij rozszerzonej na napisainu sterownika do ROSa dla nszego manipulatora ScorbotER-4u. http://www.ros.org/wiki/
  47. Programowanie wielowątkowe z użyciem OpenCV i TBB
    Projekt polega na weryfikacji wzrostu wydajności typowych algorytmów wizyjnych (i nie tylko) przy zastosowaniu biblioteki TBB do zrównoleglania zadań na procesorach wielordzeniowych. Większość algorytmów została już zoptymalizowana pod kątem wielowątkowości, wystarczy więc przetestować je na jednym i wielu rdzeniach. Warto jednak spróbować samodzielnie zrównoleglić jakieś zadanie wizyjne (ręczne zrównoleglanie zazwyczaj jest lepsze od automatycznego).  http://threadingbuildingblocks.org/

 

 


 


 

Tryb realizacji projektóww

Doświadczenia lat ubiegłych pokazują, że brak kontroli ze strony prowadzącego podczas realizacji projektów prowadzi często to mizernych efektów. Aby tego uniknąć i zakończyć projekt sukcesem i w terminie (oznacza to ukończenie aplikacji, demonstrację jej działania oraz napisanie i przekazanie sprawozdania/dokumentacji) będę wymagał regularnego raportowania na temat stanu pracy, osiągnięć i problemów, planów na najbliższą przyszłość itd. Regularność i jakość tych raportów będzie w wpływać na ocenę końcową (w przypadku projektów zespołowych pozwoli na indywidualną ocenę jego uczestników i wyeliminuje tzw. martwe dusze) oraz będzie czynnikiem mobilizującym. Forma raportów i sposób ich przekazywania zostanie ustalony oddzielnie.

Copyright © 2007 Witold Czajewski