Laboratorium. Cyfrowe przetwarzanie obrazów. Instrukcja 1. Podstawy języka Python

Podobne dokumenty
Python wstęp do programowania dla użytkowników WCSS

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Python. Wprowadzenie. Jolanta Bachan

Wykresy i interfejsy użytkownika

Wprowadzenie do Python

Programowanie robota mobilnego E-puck w języku Python

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Podstawy biblioteki Matplotlib

LibreOffice Calc VBA

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Microsoft IT Academy kurs programowania

Języki i metody programowania

Python. Skąd taka nazwa? Kurs systemu UNIX 1

MATERIAŁY DO ZAJĘĆ II

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania C++

Wstęp do programowania. Różne różności

Algorytmy i struktury danych

Kurs rozszerzony języka Python

3 Przygotował: mgr inż. Maciej Lasota

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

PROGRAMOWANIE W JĘZYKU PYTHON

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Programowanie obiektowe

Wstęp do programowania

Algorytmy i struktury danych. wykład 1

Funkcje matematyczne w C. Programowanie w C Marek Pudełko

Wstęp do programowania

Wprowadzenie do języka Java

Kurs rozszerzony języka Python

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Podstawy programowania w Pythonie

Przeciążanie operatorów

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

2 Przygotował: mgr inż. Maciej Lasota

1 Podstawy c++ w pigułce.

Odczytywanie i zapisywanie obrazów rastrowych do plików, operacje punktowe na tablicach obrazów

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Visual Basic for Application (VBA)

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Programowanie obiektowe

Zaawansowany kurs języka Python

Język ludzki kod maszynowy

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Java Podstawy. Michał Bereta

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie RAD Delphi

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Ćwiczenia z przetwarzania tablic 2D

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wprowadzenie do Scilab: podstawy języka Scilab

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Kiedy i czy konieczne?

Przegląd języka Python. Łukasz Anwajler

Wstęp do ruby dla programistów javy

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Matplotlib - wizualizacja danych

4. Funkcje. Przykłady

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie Delphi obliczenia, schematy blokowe

Podstawy. Jan Koprowski Politechnika Gdańska, FTiMS Informatyka Stosowana

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Zaawansowany kurs języka Python

Podstawy programowania w języku C i C++

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

2 Przygotował: mgr inż. Maciej Lasota

Matplotlib. Krzysztof Katarzyński. Centrum Astronomii UMK

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Podstawy programowania C. dr. Krystyna Łapin

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Liczby losowe i pętla while w języku Python

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Metody numeryczne. Artur Wymysłowski, prof. PWr. Wrocław

