Przetwarzanie obrazów cyfrowych

Podobne dokumenty
Formaty obrazów rastrowych biblioteki PBM

Przetwarzanie obrazów rastrowych macierzą konwolucji

Operacje przetwarzania obrazów monochromatycznych

Wykorzystanie grafiki wektorowej do tworzenia elementów graficznych stron i prezentacji

Cała prawda o plikach grafiki rastrowej

GRAFIKA RASTROWA. WYKŁAD 2 Oprogramowanie i formaty plików. Jacek Wiślicki Katedra Informatyki Stosowanej

Podstawy grafiki komputerowej. Teoria obrazu.

Grafika komputerowa. Dla DSI II

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Diagnostyka obrazowa

dr inż. Piotr Odya dr inż. Piotr Suchomski

Diagnostyka obrazowa

Grafika rastrowa (bitmapa)-

Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +

Podstawy Informatyki Wykład V

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory

dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ

Analiza i przetwarzanie obrazów

Grafika Komputerowa Wykład 1. Wstęp do grafiki komputerowej Obraz rastrowy i wektorowy. mgr inż. Michał Chwesiuk 1/22

FORMATY PLIKÓW GRAFICZNYCH

1. Przypisy, indeks i spisy.

Zamiana reprezentacji wektorowej na rastrową - rasteryzacja

Technologie cyfrowe semestr letni 2018/2019

Python: JPEG. Zadanie. 1. Wczytanie obrazka

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

Techniki multimedialne

Gimp Grafika rastrowa (konwersatorium)

Warstwa Rysunek bitmapowy Rysunek wektorowy

Grafika na stronie www

1 LEKCJA. Definicja grafiki. Główne działy grafiki komputerowej. Programy graficzne: Grafika rastrowa. Grafika wektorowa. Grafika trójwymiarowa

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Obróbka grafiki cyfrowej

Zapis liczb binarnych ze znakiem

Analiza i Przetwarzanie Obrazów. Szyfrowanie Obrazów. Autor : Mateusz Nawrot

Analiza obrazu. wykład 4. Marek Jan Kasprowicz Uniwersytet Rolniczy 2009

Dane obrazowe. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Metoda znak-moduł (ZM)

Obraz jako funkcja Przekształcenia geometryczne

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Metody komputerowe w obliczeniach inżynierskich

Kompresja obrazów i formaty plików graficznych

Techniki wizualizacji. Ćwiczenie 2. Obraz cyfrowy w komputerze

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

Do obsługi plików BMP należy stworzyć klasę przechowującą zawartość obrazu i udostępniającą następujące metody:

EDYCJA TEKSTU MS WORDPAD

Proste metody przetwarzania obrazu

Znak wersja podstawowa

Księgarnia internetowa Lubię to!» Nasza społeczność

Sposoby cyfrowego zapisywania obrazów

Odczytywanie i zapisywanie obrazów rastrowych do plików, operacje punktowe na tablicach obrazów

Formaty plików graficznych - wprowadzenie

Przekształcenia punktowe

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Formaty plików graficznych

Ćwiczenie: JavaScript Cookies (3x45 minut)

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Percepcja obrazu Podstawy grafiki komputerowej

Część II Wyświetlanie obrazów

8. Dynamiczne generowanie grafiki, cz. 2

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

1.1. Pozycyjne systemy liczbowe

1. Wprowadzanie danych z klawiatury funkcja scanf

Ćwiczenia z grafiki komputerowej 4 PRACA NA WARSTWACH. Miłosz Michalski. Institute of Physics Nicolaus Copernicus University.

Spis treści. Programowanie w ImageJ. Zadanie 1. Zadanie 2

Kurs grafiki komputerowej Lekcja 2. Barwa i kolor

Waldemar Izdebski - Wykłady z przedmiotu SIT / Mapa zasadnicza 30

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Grafika komputerowa dziedzina informatyki zajmująca się wykorzystaniem technik komputerowych do celów wizualizacji artystycznej oraz wizualizacji i

Przetwarzanie obrazów wykład 4

SYSTEMY LICZBOWE 275,538 =

