Limbajul de Programare

Capitolul I. Introducere

Ce este un sistem informatic?

Un sistem informatic este o combinație a elementelor necesare stocării și procesării datelor. Fiecare computer este un sistem informatic compus din mai multe părți, software și hardware.

Hardware-ul îl reprezintă echipamentul, sau dispozitivele fizice asociate unui computer, cum ar fi mouse, tastatură, periferice cum ar fi imprimanta, monitor sau microfon, cabluri etc. Dispozitivele hardware sunt produse de către diverse branduri, în funcție de mărimea computerului ce le va folosi și diferiți parametri, deși există bunăoară componente, cum ar fi rezistori sau condensatori, ce sunt folosiți de către o multitudine de dispozitive. În ciuda diferențelor de mărime, funcțiile pe care le îndeplinește un computer sunt similare. Indiferent de mărime, un calculator are nevoie de instrucțiuni pentru a efectua diferite sarcini.
Instrucțiunile, indiferent că vorbim de un sistem de operare sau de o aplicație, reprezintă software-ul. Software-ul reprezintă programele, instrucțiunile ce spun hardware-ului ce să facă. Programele se pot cumpăra fie sub formă fizică (din ce în ce mai rar) sau digital, direct de pe Internet. De exemplu, pentru acasă un user folosește de obicei programe cum ar fi playere de muzică (Foobar, WinAmp), de filme (VLC, Media Player Classic) sau cumpără jocuri, însă companiile folosesc de multe ori software cum ar Microsoft Office, programe de contabilitate, SAP, Photoshop sau softuri la comandă, în funcție de nevoi și de profilul afacerii.

Evident, utilizatorii își pot scrie propriile programe, așa cum este cazul de față, de obicei cu ajutorul unui mediu de dezvoltare. În schimb, sistemul de operare constă în programele pe care le folosește calculatorul fără intervenția noastră, pentru a interacționa cu hardware-ul. Aici intră atât Linux, cât și Windows, Apple OS, Google Android etc.

Împreună, hardware-ul și software-ul calculatoarelor îndeplinesc trei funcții majore în majoritatea programelor:

Introducerea (input) – datele intră în sistemul informatic și sunt stocate în memorie, unde pot fi procesate. Datele pot fi atât text, cât și numere sau oirice alt material ce este introdus si procesat în calculator. Evident, într-o afacere putem discuta de proprietăți ale materialelor, statistici, date contabile sau estimări de vânzări. În ceea ce privește datele pentru uz casnic, ne putem referi, cum est cazul în acest proiect, la imagini, dar și la sunete, sau chiar introducerea de către utilizatori a elementelor cum ar fi mișcarea mouse-ului pe ecran sau controlarea unui personaj dintr-un joc.

Procesarea datelor (data processing)– partea de procesare se poate referi la sortarea sau organizarea acestora, verificarea acurateții lor, extragerea tipului de date relevant, efectuarea diverselor calcule cu ajutorul acestor date. Partea hardware dintr-un calculator care se ocupă de partea de procesare este, în mod tradițional, procesorul. Însă în unele tipuri de aplicații, cum ar fi calculul mișcării, aplicații de securitate sau chiar editare video, există posibilitatea folosirii fie a procesoarelor multi-core, adică a mai multor nuclee ce pot efectua calcule în paralel, fie folosirea unei plăci video din segmentul profesional sau consumer, chiar și în aplicații de securitate cum ar fi testarea prin forță brută a unei parole a unui sistem informatic.

Ieșirea (output) datelor – după procesarea acestora, informația rezultată e trimisă fie pe ecranul calculatorului, fie către o imprimantă, proiector etc.
Stocarea datelor se face fie pe suport fizic, din ce în ce mai mult s-a trecut pe partea de hard diskuri SSD, sau hard disk-uri cu platane (deși vor ieși din ce în ce mai mult din uz), în defavoarea mediilor optice cum sunt CD-urile sau DVD-urile, fie ”in the cloud” adică stocare în Internet, în locații sigure. Ultimul din urmă mijloc de stocare prezină riscuri serioase de securitate în cazul în care fie userul și parola sunt compromise la locația respectivă, fie există cereri din partea unei autorități statale ce dorește de exemplu subminarea unui potențial rival economic străin.

Ce este programarea? Originea limbajelor de programare

Programarea unui sistem informatic se referă la procesul creației unor instrucțiuni pentru calculator. Instrucțiunile pot să se refere, evident, și la interacțiunea unui sistem informatic cu un altul, acest lucru stând la baza a ceea ce se numește azi Internet. Evident, în decursul istoriei, modalitățile de programare au variat foarte mult.

