Ćwiczenia z przetwarzania tablic 2D

Podobne dokumenty
Spis treści. Morfologia matematyczna. 1 Morfologia matematyczna 1.1 Dylacja 1.2 Erozja 1.3 Otwarcie i zamknięcie 1.

Ćwiczenia z mainuplacji obrazem rozpocznijmy od wczytania pliku, który będziemy przetwarzać. Dla fizyków medycznych naturalnie będzie to plik DICOM.

Podstawy OpenCL część 2

MODELOWANIE RZECZYWISTOŚCI

Mateusz Żyliński Tadeusz Włodarkiewicz. WireWorld. Zebranie informacji dotyczących tematyki projektu oraz przedstawienie koncepcji realizacji projektu

LIVE Gra w życie. LIVE w JavaScript krok po kroku. ANIMACJA Rozpoczynamy od podstawowego schematu stosowanego w animacji

Modelowanie wieloskalowe. Automaty Komórkowe - podstawy

Układy dynamiczne Chaos deterministyczny

Wykresy i interfejsy użytkownika

Obliczenia inspirowane Naturą

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Powstanie gry Opis reguł gry Reguły według Conwaya Elementy występujące w grze Modyfikacje gry Charakterystyka automatu komórkowego Gra w Życie

Sieciowe Technologie Mobilne. Laboratorium 2

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Turing i jego maszyny

Celem tych ćwiczeń jest zapoznanie się z klasyfikacją za pomocą sieci neuronowych.

Spis treści. Optymalizacja jednowymiarowa

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Równania różniczkowe zwyczajne

PROGRAMOWANIE W PYTHONIE ALGORYTMY TABLICOWE A LISTY

Języki i metody programowania

Podręcznik. Model czy teoria

Modelowanie wieloskalowe. Automaty Komórkowe - podstawy

Budowa i generowanie planszy

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Warsztaty dla nauczycieli

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Informatyka II. Laboratorium Aplikacja okienkowa

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Wstęp do programowania

Wprowadzenie do środowiska MATLAB z zastosowaniami w modelowaniu i analizie danych

Tworzenie szablonów użytkownika

Programowanie w języku Python. Grażyna Koba

Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik

Podstawy programowania w Pythonie

Ćwiczenie 6. Transformacje skali szarości obrazów

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Materiały dla studentów pierwszego semestru studiów podyplomowych Grafika komputerowa i techniki multimedialne rok akademicki 2011/2012 semestr zimowy

Obraz cyfrowy. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Analiza obrazów - sprawozdanie nr 2

INSTRUKCJA OBSŁUGI ❽ Wyniki analizy

Podstawy programowania w Pythonie

W dowolnym kwadracie 3x3 ustawiamy komórki na palące się (stan 3). Program powinien pokazywać ewolucję pożaru lasu.

Ćwiczenie 1 Galeria zdjęć

Kodu z klasą. Skarb w zatrutej wodzie, cz. 2. Scenariusz 6

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Zagadnienia programowania liniowego dotyczą modelowania i optymalizacji wielu problemów decyzyjnych, na przykład:

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

Liga zadaniowa - Informatyka. Zad 1. (Python lub Logomocja)

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

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

Uzyskanie podkładu topograficznego z Geoportalu przy użyciu biblioteki GDAL. Krzysztof Kochan

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

3.4. Opis konfiguracji layoutów.

Zadania z rysowania i dopasowania funkcji

Wstęp do programowania

Wprowadzenie do Python

Pętle. Dodał Administrator niedziela, 14 marzec :27

Maskowanie i selekcja

Visual Basic w programie Excel dla Windows

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Algorytmy sztucznej inteligencji

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

CZAS NA PROGRAMOWANIE

Automaty komórkowe. Katarzyna Sznajd-Weron

Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik

Wstęp do Programowania Lista 1

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Gra na telefon komórkowy

Wstęp do programowania

Egzamin maturalny z informatyki Poziom rozszerzony

Laboratorium Programowanie Obrabiarek CNC. Nr H04

W powyższym kodzie utworzono wyliczenie dni tygodnia.

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Wstęp do programowania

Diagnostyka obrazowa

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Import danych w formacie txt

Mechanizm dziedziczenia

1 Temat: Wprowadzenie do biblioteki OpenCV

Python. Wprowadzenie. Jolanta Bachan

Skaner Mustek Scan Express

Nasyp przyrost osiadania w czasie (konsolidacja)

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Tablice. Jones Stygar na tropie zmiennych

Grafika rastrowa (bitmapa)-

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Transkrypt:

