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