Comunicarea cu sistemele informatice se facea initial cu ajutorul unor cartele perforate, la inceputurile sistemelor de calcul, cum este ENIAC-1, programarea se facea rudimentar, de mână, și era un proces laborios ce necesita o echipă de oameni de știință dedicată. Mai apoi, programarea s-a făcut cu ajutorul programelor stocate pe benzi magnetice, cum sunt cele de casetofon sau magnetofon. După aceea, s-a trecut la dischete, CD-uri și DVD-uri. La ora aceasta, programele sunt chiar și de dimensiunea unui Blu-Ray disc, adica 25-50 Gb. Limbajele de programare se clasifică în limbaje de programare low-level și high-level. Limbajele de programare cum sunt asamblor sau cod mașină sunt mult mai rapide decât cele de nivel înalt, însă necesită multe ore de cod pentru a fi implementate. Azi, sunt folosite numai în zone specifice, unde cantitatea de memorie disponibilă e foarte mică, sau unde e necesară comunicarea cu procesorul la nivel foarte granular. În general, se folosesc azi fie limbaje nestructurate, cel mai cunoscut fiind limbajul C, care a fost inventat în anii 70, fie limbaje orientate obiect, cum ar fi Java, C++ sau C#. Programarea și algoritmii de calcul sunt astăzi studiate de la nivel de școală generală sau liceu, până la nivel de instituții academice, studiul calculatoarelor fiind crucial din punct de vedere al aplicabilității în toate ramurile omenirii, de la agricultură intensivă și până la calcul balistic, de la sateliți de comunicații la statistică socială.

Limbajele de programare la ora aceasta sunt probabil de ordinul sutelor, dar în istorie un loc aparte îl au cele ce folosite pe Linux, derivat din Unix, care e folosit în mod curent atât în domeniul servelor, dar și al routerelor, telefoanelor mobile sau tabletelor, și Windows, sistemul de operare al companiei Microsoft. Limbajul de programare C, deși inventat în anii 70 la Bell Labs de către Dennis Ritchie, este folosit ca bază de studiu și astăzi pentru foarte multe universități sau licee, și pe bună dreptate: este un limbaj simplu ca sintaxă, dar foarte puternic. Limbajele de nivel înalt folosesc de multe ori o sintaxă asemănătoare cu cea a limbajului C, așa cum este cazul și cu limbajul C#.

Limbajul C#

C# a fost inventat de Andrej Hejlsberg, în anii 90, iar prima variantă oficială a ieșit pe piață în 2000, și este un puternic limbaj orientat obiect ce folosește bibliotecile .Net. Limbajul C# s-a vrut o concurență la Java, acesta din urmă inventat de Oracle, și permite atât lucrul în rețea, cât și accesul la majoritatea uneltelor Windows ale sistemului de operare, putând fi folosit pe scară largă, de la plaforme SoC cum e Raspberry sau în segmentul Automotive, până la Azure și sisteme mainframe. Mai multe decât atât, C# poate fi folosit și ca instrument Open Source, deoarece Microsoft a dorit o colaborare și cu fanii Linux. C# folosește programarea funcțională LINQ și expresii lambda, și permite interogarea bazelor de date, căutarea rapidă sau lucrul cu fișiere XML. Limbajul C# folosește bibliotecile .Net și s-a vrut a fi și o alternativă pentru Visual Basic, un limbaj simpu de învățat, dar care nu avea nici pe departe puterea sau flexibilitatea C++, de exemplu. Cu ajutorul C#, Microsoft a reușit să atragă atentia până și comunității open source, deoarece a permis dezvoltarea pentru platforme Linux a programelor C#, așa cum am menționat, cu ajutorul Mono. Se poate spune chiar, la aceasta ora, ca Microsoft cu C# vrea sa fie Unix cu C-ul în anii 70.

Figura 1.1.Simbolul C#

C# folosește CLI (common Language Interface), este un limbaj strict, ce scapă programatorii de problema alocării manuale a pointerilor, cum e cazul în C și de verificarea alocării memoriei, așa cum se întâmplă in Java. C# este un limbaj orientat obiect, și majoritatea limbajelor moderne sunt așa, din rațiuni ce țin de ușurința codării în cazul unor proiecte de mare anvergură.

Platforma .Net

.Net, de care am menționat, ocupă un loc special, aparte, în arhitectura limbajelor de programare Microsoft. Înainte de apariția sa, programatorii erau nevoiți să folosească modelul COM (Component Objet Model) și creau ei înșiși librării pe care să le folosească interdependent. De exemplu, un programator în C++ crea librării ce puteau fi folosite de către un developer în Visual Basic. Modelul COM era complicat și greu de folosit, dar în ciuda acestor inconveniente, s-au creat mii de aplicații cu ajutorul său. În schimb, modul de programare s-a modificat după apariția .Net, având în vedere avantajele :

Interoperabilitatea cu codul existent

Suportul pentru diverse limbaje de programare, cum ar fi Visual Basic, C#, F#

Motorul runtime folosit de către toate limbajele ce folosesc .Net

Integrarea limbajelor: .Net permite crearea unei clase de bază în C# și extinderea sa în Visual Basic

Bază de librării cu mii de instrumente predefinite, pentru a putea coda mai simplu și eficient aplicații în linie de comandă sau grafice, sau chiar și aplicații web pentru companii

Model de programare simplificat

Visual C#

