Grafika Rastrowa id 194834 Nieznany

background image

1.

Reprezentacja obrazu rastrowego

W grafice komputerowej obraz rastrowy jest reprezentowany jako macierz liczb

odpowiadających poszczególnym poziomom jasności poszczególnych pikseli. Dla

obrazów kolorowych wykorzystujemy trzy takie macierze przy zastosowaniu

reprezentacji kolorów RGB. Każda z tych macierzy reprezentuje jedną składową. W

niektórych zastosowaniach grafiki rastrowej (np. niektóre zagadnienia rozpoznawania

obrazów) informacje o kolorze są pomijane jako mniej istotne. Często kolor nie jest

nośnikiem istotnych informacji a analiza obrazu zapisanego tylko w odcieniach

szarości jest łatwiejsza. Istotnym elementem w systemach rozpoznawania i

przetwarzania obrazów jest początkowy etap związany z poprawą jakości samego

obrazu, czyli pozbycie się zakłóceń i uwypuklenie charakterystycznych cech obrazu

poprzez zastosowanie odpowiednich filtrów i przekształceń.

2.

Metody wstępnego przetwarzania obrazu

Rozjaśnianie i przyciemnianie obrazu.

Zmiana jasności wszystkich punktów w obrazie jest zadaniem związanym z prostymi

przekształceniami arytmetycznymi na obrazie. Dla każdego piksela reprezentowanego

przez wartość jego poziomu jasności należy dokonać dodania lub odjęcia stałej.

Operacja ta zakłóca jednak wartości poziomów szarości o większych lub mniejszych

poziomach. W przypadku rozjaśnienia obrazu o wartość 10, wszystkie poziomy

szarości o wartościach (Max – 10, Max) będą reprezentowane jako jeden kolor.

Podobna sytuacja będzie miała miejsce w przypadku przyciemnienia obrazu, czyli

odjęcie stałej składowej. Rozjaśnianie i przyciemnianie poprzez dodawanie i

odejmowanie może być zrealizowane na obrazach o histogramach nie wyrównanych.

Dla histogramu przedstawionego poniżej przyciemnianie jasności poprzez odjęcie

składowej spowoduje utratę informacji o ciemniejszych kolorach.

background image

Pojęcie histogramu

Histogram intensywności obrazu jest najprostszym globalnym opisem obrazu.

Stosowany jest w celu oceny jakości obrazu lub wyboru metody jego kodowania (np.

przy binaryzacji). Histogram obrazu jest to wykres reprezentujący rozkład

intensywności lub kolorów w obrazie. Obrazuje on więc ile pikseli znajduje się w

poszczególnych zakresach intensywności. Niech r1 , r2 , ..., rL oznaczają używane

wartości intensywności obrazu. Wówczas histogram tworzy zbiór wartości p(r1),

p(r2), ..., p(rL), obliczanych ze wzoru:

p(rj) = p(rj) / n

Rozciąganie histogramu.

Histogram pokazuje jak liczne są w obrazie punkty o różnych wartościach jasności.

Można go wykorzystać do polepszenia jakości obrazu. Przyjmując model Gray-Scale

mamy od 0 do 255 poziomów szarości i tyleż samo składowych opisujących

histogram. Pierwszy jego element ma numer 0 (czerń), podczas gdy ostatni 255 (biel).

Analiza histogramu okazuje się wielce pomocna podczas obróbki obrazów. Na jej

podstawie podejmuje się decyzje mające bezpośrednio wpływ na przetwarzane dane

(rozjaśnienie, ściemnienie, zwiększenie kontrastu). Przyjmuje się, że pierwszy

element histogramu ma numer 0 a ostatni Zmax gdzie Zmax - zakres maksymalny.

Zakładamy, że:

Zmax = 2

n

- 1, jeżeli barwa jest reprezentowana przez "n" bitów.

background image

Wartość każdego elementu histogramu to liczba punktów obrazu o jasności równej

numerowi tego elementu. Graficznie wygląda to tak, że na osi X mamy poziomy

jasności (od 0 do 2

n

-1), natomiast na osi Y mamy ilość punktów o danym poziomie

jasności. Analiza histogramów daje dużo informacji na temat obrabianego obrazu,

