curs de grafica pe calculator - a doua sarcină

Sarcina este împărțită în 2 părți. Primul este dedicat de procesare a imaginii, iar al doilea - sunet de prelucrare. Prima parte este obligatorie, a doua - mai mult. În a doua parte există subactivități, care nu au înțeles prelegeri. În decizia lor de a ajuta la manual „Introducere în procesare a semnalului digital (fundații matematice).“

Partea 1: dithering, de filtrare a imaginilor

Necesitatea de a scrie un program care realizează următoarele operații pe imagini:
  • Încărcarea și afișarea unui BMP-fișier. Este suficient pentru a face doar formate de imagine RGB de suport (nepalitrovyh). 1 punct
  • Conversia unei imagini (a se vedea. De mai jos), afișarea rezultatului pe ecran și să salvați BMP-fișier (suficient RGB format).
  • Amestecarea unei imagini color în tonuri de gri. 1 punct
  • Reducerea imaginii alb-negru (2 culori), prin utilizarea:

    b. dithering (zgomot adăugare), 1 punct

    în. difuzie de eroare (folosind Floyd-Steinberg), 2 puncte

  • Filtrarea imaginii cu o dimensiune filtru de 5x5. Trebuie să fie posibil să se stabilească coeficienți de filtrare arbitrare. Coeficienții de filtrare, de preferință, setați utilizând o casetă de dialog în cazul în care există 25 de ferestre pentru introducerea numerelor și 2 fereastra pentru introducerea numărătorul și numitorul - coeficientul de normalizare. Inițial, toate ferestrele trebuie să fie zero. 2 puncte
  • * Eliminarea efectelor de margine în timpul filtrării. 1 punct
  • Aleatoare raza Gaussian blur. Trebuie specificat Dimensiunea filtrului (nui adevărat). 1 punct
  • * Pus în aplicare ca o versiune bidimensională a Gaussian blur, și o versiune accelerată bazată pe separabilității a Gauss. 1 punct
  • * Asigurați-vă posibilitatea de a măsura numărul de ori pe secundă mai rapid decât prima versiune. 1 punct
  • * Calcularea și afișarea imaginii spectrului. Posibilitatea de a include greutatea ferestrei. Posibilitatea de a muta frecvența zero în centrul imaginii. Abilitatea de a elimina componenta de curent continuu. Abilitatea de a specifica scara logaritmică a amplitudinii și / sau Variind amplitudini afișate. Până la 3 puncte

Este de dorit ca programul sub Windows. Pentru interfata user-friendly poate fi creditat 1 punct.

Calcularea imaginii spectrului

Spectrum este calculat din imaginile în tonuri de gri dimensiuni 512x512 (sau altă putere de doi). Pentru a calcula spectrul bidimensional trebuie să calculeze transformarea unidimensional complex Fourier a fiecărei linii de imagine, și apoi - din fiecare coloană a complexului intermediar „imaginii“ obținut. După aceea, o matrice bidimensională a coeficienților Fourier complexe se transferă în formă de „amplitudine-fază“ și amplitudine sunt afișate ca imagini (de preferință - pe o scară logaritmică). În acest caz, frecvențele joase sunt în colțuri, și de înaltă - în centru. Pentru o imagine convențională a spectrului este dorit imagini ciclice ale spectrului de schimbare schimbare în punctul central al oricăruia dintre colțuri.

Este de dorit să se aleagă un ampditud de afișare pe culorile spectrului că detaliile au fost vizibile. Puteți petrece normalizarea amplitudini.

Pentru a îmbunătăți proprietățile spectrului pot fi eliminate din imaginea anterioară componenta continuă a calculului spectrului (adică scade o constantă la valoarea medie a semnalului a devenit egal cu zero) și înmulțit cu semnalul de greutate pe fereastră. descompunere marginile (de exemplu - „ridicat cosinus“ (Hanning) sau Gaussian).

Verificarea calculului spectrului: spectrul să fie simetric în raport cu zero frecvență (punctul central după „excentrică“ frecvența zero în centru).

Pentru a calcula o transformare unidimensional Fourier complexe, puteți utiliza funcția de-a gata pe C: FFT.C

Spectru de imagine EXEMPLU

curs de grafica pe calculator - a doua sarcină

curs de grafica pe calculator - a doua sarcină

Spectrul său (amplitudine logaritmică la scară)

Partea 2: Lucrul cu sunet

Necesitatea de a scrie un program care poate:
  • Descarcă fișier WAV (suficient de orice format o, să zicem - 44 kHz, 16 biți, mono). 1 punct
  • Mute vocea solistului (efectul Karaoke). Aceasta se realizează prin scăderea unei probe stereo din probele de un alt stereo. Rezultatul este un sunet mono pentru a fi stocate în fișier WAV. 1 punct
  • Construiți semnal sonogram. Sonogram - prezinta diagrama spectrului de semnal și modificările acestuia în timp. Capacitatea de a personaliza scara logaritmică a amplitudinii. Alegerea dimensiunea FFT. Posibilitatea de a include greutatea ferestrei (Hanning). Pentru 4 puncte

Programul poate fi combinat cu un program de procesare a imaginii, și poate fi o aplicație separată. Undă de afișare fișier WAV nu este necesară.

Construcția de sonograms

Pentru a construi sonograms nevoie pentru a calcula FFT pe consecutive (în timp) a unităților de semnal și să afișeze amplitudinea în funcție de frecvența și numărul blocului (timp). amplitudine de afișare pe o scară de dorit să fie logaritmică. Este de dorit să se multiplice blocurile de calcul a spectrului pe semnalul de fereastra de greutate.

Exemple sonograms

curs de grafica pe calculator - a doua sarcină

Nota cu privire la chitară
Se poate observa că armonici de înaltă frecvență sunt atenuate mai repede decât de joasă frecvență

curs de grafica pe calculator - a doua sarcină

Nota la pian
Este evident că pianul este mai mică decât armonici de înaltă frecvență

curs de grafica pe calculator - a doua sarcină

Nota, cantaretul efectuat
La sfârșitul sunetului poate fi văzut ce a primit „vibrato“: modulare de smoală

curs de grafica pe calculator - a doua sarcină

curs de grafica pe calculator - a doua sarcină

Apropierea părții de frecvență joasă a aceleiași rostirii

înregistrare

Înregistrarea nu este diferită de cea obișnuită.

ZIP-fișier cu codul sursă și fișierele executabile, numit conform schemei GZV_nnnnnnnn.zip (unde G - ultima cifră a numerelor de grup, Z - numărul de locuri de muncă, V - stabilirea numărului versiunii, nnnnnnnn - student la numărul de identificare) pentru a trimite [email protected]. msu.su

De exemplu, un student de 206 grupe cu număr de student ID-ul 06529042, care oferă versiune actualizată (a doua), a doua sarcină a programului ar trebui să trimită un fișier cu numele 622_06529042.zip.

Nu uita pentru a pune în dosarul fișierul readme.txt. Fișierul descrie interfața programului (algoritmul programului, elementele de meniu, tastele de control)

rezultatele

Rezultatele se referă la Internet și / sau pe un suport în apropierea camerei 703.

notițe

  1. Sarcina rulează pe un strict individual. Pentru piese de colaborare sau schimb de cod plasat un scor de zero tuturor participanților, dacă faptul de lucru în echipă nu a fost specificată în locurile de muncă readme.txt.
  2. Se recomandă să se programeze scrierea unei familii de Windows. Scrierea sub alt sistem de operare este de nedorit și poate provoca întârzieri în verificarea acestor operațiuni.

Întrebări frecvente pentru instrucțiuni