GIE - Utilitar - București - Lucrari 2019 Nationala

Informatii generale

Descriere

“Dataflow programming” este o paradigma de programare care modeleaza programele sub forma de grafuri orientate. GIE combina editarea si procesarea de imagini si ideea de “dataflow programming”, astfel inzestrand utilizatorul cu abilitatea de a crea efecte conceptual procedurale intr-un mod natural si accesibil.

Inspirat de editorul de noduri pentru materiale din Blender si de nisa de arte digitale “glitch art”, GIE este o platforma care permite utilizatorilor sa descrie efectele care vor fi aplicate imaginilor. In cadrul editoarelor traditionale de imagini, utilizatorul insusi altereaza imaginea. Aceasta metoda de a lucra pe imagini devine foarte ineficienta atunci cand este nevoie de efecte procedurale sau efecte care au la baza formule matematice.

Desi ideea a pornit de la “glitch art”, acest program poate fi folosit in mai multe domenii legate de manipularea de imagini. De exemplu, GIE poate fi folosit, de asemenea, si in editarea imaginilor (vine cu noduri care faciliteaza editarea imaginilor), “compositing”, crearea de background-uri generate pentru postere, reclame etc.

Ideea principale din spatele GIE este de a fi o platforma care faciliteaza o multitudine de activitati legate de mainipularea de imagini. Din acest motiv, GIE ofera utilizatorilor posibilitatea de a scripta si aduga noduri folosing optiunea de “live reload”. Cu ajutorul integrarii de Numpy, utilizatorii pot vectoriza diferite operatii pe imagini si diferiti agloritmi (astfel obtinand un nivel de performanta bun) care apoi pot fi folositi si combinati cu alti algoritmi, prin intermediul interfetei grafice.

Tehnologii

GIE este scris in principal in C++ si Python. Cu ajutorul C Python API, codul de python este rulat si prezentat sub forma de noduri. Interfata grafica este scrisa in framework-ul Qt, cu ajutorul unor librarii.

GIE este alcatuit din 2 componente majore.

  • “libgie” - libraria care interfateaza cu codul de python si faciliteaza executarea. Aceasta componenta este scrisa ca o librarie, pentru a facilita modularizarea.
  • interfata grafica
    Acestea comunica prin intermediul interfetei “libgie”, apelurile la aceasta librarie fiind facute de pe un thread separat celui alocat interfetei grafice.

Nodurile sunt functii de python care trebuie sa respecte anumite reguli. Aceste functii trebuie sa aiba indicii de tip (type hints) pentru fiecare parametru si pentru rezultat. Din motive de performanta, majoritatea nodurilor care vin cu GIE sunt scrise in C++ si compilate ca pachete de Python.

GIE integreaza, de asemenea, Numpy - cel mai popular framework pentru procesare numerica si vectorizare - pentru a-i permite utilizatorilor avansati sa adauge noi noduri folosing optiunea de “live reload”.

Cerinte sistem

cerinte minime: i3 2nd gen, 4g ram
cerinte recomandate: i5 3rd gen, 8gb ram
OS: testat doar pe linux, scris ca sa fie cross-platform

Realizatori

Alexandru-Iulian Magan

  • Scoala: Liceul National de Informatica Tudor Vianu
  • Clasa: 9
  • Judet: București
  • Oras: Bucuresti

Screenshots