m.in. o zakresie poziomów jasności oraz jak licznie są reprezentowane te poziomy.

Jeśli histogram jest skoncentrowany w pewnych przedziałach, można zastosować

operację rozciągnięcia w celu użycia całego możliwego zakresu intensywności.

Dzięki temu obraz stanie się bardziej przydatny do analizy. Operacja ta polega na

zmianie wartości intensywności pikseli za pomocą funkcji transformującej. W wyniku

jej zastosowania obraz może wyglądać nienaturalnie, ale szczegóły będą bardziej

kontrastować ze sobą.

Większość zmian histogramu dokonuje się poprzez wyznaczenie dyskretnej funkcji

konwersji służącej do wyznaczenia wartości żądanej z pomocą wartości z obrazu

ź

ródłowego. Najłatwiejszym sposobem opisania takiej funkcji jest zastosowanie

background image

tablicy LUT (Look Up Table). Wartość zapisana pod indeksem i takiej tablicy mówi

nam na jaką wartość przekształcić liczbę z obrazu źródłowego.

Jeśli F jest funkcją transformacji, W1 wartość żródłowa,W2 wartość wynikowa to z

pomocą tablicy LUT dyskretną funkcję transformacji wyznaczamy następująco:

W2 = F(W1) = LUT[W1]

Poszczególne elementy tablicy LUT używanej w procesie rozciągania histogramu

można wyznaczyć następująco:

LUT[i] = (Imax / (Wmax – Wmin)) * i

Wmax – maksymalna wartość składowej w obrazie źródłowym

Wmin – minimalna wartość składowej w obrazie źródłowym

Imax – maksymalna wartość w obrazie docelowym.

Operacja rozciągania histogramu nie jest uniwersalna, to znaczy że dla niektórych

obrazów może nie przynieść żądanego efektu. Nie należy mylić operacji rozciągania

histogramu z operacją wyrównywania histogramu.

Operacja wyrównywania histogramu

Operacja ta ma na celu taki przekształcenie intensywności punktów, aby wykres był

jak najbardziej płaski. Pozwala to na uwypuklenie pewnych szczegółów obrazu, które

SA mało widoczne ze względu na niewielki kontrast. W celu wyznaczenia tablicy

LUT dla operacji wyrównywania histogramu należy wyznaczyć dystrybuantę

rozkładu prawdopodobieństwa, którą obliczyć można z następującego wzoru:

D(n) = (h

0

+ h

1

+ ......... + hn) / s

Wartość dystrybuanty w punkcie n określa liczbę pikseli w obrazie o wartości

mniejszej lub równej n podzieloną przez liczbę wszystkich punktów obrazu.

background image

Mając wyznaczone wartości dystrybuanty możemy obliczyć elementy tablicy LUT w

następujący sposób.

LUT(i) = ((D(i) – D

0

) / (1 - D

0

)) * (k -1)

Gdzie

D(i) – wartość dystrybuanty dla każdego punktu

D

0

– pierwsza niezerowa wartość dystrybuanty

k – liczba możliwych wartości składowych obrazu

3.

Filtracja za pomocą filtrów splotowych

Metody splotowe uwzględniają podczas transformacji otoczenie rozważanego punktu.

Równanie które opisuje transformację obrazu źródłowego i docelowego wyraża się

wzorem: O2 = O1 * w. Operator „*” oznacza w tym wypadku splot, w jest

następującą macierzą:

=

9

8

7

6

5

4

3

2

1

w

w

w

w

w

w

w

w

w

w

I nazywana jest maską splotu. Powyższa operacja odpowiada wykonaniu na każdym

punkcie obrazu następującego przekształcenia:

( )

(

)

(

)

(

)

(

)

( )

(

)

(

)

(

)

(

)

1

,

1

,

1

1

,

1

1

,

,

1

,

1

,

1

,

1

1

,

1

,

9

8

7

6

5

4

3

2

1

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

=

y

x

f

w

y

x

f

w

y

x

f

w

y

x

f

w

y

x

f

w

y

x

f

w

y

x

f

w

y

x

f

w

y

x

f

w

y

x

g

Wartość w punkcie wynikowym jest więc wyznaczana jako średnia ważona