Plaforma IDE Visual Studio pentru codarea proiectului in C# se poate instala facil cu ajutorul site-ului Microsoft, și este necesară crearea unui cont Hotmail sau Live.com pentru a putea avea acces la tool-urile Microsoft. Editiile de Visual Studio disponibile pentru studenti/elevi/entuziaști sunt fie mai vechile Visual Studio Express Edition, fie nou Visul Studio Community Edition, acesta din urmă se poate descărca de pe VisualStudio.com

Figura 1.2. Descărcarea Visual Studio Community

Instalarea este foarte facilă, dupa descărcarea executabilului și rularea programului, apare o interfață grafică intuitivă.

Figura 1.2. Interfața Visual Studio

Diferitele tipuri de proiecte pe care le putem crea apar la lansarea New Project pentru C#, și anume proiecte Windows Forms, WPF sau aplicații consolă, din linia de comandă.

În cazul proiectului de față, vom alege o aplicație Windows Forms.

Figura 1.3. Crearea unei aplicații în Visual C#

Capitolul II. Procesare imagini

Ce sunt imaginile? Tipuri de imagini

Ce sunt imaginile digitale? Imaginile digitale sunt o reprezentare numerică a unei imagini bi-dimensionale. Imaginea poate fi clasificată în bitmap sau vectorială.

Pixelii reprezintă cele mai mici elemente într-o imagine, fiecare din el conține valori ce reprezintă intensitatea unor culori. Fiecare imagine conține un număr de rânduri și coloane. Imaginile tip bitmap sunt create de o varietate de dispositive de intrare, cum ar fi scanere, camera digitale, instrumente de mpsurare a coordonatelor, profile seismografe, radar etc. De asemenea, sunt generate uneori cu ajtorul funcțiilor matematice sau modele tridimensionale. Domeniul procesării digitale a imaginilor reprezintă studiul algoritmilor și a transformărilor pe care acești algoritmi le efectuează asupra imaginilor.

Imaginile vectoriale sunt imagini ce rezultă din matematica vectorială. Un vector, mathematic vorbind, reprezintă un punct ce conține direcție și lungime. De multe ori, un afiș poate conține atât elemente text cât și vector.

Perceptia vizuala umana se datoreste unor receptori discreti situati pe suprafata retinei. Exista doua categorii de receptori: conuri si bastonase.

Conurile sunt in numar de 67 milioane in fiecare ochi, fiind situate in partea centrala a retinei, ele fiind sensibile la culori. Oamenii pot sesiza detalii fine cu ajutorul conurilor deoarece fiecare este conectat la propriul sau nerv.

Numarul de bastonase este mult mai mare, intre 75 si 150 de milioane si sunt distribuite pe intreaga suprafata a retinei. Faptul ca mai multe bastonase sunt conectate la un singur nerv reduce numarul detaliilor ce pot fi detectate cu ajutorul acestor receptori. Bastonasele servesc generarii unei imagini de ansamblu a campului vizual. Ele nu sunt implicate in perceptia culorilor si sunt sensibile la nivele joase de iluminare. De exemplu obiecte pe care la lumina Soarelui le percepem ca fiind puternic colorate, la lumina Lunii par fara culoare, deoarece numai bastonasele sunt stimulate.

Densitatea conurilor in aria centrala a retinei este de aproximativ 150.000 de elemente/mm2. In acea zona, pe o arie de 1,5 x 1,5 mm2 exista in jur de 337.000 de conuri. Pentru a face o comparatie se mentioneaza faptul ca un circuit integrat CCD, de rezolutie medie, are acest numar de elemente receptoare pe o suprafata de 7 x 7 mm2.

Deoarece imaginile numerice sunt afisate sub forma unui set de puncte avand diferite nivele de gri (sau de stralucire), abilitatatea ochiului de a discerne intre aceste nivele de gri (de stralucire) este de o considerabila importanta in prezentarea rezultatelor prelucrarii unei imagini. Experimental s-a determinat ca, sistemul vizual uman percepe nivele de gri (stralucire) ca o functie logaritmica a intensitatii luminii incidente pe ochi.

Mai trebuie mentionat ca, sistemul vizual uman percepe imagini de la cele mai intunecate pana la limita de stralucire pe care o poate suporta dar, nu poate opera simultan pe un domeniu atat de larg (Adica numarul de nivele de stralucire pe care le poate percepe la un moment dat este limitat fie de dimensiunea domeniului fie de diferenta intre doua nivele).

Aplicatii ale prelucrarilor imaginilor

Interesul acordat metodelor de prelucrare a imaginilor se datoreaza existentei a doua mari categorii de aplicatii:

– prima se refera la imbunatatirea calitatii informatiei existente in imagini pentru a facilita interpretarea umana;

– a doua se refera la prelucrarea datelor existente in imagini ( scene ) pentru a realiza perceptia autonoma ( automata ) a masinilor.

Una dintre primele aplicatii ale tehnicilor de prelucrare a imaginilor, facand parte din prima categorie, a fost imbunatatirea imaginilor digitizate necesare ziarelor, trimise prin cablu submarin intre Londra si New York. Introducerea sistemului de transmisie a imaginilor prin cablu submarin la inceputul anilor 1920 a redus timpul necesar transmiterii unei imagini peste oceanul Atlantic de la mai mult de o saptamana la mai putin de trei ore.

