Informatyka 2 – Przetwarzanie obrazów A
Transkrypt
Informatyka 2 – Przetwarzanie obrazów A
Informatyka 2 – Przetwarzanie obrazów A Napisz program, który umożliwi użytkownikowi wykonanie następujących operacji: • Wczytanie z pliku obrazu w formacie PGM • Usunięcie wczytanego obrazu z pamięci • Zapisanie obrazu do pliku o podanej przez użytkownika nazwie • Wyświetlenie informacji o parametrach wczytanego obrazu • Obliczenie histogramu obrazu • Odbicie obrazu w poziomie • Wykrywanie krawędzi operatorem Sobela (w kierunku poziomym) • Wygładzenie histogramu • Zapisanie histogramu do pliku o nazwie takiej jak nazwa obrazu z dopiskiem -hist i rozszerzeniu csv. • Wygenerowanie obrazu histogramu i zapisanie go do pliku PGM • Podwójne powiększenie obrazu z wykorzystaniem interpolacji medianowej Do reprezentacji obrazu należy wykorzystać strukturę danych. Pamięć na tablicę pikseli oraz na histogram należy alokować dynamicznie. Poszczególne operacje należy rozbić na funkcje przyjmujące jako parametry wskaźnik na strukturę obrazu oraz wszelkie niezbędne dane. W dokumentacji wystarczy zawrzeć przykładowe obrazy ilustrujące poszczególne operacje wykonywane przez program. Cały projekt należy rozłożyć na 3 pliki – main.c (program główny), pgm.h (deklaracje struktury dla obrazu oraz funkcji przetwarzających obrazy) i pgm.c (definicje funkcji przetwarzających obrazy). Funkcje przetwarzające obrazy nie powinny wykonywać jakichkolwiek operacji interakcji z użytkownikiem. Wybór poszczególnych operacji do wykonania przez program należy zaimplementować w formie menu z opcjami wyboru wyświetlanymi na ekranie. Specyfikacja formatu PGM: http://student.mvlab.pl/pliki/c/obrazy/Specyfikacja_PGM.pdf oraz http://netpbm.sourceforge.net/doc/pgm.html (program powinien uwzględniać możliwość pojawienia się w pliku dowolnej liczby linii komentarzy) Przykładowe obrazy: http://student.mvlab.pl/pliki/c/obrazy/ Opis niektórych operacji: http://student.mvlab.pl/pliki/c/obrazy/operacje/ Termin oddania programu: 18.12.2014 Punktacja programu: p = a1a2a3a4a5a6a7 • a1 – zgodność działania programu z podaną specyfikacją – 6 pkt • a2 – poprawność wykorzystania elementów języka C (pętle, instrukcje sterujące, odczyt i zapis do plików, struktury, dynamiczna alokacja pamięci, funkcje, podział na pliki, brak ostrzeżeń podczas kompilacji...) – 8 pkt • a3 – styl programowania (wcięcia w kodzie, intuicyjne nazwy zmiennych i funkcji, stosowanie komentarzy) – 4 pkt • a4 – odporność programu na błędnie podane dane oraz błędy w plikach – 4 pkt • a5 – terminowość oddania programu – w terminie: 2 pkt, termin przekroczony: -1 pkt za każdy dzień spóźnienia • a6 – bieżące informowanie o postępie prac nad programem (na zajęciach) – 2 pkt • a7 – dokumentacja programu – 4 pkt (obrazy ilustrujące poszczególne operacje, format PDF) • Razem: 30pkt Punkty bonusowe: W celu otrzymania dodatkowych 4 punktów, należy umożliwić użytkownikowi wczytywanie nie jednego, a dowolnej liczby obrazów w formacie pgm i wykonywanie na nich poszczególnych operacji. Operacje będą w takiej sytuacji wykonywane na wskazanym przez użytkownika obrazie. Informatyka 2 – Przetwarzanie obrazów B Napisz program, który umożliwi użytkownikowi wykonanie następujących operacji: • Wczytanie obrazu w formacie PGM • Usunięcie wczytanego obrazu z pamięci • Zapisanie obrazu do pliku o podanej przez użytkownika nazwie • Wyświetlenie informacji o parametrach wczytanego obrazu • Obliczenie histogramu obrazu • Rozjaśnienie obrazu • Znalezienie wartości najjaśniejszego piksela na obrazie • Odbicie obrazu w pionie • Wykrywanie krawędzi operatorem Sobela (we wszystkich kierunkach) • Automatyczne progowanie obrazu Do reprezentacji obrazu należy wykorzystać strukturę danych. Pamięć na tablicę pikseli oraz na histogram należy alokować dynamicznie. Poszczególne operacje należy rozbić na funkcje przyjmujące jako parametry wskaźnik na strukturę obrazu oraz wszelkie niezbędne dane. W dokumentacji wystarczy zawrzeć przykładowe obrazy ilustrujące poszczególne operacje wykonywane przez program. Cały projekt należy rozłożyć na 3 pliki – main.c (program główny), pgm.h (deklaracje struktury dla obrazu oraz funkcji przetwarzających obrazy) i pgm.c (definicje funkcji przetwarzających obrazy). Funkcje przetwarzające obrazy nie powinny wykonywać jakichkolwiek operacji interakcji z użytkownikiem. Wybór poszczególnych operacji do wykonania przez program należy zaimplementować w formie menu z opcjami wyboru wyświetlanymi na ekranie. Specyfikacja formatu PGM: http://student.mvlab.pl/pliki/c/obrazy/Specyfikacja_PGM.pdf oraz http://netpbm.sourceforge.net/doc/pgm.html (program powinien uwzględniać możliwość pojawienia się w pliku dowolnej liczby linii komentarzy) Przykładowe obrazy: http://student.mvlab.pl/pliki/c/obrazy/ Opis niektórych operacji: http://student.mvlab.pl/pliki/c/obrazy/operacje/ Termin oddania programu: 18.12.2014 Punktacja programu: p = a1a2a3a4a5a6a7 • a1 – zgodność działania programu z podaną specyfikacją – 6 pkt • a2 – poprawność wykorzystania elementów języka C (pętle, instrukcje sterujące, odczyt i zapis do plików, struktury, dynamiczna alokacja pamięci, funkcje, podział na pliki, brak ostrzeżeń podczas kompilacji...) – 8 pkt • a3 – styl programowania (wcięcia w kodzie, intuicyjne nazwy zmiennych i funkcji, stosowanie komentarzy) – 4 pkt • a4 – odporność programu na błędnie podane dane oraz błędy w plikach – 4 pkt • a5 – terminowość oddania programu – w terminie: 2 pkt, termin przekroczony: -1 pkt za każdy dzień spóźnienia • a6 – bieżące informowanie o postępie prac nad programem (na zajęciach) – 2 pkt • a7 – dokumentacja programu – 4 pkt (obrazy ilustrujące poszczególne operacje, format PDF) • Razem: 30pkt Punkty bonusowe: W celu otrzymania dodatkowych 4 punktów, należy umożliwić użytkownikowi wczytywanie nie jednego, a dowolnej liczby obrazów w formacie pgm i wykonywanie na nich poszczególnych operacji. Operacje będą w takiej sytuacji wykonywane na wskazanym przez użytkownika obrazie.