GithubHelp home page GithubHelp logo

sabidea23 / digital-image-interpolation Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 2.0 14 KB

Implements 3 types of interpolation: bicubic, bilinear and nearest-neighbor on black-and-white and color images of different sizes.

MATLAB 100.00%
nearest-neighbours bilinear-interpolation bicubic-interpolation

digital-image-interpolation's Introduction

->Interpolaea nearest-neighbour

Pentru functia nn 2x2(f, STEP) am gandit matricea finala ca fiind 
impartita in 4 zone distincte, de replicare a valorilor functiei f. 
Valoarea pixelului din imaginea finala este data de pozitia sa intr-o 
astfel de zona. Pentru cazul unei imagini colorate, am extras matricele
corespunzatoare fiecarui canal de culoare, pentru care am aplicat functia
de mai sus, iar in final am format matricea finala.

Pentru functia nn resize(I, p, q), in cadrul calculului
celor 2 constante de scalare, am tinut cont de pozitionarea pixelilor din
imaginea finala, deoarece in Octave indexarea incepe de la 1, nu de la 0.
Matricea de transformare are pe diagonala principala factorii de scalara,
in rest 0. Pentru fiecare pixel (x, y) din imaginea finala, am aplicat matricea inversa
de transformare am trecut in coordonatele imaginii initiale si am obtinut coordonatele (x_p, y_p).
Spre deosebire de functia nn 2x2(f, STEP), aici am folosit functia de rotunjire round(),
pentru simplificare. Pentru cazul unei imagini colorate, am extras matricele
corespunzatoare fiecarui canal de culoare, pentru care am aplicat functia
de mai sus, iar in final am format matricea finala.

->Interpolaea biliniara

La acest task imi apar warning-uri la compilare, insa obtin punctajul pentru
toate testele. 
Pentru calcularea coeficientilor biliniari, am calculat pe rand fiecare 
coloana a matricei A si am rezolvat sistemul de ecuatii liniare folosind operatorul
specific din Octave, "/", afland vectorul de coeficienti. 
Pentru functia de resize, dupa calculul  coordonatelor (x_p, y_p), am aflat 
coordonatele punctelor care le inconjoara,apeland surrounding_points(). Pentru 
aproximarea in sus am folosit functia ceil, iar pentru aproximare in jos, 
functia fix. Am aflat coeficientii biliniari si am calculat valoarea pixelului
din imaginea finala cu ajutorul acestora. 
Pentru functia bilinear_rotate, atunci cand coordonatele (x_p, y_p) nu se incadeaza in
dimensiunile imaginii, am pus un pixel negru (=0) si am trecut la calculul urmatorii valori 
din matricea finala. 

-> Interpolare bicubica

Pentru aproximarea derivatelor am tinut cont ca se considera si coordonatele x, y = โˆ’1
si x, y = 2 si la marginile imaginii am considerat ca derivatele sunt 0. 
La calcularea matricelor ce contin derivatele, am parcurs matricele cu 2 for-uri, iar
acolo unde erau probleme la functia de aproximare, am inceput for-ul de la 2, pentru a
fi sigura ca nu vor intra pe conditia pentru coordonatele care sunt la margine.

->Feedback 

Consider ca ideea de interpolare pe fotografii a fost una foarte interesanta si bine aleasa
pentru tema noastra. Scheletul de cod este foarte bine realizat, indicatiile sunt clare, 
si indicatiile din pdf-ul temei sunt complete. Am putut realiza usor tema, in ciuda faptului
ca nu sunt foarte priceputa la scris cod Octave. M-am bucurat sa invat atat de multe lucruri
despre fotografii si alcatuirea lor din pixeli, sa aflu functii cu care sa le citesc 
sub forma unei matrice precum imread si sa testez manual testele de la checker, pentru a
intelege mai bine algoritmul. De asemenea, am apreciat raspunsurile rapide si clare la 
intrebarile de pe forum, care m-au ajutat si pe mine la implementare.

digital-image-interpolation's People

Stargazers

 avatar

Watchers

 avatar

Forkers

bbeneduzib mfkiwl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.