sąsiedztwa punktu źródłowego. Filtracja za pomocą splotu jest filtracją liniową. W

praktyce stosuje się filtrację górno przepustową, do wyodrębniania punktów wyraźnie

różnych od tła. Maski filtrów górno przepustowych mają tę właściwość, że suma ich

elementów wynosi 0

background image

=

1

1

1

1

8

1

1

1

1

1

W

Filtrację splotową można stosować również w procesie wygładzania obrazu.

Do tego celu stosuje się filtry dolno przepustowe, których współczynniki macierzy są

dodatnie. Aby nie doprowadzić do przekroczenia dopuszczalnej wartości w procesie

konwersji,

należy

uzyskaną

liczbę

pomnożyć

przez

odwrotność

sumy

współczynników macierzy.

10

1

wsp.

1

1

1

1

2

1

1

1

1

=

K

Filtracja górnoprzepustowa może być również wykorzystana do detekcji krawędzi.

Dla zastosowań detekcji krawędzi stosuje się następujące maski:

Maski Sobela

background image

Maska Prewitta

Filtracja medianowa

Filtracja medianowa jest przykładem transformaty nieliniowej - dzięki niej tracimy

szczegóły obrazu takie jak cienkie linie, punkty itp. ale pozbywamy się także szumu i

zakłóceń - nienaturalnie małe lub duże wartości elementów macierzy zostaną

pominięte przy filtracji. W tym filtrze zamiast wartości średnich stosuje się medianę

wartości pikseli będących sąsiadami analizowanego punktu. Mediana jest środkową

wartością w uporządkowanym ciągu wartości opisujących rozważany piksel i jego

otoczenie. Tracąc na ostrości obrazu (szczegółowości) zyskujemy na jakości poprzez

wyeliminowanie ewentualnych szumów.

background image

Progowanie

Progowanie służy do dyskretyzacji poziomów szarości poszczególnych pikseli.

Wartości poszczególnych poziomw szarości są porównywane z progiem podawanym

jako parametr wejściowy. Dla pikseli o poziomie jasności większym od podanego

progu jest wybierana wartość najjaśniejsza, natomiast dla pikseli większych od

podanego progu w nowym obrazie jest wybierana wartość odpowiadająca pikselowi

najciemniejszemu. W praktyce stosuje się również progowanie wielopoziomowe,

które umożliwia przekształcenie punktu pierwotnego o zadanym poziomie szarości na

punkt należący do jednego z kilku poziomów na wyjściu. Progowanie jest często

wykorzystywane do wstępnej obróbki obrazów pochodzących z urządzeń

skanujących. Przekształcenie progowania jest jednym z elementów obróbki obrazów

wykorzystywanym w procesie rozpoznawania pisma przez programy OCR. W

praktyce ważnym zagadnieniem jest dobranie odpowiedniego poziomu progu, tak aby

uzyskać pożądany efekt. Pożądany poziom progu jest możliwy do uzyskania za

pomocą analizy histogramu. Dla histogramów z wyraźnym zaznaczeniem częstości

występowania koloru związanego z cechą podlegającą analizie progowanie daje dość

dobre efekty.

background image

Efekt wykonania operacji progowania na obrazie przedstawiającym płytki krwi

4.

Praca w programie Matlab.

Po uruchomieniu programu Matlab należy zmienić katalog roboczy na katalog w

którym znajdują się pliki z obrazami do przetworzenia.

background image

Z menu file wybieramy polecenie New i tworzymy nowy skrypt dla programu Matlab

( plik z rozszerzeniem .m). Zapisujemy plik pod odpowiednią nazwą w katalogu

roboczym programu Matlab. Skrypt można uruchomić za pomocą polecenia Run z

menu debug (F5), albo wpisując nazwę pliku w linij poleceń programu Matlab.

background image

Przydatne polecenia programu Matlab oraz ich zastosowanie.

OBR = imread('krwinki.BMP') – polecenie tworzy macierz o rozmiarach

odpowiadających rozmiarowi obrazu i wczytuje obraz do pamięci.

imshow(OBR) – polecenie pokazuje obraz zapisany w macierzy podanej jako

parametr

imhist(OBR) – polecenie pokazuje histogram obrazu zapisanego w macierzy podanej

