Operacje na histogramie

background image

RS-C

Przetwarzanie obrazów

Operacje na histogramach

Darkmaster

2011-05-09

Poniższy artykuł wprowadza podstawy MatLaba, oraz operacje na histogramach, przy wykorzystaniu
tego środowiska.

background image

Wstęp

Histogram

Histogram obrazu w odcieniach szarości wyznaczany jest jako suma wszystkich pikseli o danej
wartości.

Algorytm wyznaczania histogramu:

Ustalenie zakresu jasności lub przyjęcie domyślnego dla danej liczby bitów na piksel;

Określenie liczby przedziałów;

Wyznaczenie szerokości przedziałów poprzez podzielnie zakresu przez ich liczbę;

Obliczenie liczby pikseli o wartościach jasności należących do poszczególnych przedziałów.

Operacje na histogramie:

Rozciąganie

Rozciągnięcie histogramu, zmienia rozkład jasności pikseli. Przekłada to się na zmianę szerokości
przedziałów.

Wyrównywanie

Wyrównanie histogramu ma na celu doprowadzenie do równomiernego rozłożenia wartości jasności
w jego przedziałach.

MATLAB

Program komputerowy będący interaktywnym środowiskiem do wykonywania obliczeo naukowych i
inżynierskich, oraz do tworzenia symulacji komputerowych.

Operatory, funkcje i instrukcje niezbędne do wykonania ćwiczeń

Poniżej, opisanych zostanie kilka podstawowych elementów języka potrzebnych do wykonania
zamieszczonych dwiczeo.

background image

Zmienne

Zmienne w mat labie tworzone są wraz z pierwszym użyciem danej nazwy, nie wymagają podawania
typów, np.:

X = 10; % utworzy zmienną X i nada jej wartość 10
Y = 1:1:20 % utworzy zmienną Y i przypisze jej wektor wartości od 1 do 20 z krokiem 1
Z = [1:1:3; 1:2:6] % utworzy macierz Z zawierająca 2 wiersze
|1 2 3|
|1 3 5|
Z2 = [1 2 3; 3 4 5] % macierz 3x2
|1 2 3|
|3 4 5|

!!! Aby odwoład się, do konkretnego elementu macierzy, wektora należy użyd () np. Z(1, 2), należy
także pamiętad ze struktury te w mat labie są numerowane od 1.

Pętla for

Pętla for w mat labie składa się ze słówka for, następnie nazwa zmiennej i zbiór wartości jakie ma
przyjmowad pętle kooczy słówko end.

for i = 1:1:20

instrukcje;

end

If, elseif, else

Instrukcja if składa się z słówka kluczowego a następnie warunku, oraz kooczy się słówkiem end, w
podanym przykładzie, sprawdzone zostanie czy zmienna a ma wartośd większą od 5 jeśli tak kod
zostanie wykonany jeśli nie pominie go.

if(a > 5)

instrukcje

end

Słówko elseif, pozwala na budowanie kaskady instrukcji, a else umożliwia wybranie instrukcji
mających się wykonad, gdy pozostałe warunki są nie prawidłowe.

if (a > 5)

instrukcje;

elseif(a < 2)

instrukcje;

else

instrukcje;

end

background image

Funkcje

Funkcje w mat albie składają się ze słówka function, zwracanych parametrów w nawiasach
kwadratowych, „=”, nazwy funkcji, oraz parametrów w nawiasach ().

function [x, y] = foo (a, b c)
instrukcje;
end

Operatory

* - mnożenie macierzowe
.* - mnożenie odpowiadających sobie elementów macierzy

+ - dodawanie odpowiadających sobie elementów macierzy
- - odejmowanie odpowiadających sobie elementów macierzy
^ - potęgowanie macierzowe (Z ^2 == Z *Z)
.^ - potęgowanie (Z .^2 == Z.*Z )

background image

Funckje wbudowane, niezbędne do wykonania ćwiczeń

[x, y] = size(

macierz

) – zwraca rozmiar wektora, macierzy

X = imread(

ścieżka

)- zapisuje bitmapa w formie macierzy

figure() - otwiera nowe okno

bar(

vec_x

,

vec_y

) – rysuje wykres słupkowy


x = min(

vec

) – zwraca najmniejszą liczbę w wektorze


x = min(

mac

) – zwraca wektor najmniejszych liczb dla każdego wiersza

macierzy, w celu zwrócenia najmniejszej liczby należy wywołać 2 krotnie
funkcje(x = min(min(

mac

)) )


x = max(

vec

) – zwraca największą liczbę w wektorze


x = max(

mac

) – zwraca wektor największych liczb dla każdego wiersza

macierzy

m = zeros(

x

,

y

) – tworzy macierz o rozmiarach x * y i wypełnia zerami.


[wiersz, kolumna] = find(

warunek

) – zwraca indeksy podanej macierzy, zgodne

z zadanym warunkiem, np. find(X == 5) zwróci indeksy liczb równych 5 w
macierzy X.

x = round(w) – zaokrągla liczbe.



background image

Ćwiczenia

Plik główny:

skrypt.m

clc %czyszczenie konsoli

clear %czyszczenie zmiennych

close

all

%zamknięcie wszystkich okien


x = imread(

'02.png'

);

x = x(:,:,1); %wycięcie kanału niebieskiego i
%zielonego

x = double(x);


%funckje do napisania

histogram(x, 256, 1);

x1 = rozciagniecie(x);

histogram(x1, 256, 1);

x2 = wyrownaj(x);

histogram(x2, 256, 1);

Ćwiczenie 1

Wykonanie funkcji obliczania histogramu w odcieniach szarości z dowolną liczbą przedziałów
(zadawaną jako parametr).

%przewidywana postać funkcji
%zwracane parametry ilość przedziałów, wektor wartośći
%przyjmowane dane obraz, ilość przedziałów, czy rysować wykres

function

[prz, oy] = histogram(X, prz, rys)

%wyznaczenie ilości przedziałów

zakr = ???;

%stworzenie wektora na wartości histogramu

oy = zeros(1, prz);

%pobranie rozmiaru macierzy X, do pętli for

???

%zliczenie wartości pikseli, mieszczących się w danym przedziale

for

i = 1:prz

???

end

if

(rys == 1)

figure();

bar(0:prz - 1, oy);

end

end


Wyszukiwarka

Podobne podstrony:
4 Operacje na Plikach ppt
4 operacje na zmiennych I
34 Pliki Operacje na plikach w Pascalu
późniak koszałka,bazy?nych, Podstawowe operacje na?zach?nych
Frontex, Frontex (Europejska Agencja Zarządzania Współpracą Operacyjną na Zewnętrznych Granicach Pań
Operacje na macierzach id 33628 Nieznany
5 TurboPascal Operacje na tekstach
Znieczulenie do operacji na tętnicy szyjnej
Znieczulenie do operacji na tętnicy szyjnej
07 operacje na danychid 7063 ppt
operacje na plikach
PROGRAMY OPERACYNE NA LATA 2007 2013 w 5
JAVA operacje na plikach
Lab 11 Operacje na plikach
operacje na kontach

więcej podobnych podstron