Dr Michał Tanaś(

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Podstawy programowania w Pythonie

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Warsztaty dla nauczycieli

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Oracle PL/SQL. Paweł Rajba.

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

KOTLIN. Język programowania dla Androida

C++ wprowadzanie zmiennych

Transkrypt:

Laboratorium Cyfrowe przetwarzanie obrazów Instrukcja 1 Podstawy języka Python Praca interaktywna # dodawanie dwóch liczb >>> 1 + 1 2 # tworzenie zmiennych >>> a = 1 >>> a 1 # sprawdzanie typów >>> type(a) <type 'int'> # typ integer o dowolnej precyzji >>> a = 1203405503201 >>> a 1203405503201L >>> type(a) <type 'long'> # liczby rzeczywiste >>> b = 1.2 + 3.1 >>> b 4.2999999999999998 >>> type(b) <type 'float'> # liczby zespolone >>> c = 2+1.5j >>> c (2+1.5j) Pyton posiada cztery typy numeryczne, dla architektury 32-bitowej są one następujące: integer (4 bajty) long integer (dowolna precyzja) float (8 bajtów jak typ double w C) complex (16 bajtów) Moduł Numeric umożliwia wykorzystanie większej ilości typów numerycznych.

Tworzenie ciągów znaków # z wykorzystaniem podwójnego lub pojedynczego cudzysłowu >>> s = hello world >>> print s hello world >>> s = hello world >>> print s hello world Formatowanie ciągów znaków >>> s = some numbers: >>> x = 1.34 >>> y = 2 >>> s = %s %f, %d % (s,x,y) >>> print s some numbers: 1.34, 2 Tworzenie list >>> l = [10,11,12,13,14] >>> print l [10, 11, 12, 13, 14] Tworzenie list z wykorzystaniem zakresów - range( start, stop, step) >>> range(5) [0, 1, 2, 3, 4] >>> range(2,7) [2, 3, 4, 5, 6] >>> range(2,7,2) [2, 4, 6] Odczyt pojedynczych elementów >>> list = [10,11,12,13,14] >>> list[0] 10 Tworzenie list o różnym typie elementów >>> list = [10, eleven,[12,13]] >>> list[1] eleven >>> list[2] [12, 13] Odczyt zagnieżdżonych elementów listy >>> list[2][0] 12

Usuwanie elementów listy >>> del l[2] >>> l [10, eleven ] Odczyt zakresów listy >>> l = [10,11,12,13,14] >>> l[1:3] [11, 12] >>> l[1:-2] [11, 12] # wykorzystanie ujemnych indeksów >>> l[-4:3] [11, 12] # odczyt pierwszych trzech elementów >>> l[:3] [10,11,12] # odczyt ostatnich dwóch elementów >>> l[-2:] [13,14] Wykonywanie operacji na listach >>> l = [10,21,23,11,24] # dodanie elementu >>> l.append(11) >>> print l [10,21,23,11,24,11] # zliczanie wystąpień wartości 11 >>> l.count(11) 2 # pierwsze wystąpienie 11 >>> l.index(11) 3 # usunięcie pierwszej 11 >>> l.remove(11) >>> print l [10,21,23,24,11] # sortowanie listy >>> l.sort() >>> print l [10,11,21,23,24] # zmiana kolejności elementów listy >>> l.reverse() >>> print l [24,23,21,11,10]

Słowniki # utworzenie pustego słownika i dodawanie elementów >>> record = {} >>> record[ first ] = James >>> record[ last ] = Maxwell >>> record[ born ] = 1831 >>> print record {'first': 'James', 'born': 1831, 'last': 'Maxwell'} Niemodyfikowalne sekwencje obiektów (tuples) >>> t = (1, two ) >>> print t (1, two ) >>> t[0] 1 Wyrażenie warunkowe >>> x = 10 >>> if x > 0:... print 1... elif x == 0:... print 0... else:... print 1... < hit return > 1 Pętla for iteracja po sekwencji obiektów >>> for i in range(5):... print i,... < hit return > 0 1 2 3 4 >>> for i in abcde :... print i,... < hit return > a b c d e >>> l=[ dogs, cats, bears ] >>> accum = >>> for item in l:... accum = accum + item... accum = accum +... < hit return > >>> print accum dogs cats bears

Pętla while >>> lst = range(3) >>> while lst:... print lst... lst = lst[1:]... < hit return > [0, 1, 2] [1, 2] [2] Tworzenie funkcji >>> def add(x,y):... a = x + y... return a # wywołanie funkcji z liczbami >>> x = 2 >>> y = 3 >>> add(x,y) 5 # wywołanie funkcji z ciągami >>> x = foo >>> y = bar >>> add(x,y) foobar Moduł NumPy >>> import numpy as np >>> x = np.float32(1.0) >>> x 1.0 >>> y = np.int_([1,2,4]) >>> y array([1, 2, 4]) >>> z = np.arange(3, dtype=np.uint8) >>> z array([0, 1, 2], dtype=uint8) Tworzenie tablic >>> a = array([1,2,3,4]) >>> b = array([2,3,4,5]) >>> a + b array([3, 5, 7, 9]) >>> a[0] 1 >>> a[0] = 10 >>> a [10, 2, 3, 4]

# Utworzenie wektora od 0 do 10 >>> x = arange(11.) >>> a = (2*pi)/10. >>> a 0.628318530718 >>> a*x array([ 0.,0.628,,6.283]) >>> y = sin(a*x) Tablice wielowymiarowe >>> a = array([[ 0, 1, 2, 3], [10,11,12,13]]) >>> a array([[ 0, 1, 2, 3], [10,11,12,13]]) >>> a[1,3] 13 >>> a[1] array([10, 11, 12, 13]) >>> a[0,3:5] array([3, 4]) >>> a = array([0,1.,2,3],'f') >>> a.dtype() 'f Typ danych Opis bool Boolean (True or False) stored as a byte int Platform integer (normally either int32 or int64) int8 Byte (-128 to 127) int16 Integer (-32768 to 32767) int32 Integer (-2147483648 to 2147483647) int64 Integer (9223372036854775808 to 9223372036854775807) uint8 Unsigned integer (0 to 255) uint16 Unsigned integer (0 to 65535) uint32 Unsigned integer (0 to 4294967295) uint64 Unsigned integer (0 to 18446744073709551615) float Shorthand for float64. float32 Single precision float: sign bit, 8 bits exponent, 23 bits mantissa float64 Double precision float: sign bit, 11 bits exponent, 52 bits mantissa complex Shorthand for complex128. complex64 Complex number, represented by two 32-bit floats (real and imaginary components) complex128 Complex number, represented by two 64-bit floats (real and imaginary components) Funkcje do tworzenia tablic arange(start,stop=none,step=1,typecode=none) >>> arange(0,2*pi,pi/4) array([ 0.000, 0.785, 1.571, 2.356, 3.142,

3.927, 4.712, 5.497]) ones(shape,typecode=none,savespace=0) zeros(shape,typecode=none,savespace=0) >>> ones((2,3),typecode=float32) array([[ 1., 1., 1.], [ 1., 1., 1.]],'f') Operatory i funkcje matematyczne a + b a - b a % b a * b a / b a ** b add(a,b) subtract(a,b) remainder(a,b) multiply(a,b) divide(a,b) power(a,b) Operatory porównania i logiczne equal (==) greater_equal (>=) logical_and (and) logical_not (not) not_equal (!=) less (<) logical_or (or) greater (>) less_equal (<=) logical_xor >>> a = array(((1,2,3,4),(2,3,4,5))) >>> b = array(((1,2,5,4),(1,3,4,5))) >>> a == b array([[1, 1, 0, 1], [0, 1, 1, 1]]) # funkcjonalny odpowiednik >>> equal(a,b) array([[1, 1, 0, 1], [0, 1, 1, 1]]) Operatory bitowe bitwise_and (&) bitwise_or ( ) invert (~) right_shift(a,shifts) left_shift(a,shifts) bitwise_xor Funkcje trygonometryczne