Ćwiczenia z przetwarzania tablic 2D Wyświetlanie tablic 2D Jako wstęp do przetwarzania obrazów w pythonie przećwiczmy podstawowe operacje na dwuwymiarowych tablicach numpy w postaci których będziemy takie obrazy przechowywać. Zacznijmy od zdefiniowania przykładowej tablicy, która będzie reprezentować obrazek. import numpy as np import pylab as py a=np.zeros((100,100),dtype=np.bool) a[30:50,30:50]=true a[50:70,50:70]=true Stworzyliśmy w ten sposób tablice 100 na 100 z wpisanymi wartościami False oraz w środku dwa kwadraty o boku 20 z wartościami True. Już tak stworzoną tablicę możemy wyświetlić za pomocą pylaba. py.imshow(a) py.show()

Nie do końca można było się spodziewać, że pylab wyświetli wartości False w kolorze granatowym, a wartości True w kolorze bordowym. Za przyporządkowanie kolorów określonym wartościom odpowiada tzw. mapa kolorów, którą podajemy jako parametr w poleceniu imshow. Aby uzyskać bardziej intuicyjną skalę szarości należy wywołać polecenie następująco py.imshow(a,cmap = py.cm.gray) py.show()

Teraz kolory (a raczej ich brak) są takie jakich można było się spodziewać. Zaskakujące jest za to rozmycie brzegów kwadratów. Obrazek wyświetlany jest w większych rozmiarach niż jego domyślne 100 na 100 pixeli. Pylab aby wyświetlić go w wyższej rozdzielczości musi zwiększyć jego rozmiary. Rozciągając obrazek można w różny sposób przypisywać wartości pixelom, których nie było w pierwotnym obrazku. Proces ten nazywamy interpolacją i aby uzyskać "ostre" krawędzie należy znów użyć odpowiedniej opcji metody imshow. py.imshow(a,cmap = py.cm.gray, interpolation = 'nearest') py.show()

Gra w życie Conwaya W ramach ćwiczeń zaprogramujmy klasyczny automat komórkowy zwany grą w życie Conwaya. W naszej wersji gra toczy się na skończonej planszy o wymiarach 100 na 100 podzielonej na kwadratowe komórki. Każda komórka (poza brzegowymi) ma ośmiu sąsiadów, czyli komórki przylegające do niej bokami i rogami. Każda komórka może znajdować się w jednym z dwóch stanów: może być albo "żywa" (stanowi przypisujemy wartość 1), albo "martwa" (wartość 0). Stan wszystkich komórek w pewnej jednostce czasu jest używany do obliczenia stanu wszystkich komórek w następnej jednostce. Po obliczeniu wszystkie komórki zmieniają swój stan jednocześnie. Stan komórki zależy tylko od liczby jej żywych sąsiadów w następujący sposób Martwa komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce czasu (rodzi się) Żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje żywa, przy innej liczbie sąsiadów umiera Zacznijmy od zdefiniowania planszy gry

import numpy as np import pylab as py a=np.zeros((100,100)) Kluczową i najtrudniejszą funkcją jest funkcja zliczająca liczbę sąsiadów danej komórki. Problematyczne jest tutaj uwzględnienie przypadku komórek znajdujących się na rogach, które mają po trzech sąsiadów, oraz komórek brzegowych mających po 5 sąsiadów. Przykładowe rozwiązanie wygląda następująco. def ile_sasiadow(x,y,macierz): return np.sum(macierz[max(,x-1):min(macierz.shape[],x+2),max(,y-1):min(macierz.shape [1],y+2)].flatten())-macierz[x,y] Z tak przygotowaną funkcją ile_sasiadow możemy zdefiniować funkcję określającą logikę gry w życie. def nowy_stan_komorki(x,y,macierz): sasiadow=ile_sasiadow(x,y,macierz) if sasiadow==3: return 1 if sasiadow==2 and macierz[x,y]==1: return 1 return Możemy teraz zdefiniować nowy stan całej planszy. def krok(macierz): wynik=macierz.copy() for x,y in np.ndindex(wynik.shape): wynik[x,y]=nowy_stan_komorki(x,y,macierz) return wynik Jako warunku początkowego możemy użyć tzw. lokomotywy. lokomotywa=np.array([[1,1,1,,1],[1,,,,],[,,,1,1],[,1,1,,1],[1,,1,,1]]) a[45:50,45:50]=lokomotywa W pylabie istnieje prosty sposób na wyświetlenie animacji poprzez odświeżanie już wyświetlonego obrazka. py.ion() for n in range(1000):

py.imshow(a, cmap='greys', interpolation='nearest') a=krok(a) py.draw() "Programowanie dla Fizyków Medycznych"