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

-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

)) * (k -1) 

Gdzie  

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

D

– 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.