In anii care au urmat au fost aduse numeroase imbunatatiri metodelor de prelucrare ale imaginilor digitizate transmise. Un alt an important este 1964 cand, la Jet Propulsion Laboratory ( Pasadena, California ), a fost lansat un program de utilizare a calculatoarelor pentru imbunatatirea unor imagini ale lunii transmise de Ranger 7.

Din 1964 pana in prezent, domeniul prelucrarii imaginilor s-a dezvoltat vertiginos. In prezent tehnicile de prelucrare a imaginilor sunt utilizate sa rezolve o mare varietate de probleme:

– in medicina: se urmareste imbunatatirea contrastului sau codificarea nivelelor de gri in culori pentru o mai usoara interpretare a imaginilor obtinute cu ajutorul radiatiei X sau ale altor imagini biomedicale.

– in geografie: sunt utilizate tehnici similare pentru a studia nivelul poluarii cu ajutorul imaginilor aeriene sau ale celor obtinute cu ajutorul satelitilor.

– proceduri de restaurare si de imbunatatire a calitatii imaginilor sunt utilizate pentru prelucrarea imaginilor degradate ale unor obiecte ce nu mai pot fi recuperate sau rezultate experimentale prea scumpe pentru a fi repetate.

– in arheologie: au fost restaurate imagini zgomotoase care erau singurele inregistrari ale unor obiecte pierdute sau distruse dupa fotografiere.

– in fizica: au fost utilizate tehnici de imbunatatire ale imaginilor unor rezultate experimentale din domeniul plasmelor si a microscopiei electronice.

– rezultate foarte bune au fost obtinute si in astronomie, biologie, medicina nucleara, si nu in ultimul rand aplicatii militare si industriale.

A doua mare categorie de aplicatii ale tehnicilor de prelucrare a imaginilor se constituie din rezolvarea problemelor ce apar in perceptia artificiala. In acest caz interesul este focalizat asupra procedurilor de extragere din datele continute de imagini ale unor informatii intr-o forma ce poate fi usor prelucrata de calculator. De cele mai multe ori aceste informatii se aseamana foarte putin cu parametrii folositi de om pentru a interpreta continutul unei imagini. Exemple de astfel de tipuri de informatii utilizate in perceptia artificiala sunt: date statistice, coeficienti ai transformatei Fourier, masuratori ale distantelor etc.

Probleme tipice existente in perceptia artificiala ce utilizeaza tehnici de prelucrare a imaginilor sunt: recunoasterea automata a caracterelor, vederea artificiala cu aplicatii in asamblarea si inspectia produselor in industrie, operatii de recunoastere a imaginilor in domeniul militar, prelucrarea automata a amprentelor, prelucrarea automata a imaginilor aeriene si ale celor obtinute cu ajutorul satelitilor pentru estimarea recoltelor si realizarea unor previziuni asupra evolutiei vremii.

Perceptia imaginilor

In ceea ce priveste imaginile color, putem spune că există un spectru de bază, ROGVAIV

Figura 1.5 ROGVAIV

Culorile pe care le percepem în fiecare zi sunt de fapt radiații electromanetice dintr-un spectru foarte îngust, cel al luminii vizibile. Culorile sunt de fapt natura lumii reflectată de acel obiect. Evident, un corp ce reflectă egal lungimile de undă ale domeniului vizibil este perceput ca fiind alb. Un corp ce nu reflectă deloc culorile este negru. Un corp ce reflectă doar o parte din lumina vizibilă este colorat. Lumina poate fi acromatică, așa cum o emite un TV alb-negru, și e caracterizată doar prin intensitate. La acst tip de lumină se poate modifica nuanța de gri. O lumină cromatica, adică color, prezintă radianță, luminantă si strălucire. Radianța se măsoară in Watt, reprezintă cantitatea de energie ce izvoraste dintr-o sursă de lumină. Luminanta, ce e masurata in lumeni, arata cat din cantitaeta de energie este perceputa de un observatory de la o sursă de lumină. Stalucirea este practice imposibil de masurat, dar este un alt factor ce reda intensitatea in zona cromata.

Din cercetarile pe care le avem, se pare ca cele 6-7 milioane de conuri prezente ca si senzori in ochi sunt divizate in trei categorii principale de senzitivitate, corespunzator culorilor rosu, verde si albastru. 65% din conuri sunt sensibile la lumina roșie, 33% la verde si doar 2% sensibile la lumina albastră