Ćwiczenie 6. Transformacje skali szarości obrazów

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

Technologie Informacyjne

Przetwarzanie obrazów

Przetwarzanie obrazu

ECDL/ICDL Edycja obrazów Moduł S4 Sylabus - wersja 2.0

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

Teoria światła i barwy

Systemy zapisu liczb.

Adam Korzeniewski p Katedra Systemów Multimedialnych

SYLABUS ECCC MOD U Ł : C S M2 GR A F I K A KO M P U T E R O W A PO Z I O M: PO D S T A W O W Y (A)

NOWY SZABLON IMPORTU PLIKÓW

Analiza obrazu. wykład 1. Marek Jan Kasprowicz Uniwersytet Rolniczy Marek Jan Kasprowicz Analiza obrazu komputerowego 2009 r.

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Autor: dr inż. Katarzyna Rudnik

Rodzaje plików. Podstawowe definicje.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Katalog dobrych praktyk digitalizacyjnych dla obiektów bibliotecznych

Formaty plików graficznych

Podstawy grafiki komputerowej

Transkrypt:

Przetwarzanie obrazów cyfrowych Zadanie do wykonania Należy napisać program pozwalający na przetwarzanie obrazów cyfrowych. Program ma prezentować użytkownikowi menu, pozwalające na: 1. wybór pliku zawierającego obraz przeznaczony do obróbki, 2. wykonanie wybranych operacji na obrazie zgodnie z zaleceniem prowadzącego zajęcia (skalowanie, zamiana formatu obrazu, konturowanie, nakładanie obrazów itp.) opis możliwych operacji na obrazie znajduje się poniżej. 3. zapisanie przetworzonego obrazu na pliku, 4. wyświetlenie obrazu (początkowego lub po obróbce) na ekranie, w celu szybkiej weryfikacji wyniku, 5. zakończenie działania programu. Założenia do programu Program będzie operował na wskazanych przez prowadzącego formatach plików. Opis możliwych formatów plików znajduje się na stronie 3. W celu wizualizacji obraz będzie wyświetlany przy wykorzystaniu programu xv (wywoływanego funkcją C system). Program musi zostać wyposażony w interfejs użytkownika zbudowany w oparciu o bibliotekę curses (więcej o interfejsach użytkownika na stronie 7). W przypadku implementacji większej niż wymagana liczby operacji na obrazie/obsługi większej liczby formatów plików postać interfejsu jest dowolna. W rozliczeniu ćwiczenia należy dostarczyć program napisany w pascalu. Operacje na obrazie Obrazy cyfrowe są na ogół dwuwymiarowymi tablicami złożonymi z pikseli, które to piksele reprezentowane są przez liczby określające ich jasność i kolor, a uzyskiwane na przykład z kamery podłączonej do komputera. Ważnym zagadnieniem w technice jest rozpoznawanie takich obrazów, to znaczy ustalenie, który fragment obrazu odpowiada któremu obiektowi rzeczywistemu, i jakie informacje o tym obiekcie możemy uzyskać, np. jego położenie, kierunek ruchu, prędkość. Jest to zadanie trudne, szczególnie ze względu na fakt, że obrazy otrzymywane z kamer zawierają oprócz obrazów interesujących obiektów dużą ilość innych informacji i są dodatkowo zmodyfikowane takimi zjawiskami jak: natężenie i kolor oświetlenia, ilość, rozmieszczenie i charakter źródeł światła, odbicia, nieostrość, różnice w obrazie obiektu w zależności od odległości i orientacji, oraz innymi. Dlatego, proces analizy obrazu rozbija się na szereg operacji prostszych, takich jak wstępna filtracja, skalowanie, konturowanie, wyodrębnienie obiektów itd. Konturowanie W niektórych zastosowaniach celowe jest sztuczne wyostrzanie konturów (obrysów poszczególnych elementów obrazów) w celu wydobycia szczegółów, prowadzące w krańcowym przypadku do przekształcenia obrazu do postaci dwupoziomowej, z zaznaczonymi wyłącznie konturami. Poniżej zajmiemy się konturowaniem obrazów monochromatycznych. Jedną z metod wyodrębniania konturów obrazu jest metoda gradientowa. Gradient funkcji jest funkcją wektorową przyporządkowującą każdemu punktowi wektor wskazujący kierunek największego wzrostu funkcji podstawowej, o wartości proporcjonalnej do wielkości 1

