Programul poate comprima imagini atunci cand este apelat cu optiunea -c2 ./quadtree -c2 <input.ppm> <output.compressed>
Programul poate reface o imagine pornind de la compresia ei folosind -d ./quadtree -d <input.compressed> <output.ppm>
Mai exista si optiunea -c1, care ofera detalii despre dimensiunea arborelui de compresie.
make build
- este fisierul principal al rezolvarii.
- programul stocheaza parametrii dati la rulare in variabile specifice si le verifica validitatea
- daca cerinta este -c1 sau -c2 rezolvarea e foarte similara, asa ca va face un caz comun. Intai citeste headerul fisierului .ppm, apoi pixel cu pixel intreaga imagine este memorata intr-o matrice de pixeli.
- definitia structurilor TPixel si TCompressionTree se afla in fisierul functions.h
- este apelata functia de compresie, care aplica intocmai formulele matematice din enunt
- pe baza arborelui construit se afiseaza output-ul specific fiecarei cerinte: pentru -c1 se afiseaza cateva statistici, pentru -c2 se construieste fisierul comprimat parcurgand pe nivel cu ajutorul unei cozi arborele
- pentru cerinta -d programul primeste ca parametru un fisier comprimat si il interpreteaza, construind imaginea (operatiune simetrica cu cea de la -c2, tot cu o coada)
- la sfarsit memoria folosita este dezalocata (pentru bonus)
- createTree functie care aloca memorie pentru un nod al unui arbore
- freeTree functie care dezaloca un arbore pornind din radacina
- treeHeight calculeaza inaltimea arborelui
- compressImage construieste arborele de compresie impartind matricea imaginii in 4 sferturi la fiecare pas in care media depaseste factorul dat. Parametrii counter si maximumSize sunt folositi pentru cerinta 1
- printCompressionTree parcurge pe nivel si scrie arborele de compresie in fisier, dupa specificatiile enuntului
- readTree e o functie auxiliara folosita de functia de citire recursiva readTreeQueue, care face o parcurgere pe nivel in citire
- readTreeQueue e functia simetrica a functiei printCompresssionTree
- decompressTree functie care construieste matricea pixelilor imaginii pornind de la arborele de compresie
- printImage scrie matricea imaginii pixel cu pixel in fisierul .ppm de la cerinta 3