Culorile sunt percepute ca diverse combinatii ale culorilor de baza, rosu, verde si albastru. Pentru standardizare s-a convenit in 1931 ca lungimile de unda ale celor trei culori primare sa fie acceptate ca fiind: albastru = 435,8 nm, verde = 546,1 nm iar rosu = 700 nm. Standardele acceptate corespund doar aproximativ datelor experimentale. De fapt nu exista o singura culoare care poate fi numita rosu, verde sau albastru. De asemenea este important sa mentionam faptul ca existenta a trei lungimi de unda pentru culorile primare de dragul standardizarii, nu inseamna ca aceste trei componente fixe RGB actionand singure, pot genera intregul spectru al culorilor. Utilizarea expresiei “culori primare” a dus la interpretarea gresita conform careia prin mixarea in diferite proportii ale celor trei culori primare se pot obtine toate culorile vizibile. Dupa cum se va vedea in continuare, aceasta interpretare este corecta doar in situatia in care lungimile de unda pot varia, situatie in care nu mai avem trei culori de baza primare fixe. Receptia televiziunii color este un exemplu al naturii aditive al luminii color. Interiorul unui tub catodic al unui televizor color este alcatuit dintr-un sir de puncte triunghiulare senzitive la electroni. Cand sunt bombardate cu electroni, fiecare punct din cele trei prezente intr-o grupare, produce lumina in una din cele trei culori primare. Intensitatea punctelor rosii este modulata de un tun de electroni din interiorul tubului catodic, care genereaza impulsuri corespunzator “energiei rosii” , vazute de camera TV. Punctele verzi si albastre sunt modulate in aceeasi maniera. Efectul consta in faptul ca, senzorii din ochi (conurile), insumeaza efectul celor trei puncte, iar omul percepe o imagine full-color. Iluzia unei imagini color continue este completat prin reinprospatarea imaginii de 30 de ori pe secunda.

Tuburile catodice sunt inlocuite de ecranele plate cu tehnologie digitala precum ecranele cu criatale lichide sau cu plasma. Cu toate ca tehnologiile de realizare sunt complet diferite de cele utilizate in cazul tuburilor catodice, principiile de obtinere ale imaginii color sunt aceleasi, in sensul ca pentru a obtine un pixel color sunt necesari trei pixeli rosu, verde si albastru.

Caracteristicile generale utilizate pentru a distinge culorile, sunt stralucire, nuanta de culoare si saturatie. Dupa cum a mai fost mentionat, starlucirea este echivalentul cromatic al notiunii acromatice al intensitatii. Nuanta de culoare este un atribut asociat lungimii de unda dominante intr-o mixtura de lungimi de unda. Nuanta de culoare reprezinta culoarea dominanta perceputa de un obsevator. Astfel, cand spunem ca un obiect este rosu, portocaliu sau galben, ne referim la nuanta de culoare. Saturatia se refera la puritatea relativa sau cantitatea de lumina alba mixata cu nuanta de culoare. Spectrul de culori pur, este complet saturat. Culori precum roz (rosu si alb) sau mov (violet si alb) sunt mai putin saturate, cu gradul de saturatie invers proportional cu cantitatea de lumina alba adaugata.

Nuanta de culoare si saturatia luate impreuna se numesc cromaticitate si astfel, o culoare poate fi definita prin stralucire si cromaticitate. Cantitatile de rosu, verde si albastru necesare pentru a forma o anumita culoare se numesc valorile tristimulus si se noteaza cu X,Y si respectiv Z. O culoare este apoi specificata prin coeficientii tricromatici definiti prin:

x=X/(X+Y+Z)

y=Y/(X+Y+Z)

z=Z/(X+Y+Z)

De mentionat ca x+y+z=1.

Pentru orice lungime de unda din spectrul vizibil, valorile tristimulus necesare pentru a produce culoarea corespunzatoare acelei lungimi de unda se obtin din tabele sau grafice obtinute experimental.

O alta abordare pentru specificarea culorilor consta in utilizarea diagramei de cromaticitate, care reda compozitia culorilor ca o functie de x (rosu) si y (verde). Pentru orice valoare a lui x si y, valoarea corespunzatoare a lui z (albastru) este obtinuta conform relatiei z = 1 – ( x + y). Un anume punct din zona verde poate avea aproximativ 62% verde si 25% rosu. Conform ecuatiei anterioare contributia de albastru este de 13%.

Pozitia a diferite culori din spectru – de la violet 380 nm la rosu 780 nm – este indicata de-a lungul conturului diagramei de cromaticitate. Acestea sunt culorile pure reprezentate in spectrul de culori. Punctul de energie egala, corespunde la fractii egale ale celor trei culori primare si reprezinta unul dintre standardele pentru lumina alba. Orice punct situat pe conturul diagramei de cromaticitate este complet saturat. Pe masura ce punctul se indeparteaza de contur si se apropie de punctul de energie egala, mai multa lumina alba este adunata culorii in acest fel devenind mai putin saturat. Saturatia la punctul de energie egala este zero.

Filtrele in domeniul frecvențelor sunt bazate pe Transformata Fourier . De obicei se ia o imagine și o funcție de filtrare în domeniul Fourier , imaginea fiind procesată cu respectivul filtru într-o manieră pixel cu pixel:

Filtre în domeniul frecvențelor – Filtrul Trece Bandă

Filtre în domeniul frecvențelor

Filtrele in domeniul frecvențelor sunt bazate pe Transformata Fourier . De obicei se ia o imagine și o funcție de filtrare în domeniul Fourier , imaginea fiind procesată cu respectivul filtru într-o manieră pixel cu pixel:

G(k,l) = F(k,l)H(k,l)

