Metody CPIM (Laboratorium)

Transkrypt

Metody CPIM (Laboratorium)
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Instrukcje Laboratoryjne
Metody cyfrowego przetwarzania
informacji multimedialnej
2013/14
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 1
Treści programowe:
Wprowadzenie
w
problematykę
laboratorium,
przedstawienie celów, treści programowych i wykazu
literatury. Sprecyzowanie form zaliczenia. Wprowadzenie
do programowania.
Cel ćwiczenia:
Zapoznanie z podstawowymi funkcjami programu, i
środowiskiem programowania.
Przykładowe
pomocne funkcje:
A=zeros(3,5) % zdefiniowanie macierzy o elementach
zerowych
B=rand(5,5) %macierz o losowych wyrazach (rozkład
jednostajny)
B' %transponowanie macierzy
Inv(B) %odwracanie macierzy
sum(B) % suma kolumn
sum(B') %suma wierszy
Wprowadź do Matlaba następujące macierze:
a) kwadrat magiczny o wymiarach 5 na 5.
b) macierz jednostkową o wymiarach 5 na 5.
c) macierz 2 na 3 o wyrazach losowych
d) macierz 3 na 12 złoŜoną z zer
e) a=[2 20 11 4 5]’
f) tabliczkę mnoŜenia 20 na 20.
Przykładowe
zadania:
Przykład programu:
clear all;
close all;
%To jest program liczący iloczyn dwóch macierzy
A=input('Wprowadz macierz A: ')
% Pobranie wartosci
macierzy A postać [1 2 3; 1 2 3;]
B=input('Wprowadz macierz B: ')
% Pobranie wartosci
macierzy B itp.
[i,j]=size(A)
% rozmiar macierzy A
przedstawiony w postaci kolumn i wierszy
[j2,k]=size(B)
% rozmiar macierzy B
przedstawiony w postaci kolumn i wierszy
if j==j2
% sprawdzanie – jesli liczba kolumn macierzy
A taka sama jak liczba wierszy macierzy B
C=zeros(i,k)
% macierz zer w celu utworzenia tablicy
for x=1:i
% dzialanie wzdluz kolumny
for z=1:k % dzialanie wzdluz wiersza
for y=1:j
C(x,z)=C(x,z)+A(x,y)*B(y,z)
end
end
end
disp(C)
else
disp('Nie moge obliczyc iloczynu!') % jesli nie będzie
spełniony warunek to wyświetli sie komunikat
end
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Oczekiwane efekty
po realizacji
ćwiczenia
Sprawozdanie
Studenci po realizacji ćwiczenia laboratoryjnego potrafią
wykonać proste obliczenia macierzowe.
1. Opis kolejności wykonywanych czynności wraz z
zastosowanymi przykładami.
2. Opis własnoręcznie wykonanego programu.
3. Wnioski końcowe.
Pytania, zadania
1. Wykonać co najmniej 4 z wymienionych zadań.
2. Wymienić co najmniej 4 i opisać róŜne typy macierzy
(np. symetryczna, jednostkowa itp.)
3. Wymienić co najmniej 4 i opisać róŜne operacje na
macierzach.
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 2
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Grafika 2D i 3D hierarchia obiektów graficznych w
Matlabie.
Tworzenie
prostych
dwuwymiarowych
wykresów funkcji.
Zapoznanie z podstawowymi funkcjami przydatnymi
podczas tworzenia wykresów dwuwymiarowych.
axis([xmin, xmax, ymin, ymax]) - umoŜliwia zmianę
zakresów osi
grid - dodaje siatkę współrzędnych do wykresu
clf - czyszczenie okna graficznego
close - zamyka bieŜące okno graficzne
figure - utworzenie nowego okna graficznego
hold(on/off) - umoŜliwia dodanie kolejnych krzywych do
wykresu bez kasowania poprzednich
linspace(pocz,koniec,ile) - tworzy wektor o 'ile'
elementach, którego pierwszy element to 'pocz', ostatni to
'koniec', a pozostałe są rozłoŜone równomiernie.
Narysować za pomocą Matlaba róŜne funkcje z
uwzględnieniem ich opisu i zachowaniem róŜnych stylów
linii np.:
k = 10, a = 3
1
0.5
0
-0.5
exp(-x/k)
exp(-x/k).*sin(a*x)
-exp(-x/k)
-1
0
Przykład programu:
5
10
15
20
25
30
clear all;
close all;
%To jest program do rysowania funkcji y=sin(x)
x = -pi: 0.2: pi;
plot(x,sin(x),'b-'); %nieb. ciągła bez markera
hold on;
plot(x,sin(x-pi/6),'rs'); %czerwona same markery "square",
nie będą połączone
plot(x,sin(x-2*pi/6),'ko:'); %czarna, markery "kółko",
linia kropkowana
legend('styl: b-','styl: rs','styl: ko.',4);
hold off;
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
styl: bstyl: rs
styl: ko.
-0.8
-1
-4
-3
-2
-1
0
1
2
3
4
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 3
Treści programowe:
Cel ćwiczenia:
Pozyskiwanie danych, operacje na plikach z danymi.
Zapoznanie z podstawowymi funkcjami słuŜącymi do
pozyskiwania danych oraz wykonywanie operacji na
plikach z danymi.
Przykładowe
pomocne funkcje:
num = xlsread('c:\dane\eur.xls'); %wczytywanie z
pominięciem pierwszego wiersza
kolumna=num(:,4); %wczytanie kolumny;
num = xlsread('eur.xls', 'C2:C100'); %zakresu danych
M = csvread('wig20.txt',1,1); %odczyt pliku CSV
zaczynając od 1 kol. I 1 wiersza;
data=M(:,1);
datestr(data(1)) %rozwiązywanie problemu z datą
save ‘dane.txt’ A –ascii
%zapis macierzy A do pliku „dane.txt” w trybie tekstowym
save ‘dane.dta’ A % zapis w trybie binarnym
save dane A %zapis macierzy A jako plik „dane.mat” %
moŜliwość odczytu przez program
save dane %zapis wszystkich danych z przestrzeni
roboczej do pliku dane.mat
load ‘dane.txt’ %analogicznie odczyt
Przykładowe
zadania:
Przykład programu:
Zapisać i odczytać za pomocą Matlaba róŜne dane z
plików *.xls, *.csv,*.txt,*.mat,*.dat.:
clear all;
close all;
%To jest program do zapisu danych
data=input('Podaj dowolna liczbe calkowita z
przedzialu [1-10]: ');
datastr=num2str(data);
save('datastr.txt', 'datastr','-ASCII')
load datastr.txt
disp('Odczytano dane txt: '); datastr
savefile = 'pqfile.mat';
p = rand(1, data);
q = ones(data);
save(savefile, 'p', 'q')
save('pqfile.txt', 'p', 'q', '-ASCII')
load pqfile.txt
disp('Odczytano dane txt: '); pqfile
load pqfile.mat
disp('Odczytano dane mat: '); pqfile
figure (1)
plot(p(1:data));
saveas(figure(1),'wykres','jpg');
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 4
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Specjalne
funkcje
do
tworzenia
wykresów
dwuwymiarowych.
Zapoznanie z podstawowymi funkcjami przydatnymi
podczas tworzenia wykresów dwuwymiarowych.
loglog - wtedy obie osie są skalowane logarytmicznie
semilogx - tylko oś x jest skalowana logarytmicznie
semilogy - tylko oś y jest skalowana logarytmicznie
comet - sekwencyjne rysowanie wykresu - animacja
bar - wykres słupkowy
stairs - wykres schodkowy
hist - utworzenie histogramu
rose - histogram kołowy
fill - kreślenie krzywej z wypełnieniem pod nią
subplot(a,b,c) - okno graficzne będzie traktowane jako
tablica składająca się z "a" wierszy i "b" kolumn oraz
aktywnym polem "c"
Narysować za pomocą Matlaba róŜne funkcje z
uwzględnieniem ich opisu i zachowaniem róŜnych stylów
wykresów np.:
5
1
0
-5
0
0
5
-1
10
0
5
10
exp(-x/25)*sin(4*x)*cos(x)
1
0
-1
2
4
6
8
10
1
1
0
0
0
-1
Przykład programu:
0
1
0
5
10
-1
0
5
-1
10
0
12
5
10
clear all;
close all;
%To jest program do rysowania funkcji i ilustracja
działania funkcji subplot
x = input('Podaj liczbę wierszy i kolumn w postaci wektora
([n m])np.[2 2]: ');
clf;
for k = 1 : prod(x);
subplot(x(1),x(2),k);
if rem(k,2)== 0
ezplot('exp(-x/20)');
end;
title(strcat('Wykres nr ',num2str(k)));
end;
Wykres nr1
Wykres nr2
1
1.4
1.2
0.5
1
0.8
0
0
0.5
1
-5
0
x
Wykres nr4
5
-5
0
x
5
Wykres nr3
1
1.4
1.2
0.5
1
0.8
0
0
0.5
1
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 5
Treści programowe:
Cel ćwiczenia:
Tworzenie wykresów trójwymiarowych.
Zapoznanie z podstawowymi funkcjami przydatnymi
podczas tworzenia wykresów trójmiarowych.
Przykładowe
pomocne funkcje:
x = linspace(-pi,pi,7)%równomierne rozłoŜenie 7 punktów
w zadanym przedziale<-pi,pi>
fplot(fun,[x1 x2])%przygotowuje wektory x i y do
narysowania wykresu funkcji opisanej przez fun; fun jest
łańcuchem znaków zawierającym nazwę funkcji, zaś x1 i
x2 to granice przedziału argumentów funkcji
loglog(x,y,s);
semilogx(x,y,s);
semilogx(x,y,s)%skale
logarytmiczne
plot3(x,y,z,s)%wykresy 3D;
mesh(x,y,z,c) %rysuje powierzchnię w postaci kolorowej
siatki o polach wypełnionych kolorem tła, elementy
macierzy c określają kolory linii poszczególnych pól;
surf(x,y,z,c) rysuje róŜnokolorową powierzchnię
gray - mapa odcieni szarości,
hot - kolory ciepłe (od czarnego przez czerwony,
pomarańczowy, Ŝółty do białego),
cool - kolory zimne (od turkusowego do karmazynowego),
autumn - kolory od czerwonego przez pomarańczowy do
Ŝółtego,
summer - odcienie Ŝółtego i zielonego
Wykorzystując funkcje wykresów 3D Matlaba wykazać
róŜnice w wykorzystaniu pochodnych funkcji mesh, surf i
plot3D z uwzględnieniem róŜnych stylów wykresów np.:
Przykładowe
zadania:
Przykład programu:
clear all;
close all;
%To jest program do rysowania wykresow
[x,y] = fplot('1/sqrt(1+2e-7*x^2)',[1,1e6]);
figure(1)
semilogx(x,y)
grid on
title(['f(x)=1/(1+2*','e^(-\7*x^2))^0.5']);
figure(2)
x = [-10:0.1:10];
y = cos(x);
z = sin(3*x).*cos(y);
plot3(x,y,z)
grid on
saveas(figure(2),'wykres3D','jpg');
figure(3)
colormap('default')
[x,y] = meshgrid(-3:0.2:3,-3:0.2:3);
z = sinh(x).*cosh(x/2).*log(abs(y)+0.75);
surf(x,y,z);
colorbar
saveas(figure(3),'wykres','jpg');
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
figure(4)
colormap('summer')
[x,y] = meshgrid(-3:0.2:3,-3:0.2:3);
z = sinh(x)*2.*cosh(x/6).*log(abs(y)+1.75);
mesh(x,y,z);
colorbar
saveas(figure(4),'wykres2','jpg');
30
30
20
40
40
20
20
10
20
10
0
0
0
0
-20
-10
-40
4
2
4
-20
-2
-4
-4
-20
4
2
0
0
-2
-10
-40
4
2
2
0
-20
-30
0
-2
-2
-4
-4
-30
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 6
Treści programowe:
Cel ćwiczenia:
Wczytywanie i wyświetlanie obrazów.
Zapoznanie z podstawowymi funkcjami słuŜącymi do
odczytu, wyświetlania i zapisu obrazu.
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
obr = imread('papryczki.png’); % odczyt obrazka
imshow(rgb) %wyświetlenie obrazka
imwrite(rgb,'mypapr.tif') %zapis obrazka
rozmiar_obrazka=numel(rgb)% rozmiar obrazka
info = imfinfo(obr);
rozmiar_pliku= info.FileSize
Wczytać,
odtworzyć,
wykonać
proste
operacje
matematyczne ma pliku.png i zapisać stworzony materiał
na dysku w postaci plik.jpg. Porównać kompresje.
Przykład programu:
clear all;
close all;
%To jest program do odczytu i porównywania kompresji
rgb_plot_png = imread('storczyk.png'); %odczyt wybranego
pliku
rgb_plot_jpg = imread('storczyk.jpg'); %odczyt wybranego
pliku
info_png = imfinfo('storczyk.png');
info_jpg = imfinfo('storczyk.jpg');
imshow('storczyk.png');
figure(2)
imshow('storczyk.jpg');
bytes_on_disk_png = info_png.FileSize
bytes_in_memory_plot_png = numel(rgb_plot_png)
compression_ratio = bytes_in_memory_plot_png /
bytes_on_disk_png
bytes_on_disk_jpg = info_jpg.FileSize
bytes_in_memory_plot_jpg = numel(rgb_plot_jpg)
compression_ratio = bytes_in_memory_plot_jpg /
bytes_on_disk_jpg
figure(3)
subplot(1,2,1);
imshow('storczyk.png');
limits = [232 276 215 248];
axis(limits);
title('Original');
subplot(1,2,2);
imshow('storczyk.jpg');
axis(limits);
title('JPEG compressed');
saveas(figure(3),'plot_screen_shot.jpg');
imwrite(rgb_plot_png,'storczyk.tif');
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Original
JPEG compressed
Laboratorium 7
Treści
programowe:
Cel ćwiczenia:
Przykładowe
pomocne
funkcje:
Przykładowe
zadania:
Przykład
programu:
Binaryzacja obrazów.
Przeprowadzenie pewnego rodzaju segmentacji wykonywanej
na podstawie jasności pikseli obrazów szarych Inne rodzaje
segmentacji mogą wyróŜniać obiekty na przykład na podstawie:
– konturów
– barwy
– typu tekstury (faktury) powierzchni itp.
im2uint8,im2uint16,im2int16,im2single,im2double %funkcje do
przeskalowania obrazów
gray2ind,ind2gray,ind2rgb,rgb2gray,rgb2ind
%funkcje
do
przetwarzania obrazów
im2bw %zamiana obrazka szaro odcieniowego na obraz
binarny
Wczytać, odtworzyć, wykonać proste operacje na obrazie z
uwzględnieniem przykładowych funkcji oferowanych przez
pakiet.
close all;
%To jest program do operacji binarnych na pliku graficznym
%konwersja do kolorów szarości
I = imread('storczyk.tif');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J);
%konwersja odwrotna
[X,map] = imread('trees.tif');
gmap = rgb2gray(map);
figure, imshow(X,map), figure, imshow(X,gmap);
%konwersja binarna
BW = im2bw(X,map,0.4);
imshow(X,map),
figure(10)
imshow(BW)
BW = im2bw(X,map,0.9);
figure(11)
imshow(BW)
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 8
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Przykład programu:
Przetwarzanie i analiza obrazów: operacje punktowe.
Przeprowadzenie róŜnego rodzaju transformacji poprzez
operacje matematyczne na pikselach.
im2uint8,im2uint16,im2int16,im2single,im2double,im2bw
%funkcje do przeskalowania obrazów
gray2ind,ind2gray,ind2rgb,rgb2gray,rgb2ind %funkcje do
przetwarzania obrazów
imhist %histogram obrazu
improfile %przekrój przez wiersz lub kolumn obrazu
impixel %kolor lub wartość piksela
bwarea %liczenie powierzchni obiektu (obraz czarnobiały)
imrotate %obrót obrazu o dowolny kąt
imresize %zmiana rozmiaru obrazka
im2bw %zamiana obrazka szaroodcieniowego na obraz
binarny
Wykonać proste transformacje obrazu poprzez dodanie,
przesuniecie pikseli, wykonać obrócenie i skalowanie
obrazu.
clear all;
close all;
%To jest program do pokazania prostych operacji
matematycznych na pliku graficznym
%operacje punktowe na obrazie
I = imread('storczyk.tif');
im = rgb2gray(I);
figure
imhist(im);
[count, cells]=imhist(im);
figure
stem(cells,count)
figure
[count, cells]=imhist(im, 10);
stem(cells,count)
figure
[X, map] = imread('trees.tif');
figure
imshow(X, map)
figure
[Y, newmap] = imresize(X, map, 0.5);
imshow(Y, newmap)
figure
B = imrotate(X,45)
imshow(B,map)
figure
B = imrotate(X,45)
imshow(B)
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
x 10
4
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
50
100
150
200
250
Laboratorium 9
Treści programowe:
Cel ćwiczenia:
Przetwarzanie i analiza obrazów: filtracja.
Przeprowadzenie róŜnego rodzaju transformacji poprzez
operacje matematyczne na obrazach.
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
medfilt2% filtracja medianowa;
histeq% wyrównanie histogramu
Przykład programu:
Wykonać proste transformacje obrazu poprzez filtracje
składowych koloru, dodanie szumu itp..
clear all;
close all;
clc;
%To jest program do pokazania prostych operacji
matematycznych na pliku graficznym
%operacje na Im takie jak skladowe obrazu,filtracja
[Im map]=imread('storczyk.tif');
disp('Wymiary Imu:');
[Lw, Lk, N] = size(Im)
figure;
subplot(2,2,1);
imshow(Im,map);
title('Im');
D(Lw,Lk,3)=uint8(0);
D(:,:,1)=Im(:,:,1);
subplot(2,2,2);
imshow(D);
title('Składowa RED');
D(Lw,Lk,3)=uint8(0);
D(:,:,2)= Im(:,:,2);
subplot(2,2,3);
imshow(D);
title('Składowa GREEN');
D(Lw,Lk,3)=uint8(0);
D(:,:,3)=Im(:,:,3);
subplot(2,2,4);
imshow(D);
title('Składowa BLUE');
figure
Img=imread('eight.tif');
[Lw,Lk]=size(Img)
subplot(2,2,1);
Img= imnoise(Img,'salt & pepper',0.02);
imshow(Img);
title('(a) oryginalny z szumem');
ha=line([100,100],[1,Lw]);
set(ha,'Color','red');
Dob=double(Img); % Do przetwarzania konwertujemy na
double:
L=medfilt2(Dob,[15 15]); % Filtracja medianowa składową
niskoczęstotliwościowa L:
B=Dob-L+120;% Dla "wyrównania cienia" odejmujemy L od
obrazu a dodajemy 120:
subplot(2,2,2);
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
imshow(uint8(B));
ha=line([100,100],[1,Lw]);
set(ha,'Color','green');
title('(b) po wyrównaniu cienia');
C=histeq(uint8(B));%"wyrównanie histogramu":
subplot(2,2,3);
imshow(C);
ha=line([100,100],[1,Lw]);
set(ha,'Color','blue');
title('(c) po wyrównaniu histogramu');
pr1 = improfile(Img,[100,100],[1,Lw]);% Wyznaczamy
profile: (1) dla oryginału:
pr2 = improfile(B,[100,100],[1,Lw]);% (2) po wyrównaniu
cienia:
pr3 = improfile(C,[100,100],[1,Lw]);% (3) dla obrazu
wynikowego:
size(pr2)
size(pr3)
k=1:Lw;
subplot(2,2,4);
plot(k,pr1,'r',k,pr2,'g',k,pr3,'b');
title('d) Profile obrazów (a), (b), (c)');
Im
Składowa RED
(a) oryginalny z szumem
Składowa GREEN
Składowa BLUE
(c) po wyrównaniu histogramu
(b) po wyrównaniu cienia
d) Profile obrazów (a), (b), (c)
400
200
0
-200
0
100
200
300
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 10
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Przykład programu:
Przetwarzanie i analiza obrazów: transformacja.
Przeprowadzenie róŜnego rodzaju transformacji poprzez
operacje matematyczne i funkcje Matlaba na obrazach.
imabsdiff %róŜnica między dwoma obrazami
imadd %suma 2 obrazów, plus stała
imdivide %średnia arytmetyczna z 2 obrazów (piksel po
pikselu)
imlincomb %kombinacja liniowa między serią obrazów
immultiply %iloczyn 2 obrazów
imsubtract %odejmowanie dwóch obrazów, minus stała
imadjust %poprawienie kontrastu obrazka
fspecial %róŜnego rodzaju filtry poprawiające obraz
imfill %wypełnianie dziur w obrazie
histeq %poprawienie kontrastu obrazu na podstawie
histogramu
Wykonać proste transformacje obrazu z wykorzystaniem
funkcji Matlaba
clear all;
close all;
clc;
%To jest program do pokazania prostych operacji
matematycznych na pliku graficznym
%operacje na Im takie jak skladowe obrazu,filtracja
[Im map]=imread('tire.tif');
disp('Wymiary Imu:');
[Lw, Lk, N] = size(Im);
figure;
subplot(2,2,1);
imshow(Im,map);
title('Im');
subplot(2,2,2);
J = uint8(filter2(fspecial('gaussian'), Im));
K = imabsdiff(Im,J);%róŜnica między dwoma obrazami
imshow(K,[]) % [] = skalowanie automatyczne
title('RóŜnica');
subplot(2,2,3);
H = imfill(Im,'holes');%wypełnianie dziur w obrazie
imshow(H,[])
title('Wypełnianie dziur');
subplot(2,2,4);
%S = fspecial('unsharp');
%sharpened = imfilter(Im,S,'replicate')
S = fspecial('disk',5);
blurred = imfilter(Im,S,'replicate');
imshow(S,[])
title('Ostrosc');
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Im
RóŜnica
Wypełnianie dziur
Ostrosc
Laboratorium 11
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Przykład programu:
Przetwarzanie
i
analiza
obrazów:
zagadnienia
praktyczne: (kontury obiektu, dopasowanie wzorca).
Przeprowadzenie róŜnego rodzaju transformacji poprzez
operacje matematyczne i funkcje Matlaba na obrazach.
imcontour %znajdowanie konturów obiektów w obrazie
edge %znajdowanie krawędzi w obrazie
imfilter %splot obrazu z filtrem
deconv*
%szereg
funkcji
przeprowadzających
dekonvolucję
imregionalmax %szukanie lokalnych maksimów w
obrazie
imnoise %dodanie szumu do obrazu
Wykonać proste transformacje obrazu z wykorzystaniem
funkcji Matlaba
clear all;
close all;
clc;
%To jest program do pokazania prostych operacji
matematycznych na pliku graficznym
%operacje na Im takie jak skladowe obrazu,filtracja
[Im map]=imread('tire.tif');
disp('Wymiary Imu:');
[Lw, Lk, N] = size(Im);
figure;
subplot(2,2,1);
imshow(Im,map);
title('Im');
subplot(2,2,2);
imcontour(Im,3);%Kontur
title('Kontur');
subplot(2,2,3);
[C,h] = contour(Im);
clabel(C,h);
title('Kontur ze skala');
subplot(2,2,4);
S=edge(Im,'canny')
imshow(S,[])
title('Krawedzie');
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Im
Kontur
50
100
150
200
50
Kontur ze skala
150
100 150
50
50
50
100
50
10
50
500100
50100
50
1000
20
0
50
100
10
50
50
20 0
100
150
100
150
Krawedzie
100
0
10 50
15
100
0
150
15
05 00 50 0
5110
0 200
150
15
10 250
01 0
1050
150 0
502 50
0
50
1525
0
00
50
5100
0
10050
20
0
200
50
200
200
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 12
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Przykład programu:
Wczytywanie i wyświetlanie filmów, animacji.
Przeprowadzenie róŜnego rodzaju transformacji poprzez
operacje matematyczne i funkcje Matlaba na obrazach
oraz tworzenie animacji.
aviread% wczytanie pliku filmowego typu avi
movie %odtworzenie zmiennej typu avi
avifile %stworzenie nowego obiektu typu avi
getframe %pobranie wnętrza okna graficznego jako klatki
filmu
addframe% dodanie ramki/obrazka do zmiennej typu avi
Wykonać proste transformacje obrazu z wykorzystaniem
funkcji Matlaba, stworzyć animacje
clear all;
close all;
clc;
%To jest program do pokazania prostych operacji
matematycznych do tworzenia animacji
figure(1)
x=1:10; % o- X
for j=1:10,
plot(x,j*x,'r'), % w petli rysuje kolejne obrazki
axis([0 100 0 10]); % ograniczenie zmiennosci wyswietlania
osi wykresu
F(j)=getframe; % pobieranie kolejnych klatek
end
movie(F,10) % 10 krotne wy-wietlenie animacji
figure(2)
numframes=16;
A=moviein(numframes); % tworzenie macierzy
set(gca,'NextPlot','replacechildren')
axis equal %
for i=1:numframes
plot(fft(eye(i+16)));
A(:,i)=getframe;
end
movie(A,10,3) % odtwarzanie filmu
save movie.mat A % zapis filmu
mpgwrite(A,jet,'movie.mpg'); % Ckonwersja do mpeg
unix('mpeg_play movie.mpg') % odtwarzanie mpeg
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0
0.5
1
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 13
Treści programowe:
Cel ćwiczenia:
Wczytywanie i obróbka plików dźwiękowych.
Zapoznanie z podstawowymi funkcjami słuŜącymi do
pozyskiwania danych dźwiękowych np. z karty
dźwiękowej oraz wykonywanie operacji na tych plikach.
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
y=wavread(‘plik.wav’); % wczytanie pliku dźwiękowego
[y,Fs,bits] = wavread(‘plik.wav’); % zwraca plik
dźwiękowy y, częstotliwość próbkowania Fs i liczba bitów
próbkowania
wavplay(y); % odtworzenie pliku dźwiękowego y
y = wavrecord(5*Fs,Fs,'int16'); % Nagranie 5 sekund z
częstotliwość próbkowania Fs np.: 11025 Hz i
próbkowaniem 16 bitowym
wavwrite(y,11025,’muzyka.wav’); % zapisanie zmiennej y
z próbkowaniem 11025 Hz w pliku muzyka.wav
sawtooth %przebieg trójk>tny (periodyczny)
square %przebieg prostok>tny (periodyczny)
gauspuls
%przebieg
sinusoidalny
modyfikowany
Gaussem (nieperiodyczny)
chirp %Przebieg cosinusoidalny o zmiennym okresie
specgram(y,512,2);
%
wyświetla
analizę
częstotliwościową sygnału zmiennego w czasie.
Wynikiem działania funkcji jest obraz, na którego osi
poziomej mamy informacje o czasie a na osi pionowej
informacje o częstotliwościach.
Wczytać,
odtworzyć,
wykonać
proste
operacje
matematyczne ma pliku.wav i zapisać stworzony materiał
na dysku.
Przykład programu:
clear all;
close all;
%To jest program do tworzenia własnych kombinacji dźwięków
d = rand(1,20000);
Fs = 11025;
wavplay(d); % odtworzenie wektora losowego
t = (0:0.001:1)';
y = sin(2*pi*50*t) + 2*sin(2*pi*120*t); %sygnal o 2
skladowych o czestotliwosciach 50 i 120 Hz
wavplay(y) % odtworzenie dzwieku y
specgram(y,512,2); % wywietla spectogram
y1 = wavrecord(5*Fs,Fs,'int16'); % Nagranie 5 sekund z
czestotliwosci 11025 Hz i próbkowaniem 16 bitowym
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
1
0.9
0.8
Frequency
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
100
150
200
Time
250
300
Projekt współfinansowany Europejskiego Funduszu Społecznego w ramach Programu Operacyjnego Kapitał Ludzki
Laboratorium 14
Treści programowe:
Cel ćwiczenia:
Przykładowe
pomocne funkcje:
Przykładowe
zadania:
Przykład programu:
Tworzenie graficznego interfejsu uŜytkownika.
Zapoznanie z metodami tworzenia i wykorzystania
interfejsu graficznego oraz z sposobami dostępu do
wszystkich elementów okna graficznego.
reset %przywraca domyślne parametry obiektu
delete %usuwa obiekt
drawnow %wykonuje zaległe operacje graficzne
findobj %szuka obiektu o zadanych parametrach
copyobj %tworzy kopię obiektu
push button - rzycisk działający po naciśnięciu go myszką
slider - suwak
radio button - wybór 1 opcji z kilku moŜliwych
checkbox - pole wyboru. moŜliwy wybór kilku opcji
jednocześnie
edit text - pole edycji
static text - tekst bez moŜliwości jego edycji
popup menu - menu podręczne
button group - obszar do ustawiania grupy przycisków
tego samego typu
Wykonać prosty interfejs graficzny i zaprezentować
działanie kilku funkcji
function Przycisk_Callback(hObject, eventdata,
handles)
% hObject handle to Przycisk (see GCBO)
persistent ile % definicja zmiennej w której
trzymamy liczbe nacisniec przycisku
if isempty(ile) % jezli nie ma zadnej wartosci
to przypisuje wartosc 0
ile=0;
end
ile = ile + 1; % reakcja na nacisniecie.
Zwiekszam licznik o 1
str=['Liczba nacisniec: ', Int2Str(ile)]; %
tekst do wyswietlenia
set(handles.tekst,'String',str); % przypisanie
wartosci do pola String obiektowi tekst

Podobne dokumenty