jako parametr.

subplot(3,2,1) - wybranie części okna w której będzie narysowany obiekt.

[Lw, Lk] = size(OBR) – funkcja zwraca wektor, który opisuje wielkość macierzy

(liczbę wierszy oraz liczbę kolumn)

uint8(OBR1) – zwraca macierz liczb całkowitych 8 bitowych bez znaku

odpowiadającą macierzy podanej jako parametr.

Rand(n) – zwraca macierz n * n liczb losowych

medfilt2(OBR) – realizuje operację filtracji medianowej na obrazie reprezentowanym

przez macierz wejściową i zwraca macierz reprezentującą obraz wynikowy.

histeq(OBR) – realizuje wyrównywanie histogramu.

Przykład realizacji operacji warunkowej z zastosowaniem instrukcji IF w języku

programu Matlab, oraz iteracji po wszystkich elementach macierzy reprezentującej

obraz z wykorzystaniem zagnieżdżonych pętli FOR.

background image

for m = 1:Lw

for n = 1:Lk

if (OBR1(m,n) < prog)

OBR1(m,n) = 0;

else

OBR1(m,n) = 255;

end

end

end

background image

Zadania

1. Przeanalizować działanie funkcji podanych w instrukcji laboratoryjnej do

odczytu obrazu i wyświetlania go na ekranie w programie Matlab. W jaki

sposób jest przechowywany obraz w programie Matlab wczytywany z pliku.

Wczytać za pomocą skryptu Matlaba obraz z pliku grace_k.bmp, wyświetlić

obraz oraz jego histogram.

2. Napisać skrypt w języku Matlab wczytujący obraz zapisany w pliku

grace_k.BMP znajdujący się w katalogu roboczym, dokonać operacji

rozjaśniania oraz przyciemniania obrazu. W jednym oknie wyświetlić obrazy i

odpowiadające im histogramy dla obrazu oryginalnego, przyciemnionego i

rozjaśnionego. Zapisać obraz przyciemniony jako grace_c.bmp i rozjaśniony

jako grace_r.bmp. Porównać histogramy dla pliku wejściowego i

wynikowego. Jak wpływa przekształcenie na histogram?

3. Napisać skrypt w języku Matlab realizujący operacje rozciągania histogramu

na pliku grace_c.bmp. Plik powinien wyświetlać w jednym oknie obraz

wejściowy, obraz po operacji rozciągania histogramu i odpowiadające im

histogramy.

4. Napisać skrypt realizujący operacje wyrównywania histogramu w języku

Matlab na obrazie grace_k.bmp. Posłużyć się funkcją Matlaba. Wyświetlić

obraz pierwotny i obraz wynikowy oraz ich histogramy. Jak przekształcenie

wpłynęło na obraz i histogram?

5. Napisać skrypt w języku Matlab realizujący operację filtracji medianowej na

obrazie grace_k.bmp. Jakie zakłócenia można usunąć z obrazu stosując tą

filtrację? Jakie informacje zostaną utracone w wyniku tej operacji.

6. Napisać program w języku Matlab realizujący progowanie dla określonego

obrazu wejściowego krwinki.bmp. Program powinien wyświetlać w oknie

obraz wejściowy i wynikowy oraz ich histogramy.


Wyszukiwarka

Podobne podstrony:
Grafika komputerowa 3 id 194791 Nieznany
grafika herbisz id 194753 Nieznany
Grafika inzynierska 2 id 194765 Nieznany
Grafika inzynierska id 194762 Nieznany
grafika zolwia id 194858 Nieznany
grafika php id 194831 Nieznany
Grafika komputerowa id 194784 Nieznany
Projektant grafiki 216604 id 40 Nieznany
Grafika wyklady id 194801 Nieznany
LiTTK seminarium grafik id 2714 Nieznany
GrafikaEgz id 194876 Nieznany
Grafika 3 id 194607 Nieznany
grafikia tresci progr id 194904 Nieznany
barcin grafika id 80035 Nieznany (2)
Dodatek3 Grafika wektorowa id Nieznany
grafika 3D lab9 id 194729 Nieznany
GrafikaWord id 328722 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)

więcej podobnych podstron