unde F(k,l)este imaginea introdusa in domeniul Fourier , H(k,l) funcția filtrului și G(k,l) este imaginea filtrate . Pentru a obține imaginea rezultată in domeniul spatial , G(k,l) trebuie sa fie retransformată folosind inversul Transformatei Fourier.

Filtre trece bandă în domeniul frecvențelor

Filtrul trece bandă atenuează frecvențele foarte joase si foarte mari , dar păstrează o gamă de mijloc a frecvențelor. Filtrarea trece bandă poate fi folosită pentru a accentua margini (suprimând frecvențe joase ) în timp ce reduce zgomotul (atenuând frecvențele înalte ). Obținem funcția de filtrare trece bandă prin înmulțirea funcției filtrului trece-jos și a funcției filtrului trece-sus în domeniul frecvențelor , unde frecvența de întrerupere a filtrului trece-jos este mai mare decât cea a filtrului trece-sus. Prin urmare, în teorie, se poate obține o funcție de filtru de bandă dacă funcția de filtru trece-jos este disponibilă.

Filtrul trece bandâ ideal

Filtrul trece bandă ideal trece doar frecvențele între limitele benzii și ofera un rezultat în domeniul spațial care este în cele mai multe cazuri neclară. Este cea mai ușoară metodă de a simula un filtru trece bandâ dar marginile verticale și colțurile ascuțite nu sunt realizabile în lumea reală .

Un filtru trece bandâ ideal cu un spectru al frecvențelor între [DL … DH] este definit :

Filtrul trece bandă Gaussian

Filtrul trece bandă Gaussian depașește în performanță filtrele enumerate anterior pentru că atunci când filtrul Gaussian este transformat între domeniul frecvențelor și domeniul spațial, rămâne Gaussian și, prin urmare, nu suportă efectul de ringing în domeniul spațial al imaginii filtrare. Din nou derivarea unui filtru de banda Gaussian începe de la filtrul trece-jos.

Unde DL și DH sunt frecvențele de întrerupere ale filtrelor trece-jos si trece-sus respective D(u,v) este distanța față de origine.

Din punct de vedere uman , filtrul Gaussian ar fi cel mai potrivit filtru pentru filtrarea trece bandă. Pentru a determina care filtru să îl folosim depinde de aplicație.

Capitolul III. Internetul si retelele de calculatoare

Ce este o retea de calculatoare

O rețea de calculatoare (engleză: computer network) leagă între ele o mulțime mai mică sau mai mare de calculatoare, astfel încât un calculator poate accesa datele, programele și facilitățile sau resursele unui alt calculator conectat la aceeași rețea. (Wikipedia)

O retea de calculatoare poate fi asimilata nervilor ce transmit informatia la si de la muschi sau oase catr eintreg organismal

Asa cum lumea moderna nu ar exista fara calculatoare, progresul stiintific este imposibil fara vitezele gigabit, cablurile transoceanice si tot ce inseamna Internet si retele de calculatoare azi.

In cadrul acestui proiect, vom folosi, evident, facilitatile pe care ni le ofera o conexiune la retea.

rețelele de calculatoare se pt imparti :

După tipul mediului de transmisie

1. Wired

2. wireless

După întindere geografică

LAN (local area network, adică rețele locale)

MAN (metropolitan area network)

WAN (wide area network)

După topologie fizică:

Ring

Star

Mesh

Bus

După topologie logică

Dupa metodele de acces la mediul de transmisie: TDM (time division multiplexing), FDM (frequency division multiplexing) si WDM (wavelength division multiplexing) – metode statice, si token passing, Ethernet (metode dinamice – deterministe)

Standard în ceea ce privește comunicarea în retea : TCP/IP. TCP/IP, IPX/SPX si Apple Talk, alaturi de OSI au fost folosite din anii 70. In cele din urma, din lupta dintre TCP/IP, dezvoltat de catre DARPA, si OSI, standard dezvoltat de catre o echipa in 1984 (International Standards Organization), folosim TCP/IP.

Modelul OSI, modelul TCP/IP

Are sapte layere, straturi

Se foloseste numai ca referinta teoretică

Are corespondente cu layerele folosite in TCP/IP:

TCP/IP e proiectul DARPA[1]. Initiat a fost gandit ca o posibilitate de a avea o retea rezilienta la eventuale atacuri nucleare, in 1983 a fost adoptat pe scara larga. Reteaua initial folosita de cateva universitati legate intre ele cu linii telefonice închiriate, sute de rețele universitare și guvernamentale. Cand s-au adaugat la retele guvernamentale si universitare si retelele prin satelit, radio si fibra optica, interconectarea a necesitat folosirea unui model de referinta. Evident, vorbim de TCP/IP.

Nivelele TCP/IP, detaliate, sunt:

Network Access – transmiterea efectivă a unui pachet IP pe o legătură fizică, medii de transmisie. Corespunde nivelelor 1 si 2 OSI

Internet – direcționarea pachetelor din orice rețea pe Internet sau într-o rețea locală. La acest nivel găsim: IP, ICMP, ARP, RARP. IP caută cea mai bună rută pt a trimite pachetele. ICMP oferă capabilități de control și de schimb mesaje. ARP determină adresa MAC pentru adresele IP RARP determină adresa IP pentru o adresă MAC cunoscută.