tego wzrostu. Jeżeli funkcją podstawową L(x, y) będzie funkcja jasności obrazu monochromatycznego (czarno-białego), to miejsca o dużych wartościach gradientu, czyli zmiany jasności, odpowiadają często konturom obiektów widocznych na obrazie. Moduł gradientu funkcji jasności jest dany wzorem: (dl ) 2 G(x, y) = + dx ( ) 2 dl dy Dla zapisanego w dwuwymiarowej tablicy L[x, y] monochromatycznego obrazu cyfrowego możemy różniczki zupełne z powyższego wzoru zastąpić w przybliżeniu zwykłymi różnicami. Wzór przybiera wtedy postać: G[x, y] (L[x + 1, y] L[x, y]) 2 + (L[x, y + 1] L[x, y]) 2 Z kolei, ponieważ przy konturowaniu istotny jest tylko bezwzględny przyrost wartości funkcji jasności, możemy skorzystać z wzoru uproszczonego, w którym pierwiastek sumy kwadratów zastąpiono sumą wartości bezwzględnych: G[x, y] L[x + 1, y] L[x, y] + L[x, y + 1] L[x, y] Oba powyższe wzory różnicowe można obliczyć dla wszystkich punktów obrazu, oczywiście za wyjątkiem punktów z ostatniego rzędu i ostatniej kolumny obrazu, co wynika to z przyjętego sposobu przybliżania różnic. Skalowanie Skalowanie polega na zmianie liczby pikseli tworzących obraz. Przy skali s z obrazu wyjściowego o wymiarach n m otrzymujemy obraz o wymiarach [s n] [s m], gdzie [x] oznacza część całkowitą liczby x. Poniżej zostanie opisana metoda skalowania obrazów monochromatycznych dla skal całkowitych (powiększanie) i o wartościach 1/s, s Z (pomniejszanie). Dla jasności punktu obrazu wyjściowego danego funkcją L(x, y) obraz wynikowy będzie opisany przez L(x, y) = L([(x 1)/s] + 1, [(y 1)/s] + 1), 1 x s n, 1 y s m, przy powiększaniu (skala s) oraz przez L(x, y) = L(s x, s y), 1 x [n/s], 1 y [m/s], przy pomniejszaniu (skala 1/s). Widać, że przy takim wyborze funkcji skalowanie polega na powielaniu/pomijaniu punktów obrazu wyjściowego. Oczywiście możliwy jest inny wybór funkcji, przy których np. jasność punktów obrazu wynikowego wyliczana jest jako średnia jasności sąsiadujących ze sobą punktów obrazu wyjściowego. Zamiana obrazu kolorowego na monochromatyczny Zamiana obrazu kolorowego na monochromatyczny polega na wyliczeniu dla każdego piksela obrazu wyjściowego jego jasności na podstawie informacji o jego składowych kolorowych r(x, y), g(x, y), b(x, y). Najprościej można tego dokonać stosując wzór L(x, y) = r(x, y) + g(x, y) + b(x, y), 3 1 x n, 1 y m. Przy dokonywaniu procesu odwrotnego (zamianie obrazu monochromatycznego na kolorowy) najprościej jest przyjąć wartość jasności poszczególnych punktów jako wartości nasycenia ich składowych kolorowych (naturalnie nie zmieni to wyglądu obrazu zmianie ulegnie jedynie sposób jego reprezentacji). 2

