| 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
- 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.
- 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.
- 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).
- 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.
- 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ć.
- 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.
- 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.
- Ś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.
- 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.
- 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).
- Stereowizja 2
Projekt polega na wykorzystaniu gotowego oprogramowania do kalibracji rzeczywistego
systemu stereowizyjnego.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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ć,
- 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.
- 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.
- 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ść.
- 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.
- 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.
- Rozszerzenie funkcjonalności phpbbbyPrzemo
Projekt polega na dopisaniu kilku dodatkowych funkcji do tytułowego produktu. Wymagana
dobra znajomość PHP.
- 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.
- 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.
- 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).
- 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.
- 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Wizyjne sterowanie manipulatorem - rozwinięcie już zrealizowanego projektu.
- 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.
- 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.
- 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).
- Ś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
- 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
- Rozpoznawanie obiektów 3D przy użyciu Point Cloud Library
Projekt polega na przetestowaniu możliwości tytułowej biblioteki.
http://pointclouds.org/
- 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/
- 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.
|