Transport – permite conversații între entități perche dintre gazde (hosts) și destinație. Cuprinde protocoalele TCP si UDP.

TCP (TRANSPORT CONTROL PROTOCOL) este connection-oriented, unde e nevoie de corecția erorilor. Dezabantajul e încărcarea lățimii de bandă existente. TCP: HTTP, HTTPS, SMTP, FTP.

UDP (USER DATAGRAM PROTOCOL ), este un protocol nesigur, fără conexiuni, destinat aplicațiilor care doresc să utilizeze propria lor secvențiere și control al fluxului, și nu pe cele asigurate de TCP. Protocolul UDP este de asemenea mult folosit pentru interogări rapide întrebare-răspuns, client-server și pentru aplicații în care comunicarea promptă este mai importantă decât comunicarea cu acuratețe, așa cum sunt aplicațiile de transmisie a vorbirii și a imaginilor video. Relația dintre IP, TCP și UDP este prezentată mai jos

IPv4/IPv6

Port. Socket. VPN. MPLS.

Capitolul IV. Limbajul C# si .NET

Hello world – prima aplicatie in C#

Programarea orientată pe obiect

Deși multă lume crede că limbajele orientate obiect (OOP) sunt produsul anilor 80 și ale creatorului limbajului C++, Bjarne Stroustrup, care a transformat limbajul C și l-a modernizat, de fapt SIMULA 1 (1962) and Simula 67 (1967) sunt cele mai vechi limbaje orientate obiect. Limbajele Simula au fost dezvoltate de Ole – John Dahl și Kristen Nygaard la Norwegian Computing Center din Oslo, Norvegia. Deși cele mai multe din avantajele OOP erau disponibile în variantele vechi ale limbajului Simula, până în anii 90 și dezvoltarea C++, limbajele C++ nu au început să înflorească. C, limbajul părinte al C++, era puternic, atât de puternic încât puteai sa ”te împuști în picior singur, de mai muilte ori”. C++, pe de altă parte, nu doar că-ți permite să te împuști în picior, ci să îl zbori cu totul. În ciuda puterii din spatele C++, proiectele mari au o complexitate imesă. Developerii aveau nevoie de ceva mai simplu și poate mai puțin complex pentru OOP.

În ianuarie 1991, James Gosling, Bill Joy, Patrick Naughton, Mike Sheradin, și alții s-au întâlnit în Aspen, Colorado, pentru a pune bazele Stealth Project. Grupul își dorea dezvoltarea dispozitivelor electronice inteligente, controlabile și programabile cu ajutorul unui dispozitiv ceputea fi ținut în mînă. Rezultatul poartă numele de Oak, ce avea să devina arhicunoscutul Java.

Cu ajutorul Java și îmbunătățirile pe care le-a adus funcționalității internetului, dezvoltarea era facilitată pentru viitorul Internetului. Însă, Microsoft a dorit competiție și C# este cel puțin la fel de ușor de învățat ca Java, așa că l-am ales pentru proiectul de față.

Inventatorul C#, Andrej Hejslberg, este omul din spatele Delphi sau Pascal, deci are o bogată experiență în spate, ce a creat un limbaj relativ ușor de învățat, ce folosește :

Encapsulation, adică încapsularea, fiecare obiect are partea privată sau publică separată

Polimorfirsm, adică aceeași funcție livrează diferite rezultate în funcție de argumentele cu care funcția este lansată

Inheritance, adică moștenirea tipurilor de obiecte

Caracteriticile limbajelor de programare sunt:

Instrucțiunile sunt stocate în memoria RAM, volatilă

Așa cum am arătat, programele se stocheaza pe memorie non-volatilă, flash, magnetic sau optică

Limbajele de programare traduc instrucțiunile dintr-un limbaj de nivel înalt, cum este C#, într-un limbaj cod mașină

Comenzile din limbajul de programare poartă denumirea de source code, cod sursă

Comenzile traduse în limbajul mașinii pe care se execută programul se numesc object code, sau cod obiect.

Fiecare limbaj de programare folosește un compilator sau interpretor, ce translatează codul sursă în limbaj mașină.

Pașii în programare cuprindeau, până la apariția mediilor de dezvoltare integrate (IDE – integrated development enviroment) câteva etape, după cum urmează : editarea pe codul sursă, rularea compilatorului, verificarea de erori. Se rula un program în limbaj de asamblare pentru a converti codul sursă în limbaj de asamblare. În cele din urmă, se rula un linking-program (linker) ce are rolul de a lega elementele programului și a le pune într-un executabil. Visual Studio ne permite combinarea acestor funcții într-un singur mediu, ceea ce are ca avantaj major atât productivitatea, cât și testarea și scrierea programului mult mai rapidă, având la dispoziție unealta de autocorrect Intellisense de la Microsoft.

C# si transferul de fisiere

Bibliotecile C#

Capitolul V. Aplicație practică

Aplicația dezvoltată în limbajul C# a fost creată cu ajutorul mediului de dezvoltare Visual Studio Community Edition, varianta 2015. S-a folosit varianta .Net Framework 4.5.