Progowanie Jedną z metod segmentacji obrazu jest progowanie. Polega ono na dokonaniu klasyfikacji pikseli obrazu do jednej z dwóch klas: zbioru punktów czarnych lub zbioru punktów białych. Proces może zostać przeprowadzony po arbitralnym wybraniu wartości progu p zgodnie ze wzorem { 0, dla L(x, y) p, L(x, y) = 1, dla L(x, y) > p. Inne operacje na obrazie Przedstawione operacje na obrazie nie wyczerpują oczywiście wachlarza możliwych sposobów przetwarzania obrazów. Ponadto możliwe jest łączenie kilku obrazów ze sobą, wycinanie fragmentów obrazu, obracanie obrazu, zmiana jego jasności, kontrastu, zabarwienia, solaryzacja, rozmywanie, wyostrzanie itp. Reprezentacja obrazu Obrazy pobierane z kamery, bądź dowolnego innego źródła, mogą być składowane na pliku dyskowym w jednym z wielu istniejących formatów zapisu obrazów rastrowych. Poniżej omówiono kilka z nich. Formaty plików pbm Przenośny format bitmapowy pbm (portable bitmap) jest to najprostszy format monochromatyczny (z pewnością dużo prostszy od jego opisu:-). Nadaje się on do przechowywania obrazów czarno-białych (sensu stricte, tzn. złożonych jedynie z pikseli czarnych lub białych). W podstawowej wersji tworzony plik jest plikiem tekstowym zawierającym informacje o pojedynczym obrazie. Plik zapisany w formacie pbm zawiera w kolejności: Numer magiczny, określający rodzaj pliku. Numer magiczny najprostszego pliku pbm to dwa pierwsze znaki, ustawione na P1. Co najmniej jeden znak biały (spacja, tabulacja, CR, LF). Szerokość obrazu (W ), podana w pikselach jako liczba dziesiętna zapisana za pomocą znaków ASCII. Wysokość obrazu (H), znowu podana w pikselach jako liczba dziesiętna zapisana za pomocą Ciąg W H znaków 0 lub 1. Znak 0 oznacza biel, znak 1 oznacza czerń. Znaki kodują piksele obrazu począwszy od jego lewego górnego rogu w kierunku zgodnym z kierunkiem normalnego czytania. Znaki białe w tej sekcji są ignorowane. Cokolwiek zaczynające się od białego znaku zostanie to zignorowane. Linia zawierająca informacje o szerokości obrazu może być poprzedzona liniami komentarza rozpoczynającymi się znakiem # linie te są ignorowane. Linie nie powinny być dłuższe niż 70 znaków. Oto przykład małej bitmapy w tym formacie: P1 # feep.pbm 24 7 3

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 która definiuje obraz o rozmiarach 24 7 pikseli. Proszę zauważyć, że graficzny układ pliku nie musi odzwierciedlać w żaden sposób układu obrazka (wszystkie znaki mogą być podane w jednej linii, bądź każdy znak może znaleźć się w osobnej linii, czy jakkolwiek inaczej). Istnieje wariant tego formatu pozwalający na zapisanie informacji o pikselach obrazu w postaci binarnej. Różnice pomiędzy tym formatem a formatem opisanym wcześniej to: Numer magiczny, to P4 zamiast P1. Po wysokości H dozwolony jest tylko jeden znak biały (zazwyczaj znak nowej linii). Ciąg W rzędów zawierających po nie mniej niż H bitów, występujący w miejscu ciągu znaków 0 lub 1. Każdy bit koduje pojedynczy piksel obrazu tak, jak poprzednio robiły to znaki. Bity są zapisywane po osiem na bajt, w kolejności najpierw bardziej znaczący. Ostatni bajt w każdym rzędzie uzupełniony jest w razie potrzeby bitami nieznaczącymi. Nie są dopuszczalne w tej sekcji białe znaki. Plik może zawierać informacje o kilku następujących po sobie obrazach. Więcej man pbm. Formaty plików pgm Przenośny format szarej bitmapy pgm (portable graymap) jest to prosty format monochromatyczny. Nadaje się on do przechowywania obrazów zawierających wiele odcieni szarości. W podstawowej wersji tworzony plik jest plikiem tekstowym zawierającym informacje o pojedynczym obrazie. Plik zapisany w formacie pgm zawiera w kolejności: Numer magiczny, określający rodzaj pliku. Numer magiczny tekstowej wersji pliku pgm to dwa pierwsze znaki, ustawione na P2. Co najmniej jeden znak biały (spacja, tabulacja, CR, LF). Szerokość obrazu (W ), podana w pikselach jako liczba dziesiętna zapisana za pomocą znaków ASCII. Wysokość obrazu (H), znowu podana w pikselach jako liczba dziesiętna zapisana za pomocą Maksymalna wartość szarości (M), również podana jako liczba dziesiętna zapisana za pomocą Ciąg W H wartości zawierających się między 0 a M i zapisanych jako liczby dziesiętne w kodzie ASCII odzielone od siebie białymi znakami. 0 oznacza czerń, M biel, pozostałe wartości odcienie pośrednie. Wartości kodują piksele obrazu począwszy od jego lewego górnego rogu w kierunku zgodnym z kierunkiem normalnego czytania. Linia zawierająca informacje o maksymalnej wartości szarości obrazu może być poprzedzona liniami komentarza rozpoczynającymi się znakiem # linie te są ignorowane. 4

Linie nie powinny być dłuższe niż 70 znaków. Oto przykład małej bitmapy w tym formacie: P2 # feep.pgm 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 która jak poprzednio definiuje obraz o rozmiarach 24 7 pikseli, zawierający 15 odcieni szarości. I tutaj graficzny układ pliku nie musi odzwierciedlać w żaden sposób układu obrazka (wszystkie liczby mogą być podane w jednej linii, bądź każda liczba może znaleźć się w osobnej linii, czy jakkolwiek inaczej). Istnieje także wariant tego formatu pozwalający na zapisanie informacji o pikselach obrazu w postaci binarnej. Różnice pomiędzy tym formatem a formatem opisanym wcześniej to: Numer magiczny, to P5 zamiast P2. Maksymalna wartość szarości musi być mniejsza od 65536. Po maksymalnej wartości szarości M dozwolony jest tylko jeden znak biały (zazwyczaj znak nowej linii). Ciąg W H wartości zawierających się między 0 a M i zapisanych binarnie za pomocą jednego (dla M < 256) lub dwóch bajtów (bardziej znaczący bajt jest pierwszy). Sposób kodowania pikseli jak poprzednio. Nie są dopuszczalne w tej sekcji białe znaki. Plik może zawierać informacje o kilku następujących po sobie obrazach. Więcej man pgm. Formaty plików ppm Przenośny format pixmapowy ppm (portable pixmap) jest to prosty format dla obrazów kolorowych. Należy zaznaczyć, że format ten jest wysoce nie efektywny, powoduje tworzenie ogromnych plików, zawierających niejednokrotnie informacje o obrazie, których oko ludzkie w ogóle nie jest w stanie dostrzec. Jednakże prostota tego formatu decyduje o jego stosowaniu. W podstawowej wersji tworzony plik jest plikiem tekstowym zawierającym informacje o pojedynczym obrazie. Plik zapisany w formacie ppm zawiera w kolejności: Numer magiczny, określający rodzaj pliku. Numer magiczny tekstowej wersji pliku ppm to dwa pierwsze znaki, ustawione na P3. Co najmniej jeden znak biały (spacja, tabulacja, CR, LF). Szerokość obrazu (W ), podana w pikselach jako liczba dziesiętna zapisana za pomocą znaków ASCII. Wysokość obrazu (H), znowu podana w pikselach jako liczba dziesiętna zapisana za pomocą 5

Maksymalna wartość składowych kolorowych obrazu (M), również podana jako liczba dziesiętna zapisana za pomocą Ciąg W H trójek wartości zawierających się między 0 a M i zapisanych jako liczby dziesiętne w kodzie ASCII, oddzielone od siebie białymi znakami. Kolejne trzy wartości oznaczają poziom składowej czerwonej, zielonej i niebieskiej dla poszczególnych pikseli. 0 oznacza wyłączenie koloru, M jego maksymalne nasycenie. Trójki kodują piksele obrazu począwszy od jego lewego górnego rogu w kierunku zgodnym z kierunkiem normalnego czytania. Linia zawierająca informacje o maksymalnej wartości składowych kolorowych obrazu może być poprzedzona liniami komentarza rozpoczynającymi się znakiem # linie te są ignorowane. Linie nie powinny być dłuższe niż 70 znaków. Oto przykład małej bitmapy w tym formacie: P3 # feep.ppm 4 4 15 0 0 0 0 0 0 0 0 0 15 0 15 0 0 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15 7 0 0 0 15 0 15 0 0 0 0 0 0 0 0 0 która definiuje obraz o rozmiarach 4 4 pikseli. Ponownie graficzny układ pliku nie musi odzwierciedlać w żaden sposób układu obrazka (wszystkie liczby mogą być podane w jednej linii, bądź każda liczba może znaleźć się w osobnej linii, czy jakkolwiek inaczej). Istnieje także wariant tego formatu pozwalający na zapisanie informacji o pikselach obrazu w postaci binarnej. Różnice pomiędzy tym formatem a formatem opisanym wcześniej to: Numer magiczny, to P6 zamiast P3. Maksymalna wartość składowych kolorowych musi być mniejsza od 65536. Po maksymalnej wartości składowych kolorowych M dozwolony jest tylko jeden znak biały (zazwyczaj znak nowej linii). Ciąg W H trójek zawierających się między 0 a M i zapisanych binarnie za pomocą jednego (dla M < 256) lub dwóch bajtów (bardziej znaczący bajt jest pierwszy). Sposób kodowania pikseli jak poprzednio. Nie są dopuszczalne w tej sekcji białe znaki. Plik może zawierać informacje o kilku następujących po sobie obrazach. Więcej man ppm. Konwersja formatów Częstokroć istnieje potrzeba zmiany formatu pliku, w którym zapisany został obraz. W najlepszym wypadku czynność ta wymaga odczytania zawartości konwertowanego pliku, przekształceniu formatu na docelowy i zapisaniu całości ponownie na plik. Tak będzie np. przy zamianie obrazu czarno-białego na obraz o 15-stu stopniach szarości, czy obrazu zawierającego 15 stopni szarości na obraz o 256-ciu stopniach szarości. Jednakże przy konwersji w drugą stronę (z 256-ciu stopni szarości na 15, czy z 15-stu na 2) wymagane jest wykonanie odpowiednich operacji na samym obrazie (ponieważ format docelowy pozwala na przechowanie mniejszej ilości informacji o obrazie niż format wyjściowy). Może dodatkowo pojawić się potrzeba progowania obrazu, zmniejszenia liczby zawartych w nim poziomów szarości, konwersji obrazu kolorowego do obrazu monochromatycznego. 6

Inne formaty plików graficznych Oczywiście istnieje wiele innych formatów plików służących do przechowywania obrazów cyfrowych, jak chociażby popularne formaty jpeg (joint photographic experts group), gif (graphics interchange format), tiff (tag image file format) czy bmp (MS-Windows bitmap format). Interfejs użytkownika Każdy program przewidziany do interaktywnego wykorzystania przez użytkownika posiada interfejs użytkownika. Interferjs ten może przyjąć postać sekwencji zadawanych pytań, po których następuje realizacja zadania, prostego tekstowego menu, z którego użytkownik może wybrać pożądane operacje, czy w końcu zaawansowanego interfejsu graficznego, z całą paletą rozwijalnych menu, zakładek i tym podobnych elementów. Zazwyczaj najprostsze menu tekstowe programista tworzy nie wykorzystując żadnych dodatkowych narzędzi, zaś do budowy menu okienkowych czy graficznych wspomaga się odpowiednimi bibliotekami i innymi narzędziami. W systemie unix do budowy tekstowych menu okienkowych służy biblioteka curses. Ponadto interfejs użytkownika może stanowić integralną cześć programu lub może być samodzielnym programem. W drugim z wymienionych przypadków może go stanowić skrypt interpretowany przez jedną z dostępnych w uniksie powłok (powłokę Bourne shell, język skryptowy Tcl, pakiet okienkowy Tk). 7