AiR - Informatyka 2
Zadanie na laboratorium

Zadanie

Tematem ćwiczenia będzie napisanie programu do konwersji czarno-białych obrazów rastrowych PGM (ze skalą szarości) za pomocą macierzy konwolucji. Program powinien po kolei:

  1. wczytać do tablicy w pamięci obraz z pliku wejściowego .pgm o nazwie zadanej argumentem wywołania -i, bądź ze standardowego wejścia (pliku INPUT) jeśli nazwa pliku będzie podana jako "-" (brak opcji -i w wywołaniu programu stanowi błąd)
  2. wykonać splotową transformację obrazu zgodnie z macierzą konwolucji 3x3, której dziewięć współczynników zadanych będzie w argumentach wywołania programu po opcji -s,
  3. jeśli zadano opcję -d i obrazy są czytane i zapisywane na plikach, to za pomocą funkcji system wyświetlić te obrazy programem "display" do wizualnej oceny wykonanej transformacji,
  4. zapisać przetworzony obraz na pliku .pgm o nazwie zadanej argumentem wywołania za opcją -o, bądź na standardowym wyjściu (pliku OUTPUT) jeśli nazwa pliku będzie podana jako "-" (brak opcji -o w wywołaniu programu oznacza, że obrazu wynikowego nie należy nigdzie zapisywać),
  5. zakończyć pracę.

W szczególności program nie powinien komunikować się z użytkownikiem, z wyjątkiem wystąpienia błędu (np. w formacie pliku, lub w argumentach wywołania).

Wzory matematyczne do transformacji splotowej można znaleźć w oddzielnym opisie FiltrSplot.pdf

Szczegółowy opis formatu PGM biblioteki PBM można znaleźć w oddzielnym opisie Obrazy_format.pdf

Posługiwanie się argumentami wywołania programu, jak również uruchamianie programów wewnątrz programu będzie omówione przez prowadzącego laboratorium oraz na wykładzie.

Przykłady

Następujące wywołanie programu powinno spowodować filtrację uśredniającą obrazu z pliku obr1.pgm i wypisać obraz wynikowy na wyjściu:

splot -i obr1.pgm -s 1 1 1 1 2 1 1 1 1 -o -

Poniższe wywołanie powinno wyświetlić obraz z pliku obr2.pgm, następnie wykonać na nim poziomy filtr Sobela, wyświetlić obraz wynikowy, oraz zapisać ten obraz na pliku obr2_sob.pgm:

splot -d -o obr2_sob.pgm -i obr2.pgm -s -1 -2 -1 0 0 0 1 2 1