Prezentarea aplicatiei

+

Prezentarea aplicației, interfață grafică:

Figura 1.4. Interfața programului

Interfața grafică prezintă următoarele elemente:

Butoanele de Open, Save, Reset:

Open deschide fișierul asupra căruia se va aplica

Save salveaza fișierul

Reset resetează filtrele de imagine aplicate și readuce imaginea la forma inițială

Invert inversează culorile folosind RGB

Grayscale transformă imaginea într-una alb negru

Emboss face aspect de gravură imaginii

Filtrarea în domeniul secvențelor folosește o transformată Fourier pentru a aplica unul din cele două filtre: Ideal sau Gaussian.

Tipuri de fisiere. Formate grafice

Exemple practice de lucru cu aplicatia

CONCLUZII

Similar Posts

  • The Language Of Beer Comercials

    === 828a6e25e3b30e65eedcfaad39fcf0f984469d5a_546299_1 === CHAPTER I. FUNDAMENTAL ASPECTS REGARDING ADVERTISING AND ITS INFLUENCE ON CONSUMER DECISION 1.1 Consumers and consumption While production is dedicated to observe how goods and services are produced from raw materials and energy, consumption refers to how people use those goods and services in order to satisfy their subsistence needs and desires….

  • Creativitatea In Organizarea DE Evenimente

    UNIVERSITATEA "VASILE ALECSANDRI" DIN BACAU Facultatea de Litere, Departamentul de limba și literatura română și științe ale comunicării – Comunicare și relații publice. CREATIVITATEA IN ORGANIZAREA DE EVENIMENTE Coordinator stiintfic, Absolvent, Miha Bacau, 2016 INTRODUCERE Este cunoscut faptul ca relatiile publice, prin promovarea unor produse și servicii organizeaza evenimente , doemniu prolific, reprezinta un instrument…

  • Psihosociologia Delicventului Adult

    === c28c693393204996b9a774a6de29b47974e13011_634691_1 === СAРΙΤОLUL Ι СОМРОRΤAМЕΝΤUL DЕVΙAΝΤ – AССЕРȚΙUΝΙ ȘΙ РЕRЅРЕСΤΙVЕ ocοсοсοсDЕ AВОRDARЕ 1.1 Рartісularіtățі ocοсοсοсalе adорtărіі соmроrtamеntuluі dеvіant Соmроrtamеntul ocοсοсοсdеvіant роatе fі înțеlеѕ în dоuă mоdurі: ocοсοсοс ”1 –  fіе сa рrоduѕ ocοсοсal іnсaрaсіtățіі οсfunсțіоnalе a іndіvіduluі, datоrată unоr dеvіațіі ocοсοсfіzіоlоɡісе ѕau οсanоrmalіtățіі рѕіhісе; 2  ocοсοс- fіе οссa rеzultat al unuі соmроrtamеnt реrfесt ocοсnоrmalοс,…

  • Produsele Apicole Si Afectiunile Digestive

    === 7cf4fc0e7a50bc90002f59b66616905f61886995_366242_1 === CAPITOLUL 1 INTRODUCERE Dificultățile medicinei în delimitarea și definirea stării de sănătate apar și în negativul situației,și anume ,în analiza stării de boală în general și a diagnosticării bolii în cadrul fiecărui domeniu clinic. Această analiză se impune deoarece,deși sub unghiul observației curente și al aprecierii empirice boala este mai evidentă și…

  • Conditii Meteorologice Si Rolul Lor In Navigatia

    Introducere………………………………………………………………………………………………………………………… Capitolul 1. Clima pe glob. Caracterizarea climatelor……………………………………………………………… Capitolul 2. Climatul subtropical – umed……………………………………………………………………………….. 2.1.Caracterizare si răspândire……………………………………………………………………………………………. 2.2. Poziționare geografică………………………………………………………………………………………………… Capitolul 3. Condiții climatice specifice zonelor cu climat subtropical – umed…………………………. 3.1. America de Nord………………………………………………………………………………………………………… Cadrul natural general……………………………………………………………………………………………………. Statele Unite ale Americii………………………………………………………………………………………………. 3.2. America de Sud………………………………………………………………………………………………………….. Cadrul natural general…………………………………………………………………………………………………… Brazilia……………………………………………………………………………………………………………………….. Argentina…………………………………………………………………………………………………………………….. Paraguay……………………………………………………………………………………………………………………… Uruguay………………………………………………………………………………………………………………………. 3.3. Europa………………………………………………………………………………………………………………………….

  • Program de Marketing International (malta)

    === a08a6130ec95c7417db58a329c6912ec3405edd1_308236_1 === Descrierea companiei S.C. JIDVEI S.R.L, filiala Alba si a produsului ales Date privind situația internă a comapniei Anul înființării S.C. JIDVEI SRL, filiala Alba, înregistrată la Registrul Comerțului cu numărul J1/14/1999, având CUI 11380843, a fost înființată în anul 1999. Resursa umană Din punct de vedere al resursei umane, în perioada 2011-2014,…