sin(x) sinh(x) cos(x) cosh(x) arccos(x) arccosh(x) arctan(x) arctanh(x) arcsin(x) arcsinh(x) arctan2(x,y) Inne funkcje exp(x) log10(x) absolute(x) negative(x) floor(x) hypot(x,y) maximum(x,y) log(x) sqrt(x) conjugate(x) ceil(x) fabs(x) fmod(x,y) minimum(x,y) Moduł matplotlib import pylab lub Przykład 1 from scipy import * x = r_[0:101] y01 = sin(2*pi*x/100) y02 = cos(2*pi*x/100) plot(x,y01,linewidth=5.0) hold(true) plot(x,y02,linewidth=5.0) xlabel( x );ylabel( y) title( Plottingsin(x) & cos(x) ); legend(( sin(x), cos(x) )); grid(true) Przykład 2 from scipy import * from scipy.fftpackimport fftshift x=r_[0:101] y01=sin(2*pi*x/100) y02=cos(2*pi*x/100) y03 = randn(100); y04 = sinc(2*pi*x/100); Y04 = abs(fftshift(fft(y04))) y05 = sinc(1.5*pi*x/100);

y06 = sinc(2.5*pi*x/100); Y06 = abs(fftshift(fft(y06))) subplot(2,2,1);plot(x,y01,linewidth=3);hold(true); plot(x,y02,'r',linewidth=3) grid(true);title('sin(x) & cos(x)'); subplot(2,2,2);plot(y03,linewidth=2);grid(true);title('random Numbers'); subplot(2,2,3);plot(x,y04,'k',linewidth=3);grid(true);title('sinc( x)'); hold(true); subplot(2,2,3);plot(x,y05,'--',linewidth=3); subplot(2,2,3);plot(x,y06,'r',linewidth=2); subplot(2,2,4);plot(y04,linewidth=2.5);grid(true);title('fft of sinc(x)'); show() Przykład 3 from scipy import * from scipy.fftpackimport fftshift x,y= meshgrid(r_[-3:3:100j], r_[-3:3:100j]); z = 3*(1-x)**2*exp(-x**2-(y+1)**2) -10*(x/5-x**3-y**5)*exp(-x**2- y**2) -(1/3)*exp(-(x+1)**2-y**2); wav = io.read_array('wavdata'); x1 = r_[1:wav.size+1] subplot(2,2,1);contour(x,y,z,25);grid(true);title('simple 2D Contour Plot'); subplot(2,2,2);contourf(x,y,z);title('filled Contour'); subplot(2,2,3);h=specgram(wav);title('spectrogram'); subplot(2,2,4);hist(randn(100));title('histogram'); show(); Wyświetlanie obrazu z różnymi trybamia interpolacji A = rand(5,5) figure(1) imshow(a, interpolation='nearest') grid(true) figure(2) imshow(a, interpolation='bilinear') grid(true) figure(3) imshow(a, interpolation='bicubic') grid(true) show()

Przykład Wykorzystanie biblioteki PIL do odczytania obrazu try: import Image except ImportError, exc: raise SystemExit("PIL must be installed to run this example") lena = Image.open('../data/lena.jpg') dpi = rcparams['figure.dpi'] figsize = lena.size[0]/dpi, lena.size[1]/dpi figure(figsize=figsize) ax = axes([0,0,1,1], frameon=false) ax.set_axis_off() im = imshow(lena, origin='lower') show() Przykład import pylab as p X = p.array([[1, 3, 2], [2, 2.4, 3], [2, 3, 1], [1, 1, 2], [3, 2, 2]]) p.figure() p.imshow(x) p.figure() p.pcolor(x) p.figure() p.imshow(x, interpolation='nearest') p.colorbar() p.show() Przykład import numpy as np import matplotlib.cm as cm import matplotlib.mlab as mlab import matplotlib.pyplot as plt delta = 0.025 x = y = np.arange(-3.0, 3.0, delta)

X, Y = np.meshgrid(x, y) Z1 = mlab.bivariate_normal(x, Y, 1.0, 1.0, 0.0, 0.0) Z2 = mlab.bivariate_normal(x, Y, 1.5, 0.5, 1, 1) Z = Z2-Z1 # difference of Gaussians im = plt.imshow(z, interpolation='bilinear', cmap=cm.gray, origin='lower', extent=[-3,3,-3,3]) plt.show() Przykład import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LightSource # test data X,Y=np.mgrid[-5:5:0.05,-5:5:0.05] Z=np.sqrt(X**2+Y**2)+np.sin(X**2+Y**2) # create light source object. ls = LightSource(azdeg=0,altdeg=65) # shade data, creating an rgb array. rgb = ls.shade(z,plt.cm.copper) # plot un-shaded and shaded images. plt.figure(figsize=(12,5)) plt.subplot(121) plt.imshow(z,cmap=plt.cm.copper) plt.title('imshow') plt.xticks([]); plt.yticks([]) plt.subplot(122) plt.imshow(rgb) plt.title('imshow with shading') plt.xticks([]); plt.yticks([]) plt.show()