Come configurare smartphone e PC. Portale informativo
  • casa
  • Sicurezza
  • Elaborazione di Fourier delle immagini digitali. Cos'è un'immagine discreta? e cos'è la risoluzione hardware

Elaborazione di Fourier delle immagini digitali. Cos'è un'immagine discreta? e cos'è la risoluzione hardware

Fornitura analogica e discreta di informazioni grafiche Una persona è in grado di percepire e immagazzinare informazioni sotto forma di immagini (visive, sonore, tattili, gustative e olfattive). Le immagini visive possono essere salvate sotto forma di immagini (disegni, fotografie, ecc.) e le immagini sonore possono essere registrate su dischi, nastri magnetici, dischi laser e così via.

Le informazioni, inclusi grafica e audio, possono essere presentate in forma analogica o discreta. Con la rappresentazione analogica, una grandezza fisica assume un numero infinito di valori, ed i suoi valori cambiano continuamente. Con una rappresentazione discreta, una grandezza fisica assume un insieme finito di valori e il suo valore cambia bruscamente.

Facciamo un esempio di rappresentazione analogica e discreta dell'informazione. La posizione di un corpo su un piano inclinato e su una scala è specificata dai valori delle coordinate X e Y. Quando un corpo si muove lungo un piano inclinato, le sue coordinate possono assumere un numero infinito di valori che cambiano continuamente da una certa distanza e quando ci si sposta lungo le scale, solo un certo insieme di valori, che cambiano bruscamente


Un esempio di rappresentazione analogica delle informazioni grafiche è, ad esempio, un dipinto, il cui colore cambia continuamente, e una rappresentazione discreta è un'immagine stampata utilizzando stampante a getto d'inchiostro e composto da singoli punti Colore diverso. Un esempio di memorizzazione analogica delle informazioni audio è disco in vinile (colonna sonora cambia forma continuamente) e discreto: un compact disc audio (la cui traccia audio contiene aree con diversa riflettività).

Conversione di informazioni grafiche e audio da forma analogica nel discreto viene effettuato mediante campionamento, ovvero mediante la suddivisione di un'immagine grafica continua e di un'immagine continua (analogica) segnale sonoro SU singoli elementi. Il processo di campionamento prevede la codifica, ovvero l'assegnazione a ciascun elemento di un valore specifico sotto forma di codice.

La discretizzazione è una trasformazione immagini continue e suonare in un insieme di valori discreti sotto forma di codici.

Suono nella memoria del computer

Concetti basilari: adattatore audio, frequenza di campionamento, profondità di bit di registro, file audio.

La natura fisica del suono è costituita dalle vibrazioni in una determinata gamma di frequenze trasmesse da un'onda sonora attraverso l'aria (o altro mezzo elastico). Il processo di conversione delle onde sonore in codice binario nella memoria del computer: onda sonora -> microfono -> corrente elettrica alternata -> adattatore audio -> codice binario -> memoria del computer .

Il processo di riproduzione delle informazioni audio archiviate nella memoria del computer:
memoria del computer -> codice binario -> adattatore audio -> corrente elettrica alternata -> altoparlante -> onda sonora.

Adattatore audio(scheda audio) - un dispositivo speciale collegato a un computer, progettato per convertire le vibrazioni elettriche frequenza audio in codice binario numerico quando si inserisce il suono e per conversione inversa(da un codice numerico a vibrazioni elettriche) durante la riproduzione del suono.

Durante la registrazione dell'audio adattatore audio con certo periodo misura l'ampiezza della corrente elettrica e la inserisce nei registri codice binario della pagina del valore risultante. Quindi il codice risultante dal registro viene riscritto nella RAM del computer. La qualità del suono del computer è determinata dalle caratteristiche dell'adattatore audio: frequenza di campionamento e profondità di bit.

Frequenza di campionamento– è il numero di misurazioni del segnale di ingresso in 1 secondo. La frequenza è misurata in Hertz (Hz). Una misurazione al secondo corrisponde ad una frequenza di 1 Hz. 1000 misurazioni in un secondo -1 kilohertz (kHz). Frequenze di campionamento tipiche degli adattatori audio: 11 kHz, 22 kHz, 44,1 kHz, ecc.

Larghezza del registro– numero di bit nel registro dell'adattatore audio. La profondità di bit determina la precisione della misurazione del segnale di ingresso. Maggiore è la profondità di bit, minore è l'errore di ogni singola conversione del valore del segnale elettrico in un numero e viceversa. Se la profondità di bit è 8(16), quando si misura il segnale di ingresso si possono ottenere valori diversi 2 8 =256 (2 16 =65536). Ovviamente a 16 bit L'adattatore audio codifica e riproduce il suono in modo più accurato rispetto a 8 bit.

File audio- un file che memorizza informazioni sull'audio in forma numerica binaria. In genere, le informazioni in file audio subisce una compressione.

Esempi di problemi risolti.

Esempio n. 1.
Determina la dimensione (in byte) di un file audio digitale il cui tempo di riproduzione è di 10 secondi con una frequenza di campionamento di 22,05 kHz e una risoluzione di 8 bit. Il file non è compresso.

Soluzione.
La formula per calcolare la dimensione (in byte) di un file audio digitale (audio monofonico): (frequenza di campionamento in Hz)*(tempo di registrazione in secondi)*(risoluzione in bit)/8.

Pertanto, il file viene calcolato come segue: 22050*10*8/8 = 220500 byte.

Compiti per lavoro indipendente

N. 1. Determinare la quantità di memoria per archiviare un file audio digitale il cui tempo di riproduzione è di due minuti ad una frequenza di campionamento di 44,1 kHz e una risoluzione di 16 bit.

N. 2. L'utente ha una capacità di memoria di 2,6 MB. È necessario registrare un file audio digitale con una durata del suono di 1 minuto. Quali dovrebbero essere la frequenza di campionamento e la profondità di bit?

Numero 3. Volume memoria libera sul disco - 5,25 MB, profondità di bit del suono della scheda - 16. Qual è la durata del suono di un file audio digitale registrato con una frequenza di campionamento di 22,05 kHz?

N. 4. Un minuto di file audio digitale occupa 1,3 MB su disco, con profondità di bit scheda audio– 8. Con quale frequenza di campionamento viene registrato il suono?

N. 5. Due minuti di registrazione di un file audio digitale occupano 5,1 MB di spazio su disco. Frequenza di campionamento – 22050 Hz. Qual è la profondità di bit dell'adattatore audio? N. 6. La quantità di memoria libera sul disco è 0,01 GB, la profondità in bit della scheda audio è 16. Qual è la durata del suono di un file audio digitale registrato con una frequenza di campionamento di 44100 Hz?

Presentazione delle informazioni grafiche.

Rappresentazione raster.

Concetti di base: grafica computerizzata, pixel, raster, risoluzione dello schermo, informazione video, memoria video, file grafico, profondità di bit, pagina della memoria video, codice colore dei pixel, primitiva grafica, sistema di coordinate grafiche.

Grafica computerizzata– una branca dell'informatica, la cui materia è lavorare su un computer con immagini grafiche (disegni, disegni, fotografie, fotogrammi video, ecc.).

Pixel– l'elemento più piccolo dell'immagine sullo schermo (punto sullo schermo).

Raster– una griglia rettangolare di pixel sullo schermo.

Risoluzione dello schermo– la dimensione della griglia raster, specificata come prodotto M*N, dove M è il numero di punti orizzontali, N è il numero di punti verticali (numero di linee).

Informazioni video– informazioni sull'immagine visualizzata sullo schermo del computer, memorizzate in memoria del computer.

Memoria video– memoria ad accesso casuale che memorizza le informazioni video durante la riproduzione in un'immagine sullo schermo.

File grafico – un file che memorizza informazioni su rappresentazione grafica.

Il numero di colori riprodotti sullo schermo (K) e il numero di bit allocati nella memoria video per ciascun pixel (N) sono legati dalla formula: K=2 N

La quantità N si chiama profondità di bit.

Pagina– una sezione di memoria video che contiene informazioni su un'immagine sullo schermo (una “immagine” sullo schermo). La memoria video può ospitare più pagine contemporaneamente.

Tutta la varietà di colori sullo schermo è ottenuta mescolando tre colori base: rosso, blu e verde. Ogni pixel sullo schermo è costituito da tre elementi ravvicinati che brillano di questi colori. I display a colori che utilizzano questo principio sono chiamati monitor RGB (Rosso-Verde-Blu).

Codice colori dei pixel contiene informazioni sulla proporzione di ciascun colore di base.
Se tutti e tre i componenti hanno la stessa intensità (luminosità), dalle loro combinazioni puoi ottenere 8 vari colori(2 3). La tabella seguente mostra la codifica di una tavolozza a 8 colori utilizzando tre cifre codice binario. In esso, la presenza del colore di base è indicata da uno e l'assenza da zero.

Codice binario


A Z CON Colore
0 0
0
Nero
0 0
1
Blu
0 1 0 Verde
0 1 1 Blu
1 0
0
Rosso
1 0
1
Rosa
1 1
0
Marrone
1 1
1
Bianco

Una tavolozza di sedici colori è ottenuta utilizzando una codifica dei pixel a 4 bit: ai tre bit dei colori di base viene aggiunto un bit di intensità. Questo bit controlla simultaneamente la luminosità di tutti e tre i colori. Ad esempio, se in una tavolozza a 8 colori il codice 100 significa rosso, in una tavolozza a 16 colori: 0100 – rosso, 1100 – rosso brillante; 0110 – marrone, 1110 – marrone brillante (giallo).

Un gran numero di colori si ottengono controllando separatamente l'intensità dei colori base. Inoltre, l'intensità può avere più di due livelli se viene assegnato più di un bit per codificare ciascuno dei colori di base.

Quando si utilizza una profondità di bit di 8 bit/pixel, il numero di colori è: 2 8 =256. I bit di tale codice sono distribuiti come segue: KKKZZSS.

Ciò significa che per le componenti rossa e verde vengono assegnati 3 bit e per le componenti blu 2 bit. Di conseguenza, le componenti rossa e verde hanno ciascuna 2 3 = 8 livelli di luminosità, e la componente blu ha 4 livelli.

Rappresentazione vettoriale.

Con l'approccio vettoriale l'immagine viene considerata come un insieme di elementi semplici: linee rette, archi, cerchi, ellissi, rettangoli, ombre, ecc., che vengono chiamati primitive grafiche. Le informazioni grafiche sono dati che identificano in modo univoco tutte le primitive grafiche che compongono il disegno.

La posizione e la forma delle primitive grafiche sono specificate in sistema di coordinate grafiche relativi allo schermo. In genere l'origine si trova nell'angolo in alto a sinistra dello schermo. La griglia dei pixel coincide con la griglia delle coordinate. L'asse X orizzontale è diretto da sinistra a destra; l'asse Y verticale va dall'alto verso il basso.

Un segmento di retta si determina univocamente indicando le coordinate dei suoi estremi; cerchio – coordinate del centro e del raggio; poliedro - dalle coordinate dei suoi angoli, dall'area ombreggiata - dalla linea di confine e dal colore dell'ombreggiatura, ecc.

Squadra

Azione

Linea su X1,Y1

Traccia una linea dalla posizione corrente alla posizione (X1, Y1).

Linea X1, Y1, X2, Y2

Disegna una linea con le coordinate iniziali X1, Y1 e le coordinate finali X2, Y2. La posizione attuale non è impostata.

Cerchia X, Y, R

Disegna un cerchio: X, Y – coordinate del centro, R – lunghezza del raggio in passi della griglia raster.

Ellisse X1, Y1, X2, Y2

Disegna un'ellisse delimitata da un rettangolo; (X1, Y1) sono le coordinate dell'angolo in alto a sinistra e (X2, Y2) sono le coordinate dell'angolo in basso a destra di questo rettangolo.

Rettangolo X1, Y1, X2, Y2

Disegna un rettangolo; (X1, Y1) sono le coordinate dell'angolo in alto a sinistra e (X2, Y2) sono le coordinate dell'angolo in basso a destra di questo rettangolo.

Colore del disegno COLORE

Imposta il colore del disegno corrente.

Colore di riempimento COLORE

Imposta il colore di riempimento corrente.

Riempi X, Y, COLORE BORDO

Dipingi una figura chiusa arbitraria; X, Y – coordinate di qualsiasi punto all'interno di una figura chiusa, BORDER COLOR – colore della linea di confine.

Esempi di problemi risolti.

Esempio n. 1.
Per formare il colore vengono utilizzate 256 sfumature di rosso, 256 sfumature di verde e 256 sfumature di blu. Quanti colori possono essere visualizzati sullo schermo in questo caso?

Soluzione:
256*256*256=16777216.

Esempio n.2.
Su uno schermo con una risoluzione di 640*200 vengono visualizzate solo immagini a due colori. Qual è la quantità minima di memoria video richiesta per archiviare un'immagine?

Soluzione.
Poiché la profondità di bit di un'immagine a due colori è 1 e la memoria video deve contenere almeno una pagina dell'immagine, la quantità di memoria video è: 640*200*1=128000 bit =16000 byte.

Esempio n.3.
Quanta memoria video è necessaria per memorizzare quattro pagine di immagini se la profondità di bit è 24 e la risoluzione dello schermo è 800*600 pixel?

Soluzione.
Per memorizzare una pagina è necessario

800*600*24 = 11.520.000 bit = 1.440.000 byte. Per 4, rispettivamente, 1.440.000 * 4 = 5.760.000 byte.

Esempio n.4.
La profondità di bit è 24. Quante sfumature diverse grigio possono essere visualizzati sullo schermo?
Nota: una sfumatura di grigio si ottiene quando i livelli di luminosità di tutti e tre i componenti sono uguali. Se tutti e tre i componenti hanno livello massimo luminosità, poi si scopre Colore bianco; l'assenza di tutti e tre i componenti rappresenta il colore nero.

Soluzione.
Dal momento che ricevere sfumature grigie le componenti RGB sono le stesse, quindi la profondità è 24/3=8. Otteniamo il numero di colori 2 8 =256.

Esempio n.5.
Viene fornita una griglia raster 10*10. Descrivi la lettera “K” con una sequenza di comandi vettoriali.

Soluzione:
Nella rappresentazione vettoriale, la lettera "K" è composta da tre linee. Ogni linea viene descritta indicando le coordinate delle sue estremità nella forma: LINEA (X1,Y1,X2,Y2). L'immagine della lettera "K" sarà descritta come segue:

LINEA (4,2,4,8)
LINEA (5,5,8,2)
LINEA (5,5,8,8)

Compiti per lavoro indipendente.

N. 1. Quanta memoria video è necessaria per memorizzare due pagine di immagini, a condizione che la risoluzione dello schermo sia 640*350 pixel e il numero di colori utilizzati sia 16?

N. 2. La quantità di memoria video è 1 MB. Risoluzione dello schermo – 800*600. Quale importo massimo si possono usare i colori a patto che la memoria video sia divisa in due pagine?

Numero 3. La profondità in bit è 24. Descrivi diverse opzioni rappresentazione binaria tonalità grigio chiaro e grigio scuro.

N. 4. Sullo schermo di un computer devi ottenere 1024 sfumature di grigio. Quale dovrebbe essere la profondità in bit?

N. 5. Per visualizzare le cifre decimali nello standard Codice Postale(come scrivono sulle buste) ottengono rappresentazioni vettoriali e raster. Scegli tu stesso la dimensione della griglia raster.

N. 6. Riproduci disegni su carta utilizzando comandi vettoriali. Risoluzione 64*48.

UN)
Colore del disegno Rosso
Colore di riempimento Giallo
Cerchio 16, 10, 2
Tonalità 16, 10, Rosso
Serie 16, 12
Linea alle 16, 23
Linea alle 19, 29
Linea alle 21, 29
Linea 16, 23, 13, 29
Linea 13, 29, 11, 29
Linea 16, 16, 11, 12
Linea 16, 16, 21, 12

B)
Colore del disegno Rosso
Colore di riempimento Rosso
Cerchio 20, 10, 5
Cerchio 20, 10, 10
Tonalità 25, 15, Rosso
Cerchio 20, 30, 5
Cerchio 20, 30, 10
Tonalità 28, 32, Rosso

Fotografia digitale o altro immagine rasterè una serie di numeri registrati dai sensori del livello di luminosità su un piano bidimensionale. Sapendo che, da un punto di vista matematico, una lente sottile esegue una trasformata di Fourier di immagini poste su piani focali, è possibile creare algoritmi di elaborazione delle immagini analoghi all'elaborazione delle immagini da parte di un sistema ottico classico.

La formula per tali algoritmi sarà simile alla seguente:

  1. Z=FFT(X) – trasformata di Fourier bidimensionale diretta
  2. Z′=T(Z) – applicazione di una funzione o trasparenza alla trasformata di Fourier di un'immagine
  3. Y=BFT(Z′) – trasformata di Fourier bidimensionale inversa
Per calcolare le trasformate di Fourier vengono utilizzati algoritmi di trasformata di Fourier discreti veloci. Sebbene il sistema di lenti ottiche esegua la trasformata di Fourier su una gamma continua di argomenti e per spettro continuo, ma quando si passa all'elaborazione digitale dei dati, le formule della trasformata di Fourier possono essere sostituite con formule della trasformata di Fourier discreta.

Esempi di implementazione

  • Algoritmo di sfocatura dell'immagine
Gli algoritmi implementati fanno parte di una libreria open source codice sorgente Strumenti FFT. Indirizzo Internet: github.com/dprotopopov/FFTTools

Algoritmo di sfocatura dell'immagine

IN sistemi ottici Il diaframma, situato nel piano focale, è un semplice foro nello schermo. Come risultato del passaggio flusso luminoso attraverso il diaframma, le onde ad alta frequenza (lunghezze d'onda più corte) passano attraverso l'ostacolo e le onde basse frequenze(con lunghezze d'onda maggiori) vengono tagliati dallo schermo. Ciò aumenta la nitidezza dell'immagine risultante. Se sostituisci un buco nello schermo con un ostacolo, il risultato sarà un'immagine sfocata, poiché sarà formata da frequenze di lunghe lunghezze d'onda.

Algoritmo:

  1. Calcolare l'array Z′=T(Z), dove T è l'azzeramento delle righe e delle colonne situate nelle aree interne date della matrice degli argomenti corrispondenti alle 5. frequenze alte (ovvero l'azzeramento dei coefficienti di espansione di Fourier corrispondenti alte frequenze)

Algoritmo di nitidezza delle immagini

Nei sistemi ottici il diaframma, situato nel piano focale, è un semplice foro nello schermo. Come risultato del passaggio della luce attraverso il diaframma, le onde ad alta frequenza (con lunghezze d'onda più corte) attraversano l'ostacolo e le onde a bassa frequenza (con lunghezze d'onda più lunghe) vengono tagliate dallo schermo. Ciò aumenta la nitidezza dell'immagine risultante.

Algoritmo:

  1. Sia X(N1,N2) un array di luminosità dei pixel dell'immagine.
  2. Calcola Px = luminosità media (rms) dei pixel nell'array X
  3. Calcola l'array Z=FT(X) – trasformata di Fourier discreta bidimensionale diretta
  4. Salva il valore L=Z(0,0) – corrispondente alla luminosità media dei pixel dell'immagine originale
  5. Calcolare l'array Z′=T(Z), dove T è l'azzeramento delle righe e delle colonne situate nelle aree esterne date della matrice degli argomenti corrispondenti alle 6. frequenze basse (ovvero l'azzeramento dei coefficienti di espansione di Fourier corrispondenti alle basse frequenze )
  6. Ripristina il valore Z’(0,0)=L – corrispondente alla luminosità media dei pixel dell'immagine originale
  7. Calcola l'array Y=RFT(Z′) – trasformata di Fourier discreta bidimensionale inversa
  8. Calcola Py = luminosità media (rms) dei pixel nell'array Y
  9. Normalizza l'array Y(N1,N2) in base al livello di luminosità medio Px/Py

Algoritmo di ridimensionamento delle immagini

Nei sistemi ottici, il flusso luminoso nel piano focale del sistema è una trasformata di Fourier dell'immagine originale. La dimensione dell'immagine ottenuta all'uscita del sistema ottico è determinata dal rapporto tra le lunghezze focali dell'obiettivo e dell'oculare.

Algoritmo:

  1. Sia X(N1,N2) un array di luminosità dei pixel dell'immagine.
  2. Calcola Px = luminosità media (rms) dei pixel nell'array X
  3. Calcola l'array Z=FT(X) – trasformata di Fourier discreta bidimensionale diretta
  4. Calcola l'array Z′=T(Z), dove T aggiunge zero righe e colonne della matrice corrispondenti alle alte frequenze o rimuove righe e colonne della matrice corrispondenti alle alte frequenze per ottenere la dimensione richiesta dell'immagine finale
  5. Calcola l'array Y=RFT(Z′) – trasformata di Fourier discreta bidimensionale inversa
  6. Calcola Py = luminosità media (rms) dei pixel nell'array Y
  7. Normalizza l'array Y(M1,M2) in base al livello di luminosità medio Px/Py
Software utilizzato
  • Microsoft Studio visivo 2013 C# - ambiente e linguaggio di programmazione
  • EmguCV/OpenCV – Libreria C++ di strutture e algoritmi per l'elaborazione delle immagini
  • FFTWSharp/FFTW – Libreria C++ che implementa algoritmi di trasformata di Fourier discreti veloci

Algoritmo di sfocatura dell'immagine

Codice dell'algoritmo

///

/// Cancella la regione interna dell'array /// /// Matrice di valori /// Dimensioni della regione cieca interna vuoto statico privato Blind(Complesso[,] dati, Taglia taglia) ( int n0 = dati.GetLength(0); int n1 = dati.GetLength(1); int n2 = dati.GetLength(2); int s0 = Math.Max(0, (n0 - size.Height)/2 ); int s1 = Math.Max(0, (n1 - dimensione.Larghezza)/2); int e0 = Math.Min((n0 + dimensione.Altezza)/2, n0); int e1 = Math.Min(( n1 + size.Width)/2, n1); for (int i = s0; i< e0; i++) { Array.Clear(data, i*n1*n2, n1*n2); } for (int i = 0; i < s0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } } /// /// Sfoca la bitmap con il Trasformata di Fourier più veloce /// /// Bitmap blu public Bitmap Blur(Bitmap bitmap) ( utilizzando (var image = new Image (bitmap)) ( int length = image.Data.Length; int n0 = image.Data.GetLength(0); int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = nuovo double; Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (double)); double power = Math.Sqrt(doubles.Average(x => x*x)); var input = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray()); var output = new fftw_complexarray(length); fftw_plan.dft_3d(n0, n1, n2, input, output, fftw_direction. Avanti, fftw_flags.Estimate).Execute(); Complesso complesso = output.GetData_Complex(); var data = nuovo Complesso; var buffer = nuovo double; GCHandle complexHandle = GCHandle.Alloc(complesso, GCHandleType.Pinned); GCHandle dataHandle = GCHandle .Alloc(dati, GCHandleType.Pinned); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0 , dataPtr, buffer.Length);Blind(data, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); complexHandle.Free(); dataHandle.Free(); input.SetData(complesso); fftw_plan.dft_3d(n0, n1, n2, input, output, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output.GetData_Complex().Select(x => x.Magnitude).ToArray(); doppia potenza2 = Math.Sqrt(array2.Average(x => x*x)); raddoppia = array2.Select(x =>

Algoritmo di nitidezza delle immagini

Codice dell'algoritmo

///

/// Cancella la regione esterna dell'array /// /// Matrice di valori /// Dimensioni della regione cieca esterna private static void Blind(Complex[,] data, Size size) ( int n0 = data.GetLength(0); int n1 = data.GetLength(1); int n2 = data.GetLength(2); int s0 = Math. Max(0, (n0 - dimensione.Altezza)/2); int s1 = Math.Max(0, (n1 - dimensione.Larghezza)/2); int e0 = Math.Min((n0 + dimensione.Altezza)/ 2, n0); int e1 = Math.Min((n1 + size.Width)/2, n1); for (int i = 0; i< s0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } } /// /// Bitmap nitida con la trasformata di Fourier più veloce /// /// bitmap nitida public Bitmap Sharp(Bitmap bitmap) ( utilizzando (var image = new Image (bitmap)) ( int length = image.Data.Length; int n0 = image.Data.GetLength(0); int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = nuovo double; Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (double)); double power = Math.Sqrt(doubles.Average(x => x*x)); var input = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray()); var output = new fftw_complexarray(length); fftw_plan.dft_3d(n0, n1, n2, input, output, fftw_direction. Avanti, fftw_flags.Estimate).Execute(); Complesso complesso = output.GetData_Complex(); Livello complesso = complesso; var data = nuovo Complesso; var buffer = nuovo doppio; GCHandle complexHandle = GCHandle.Alloc(complesso, GCHandleType.Pinned) ; GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffer, 0, buffer.Length); Marshal. Copia(buffer, 0, dataPtr, buffer.Lunghezza); Cieco(dati, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); complexHandle.Free(); dataHandle.Free(); complesso = livello; input.SetData(complesso); fftw_plan.dft_3d(n0, n1, n2, input, output, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output.GetData_Complex().Select(x => x.Magnitude).ToArray(); doppia potenza2 = Math.Sqrt(array2.Average(x => x*x)); raddoppia = array2.Select(x => x*power/power2).ToArray(); Buffer.BlockCopy(doubles, 0, image.Data, 0, length*sizeof (double)); restituisce immagine.Bitmap; ) )

Algoritmo di ridimensionamento delle immagini

Codice dell'algoritmo

///

/// Copia gli array /// /// Matrice di input /// Matrice di output private static void Copia(Complesso[,] input, Complesso[,] output) ( int n0 = input.GetLength(0); int n1 = input.GetLength(1); int n2 = input.GetLength(2); int m0 = output.GetLength(0); int m1 = output.GetLength(1); int m2 = output.GetLength(2); int ex0 = Math.Min(n0, m0)/2; int ex1 = Math.Min(n1 , m1)/2; int ex2 = Math.Min(n2, m2); Debug.Assert(n2 == m2); for (int k = 0; k< ex2; k++) { for (int i = 0; i <= ex0; i++) { for (int j = 0; j <= ex1; j++) { int ni = n0 - i - 1; int nj = n1 - j - 1; int mi = m0 - i - 1; int mj = m1 - j - 1; output = input; output = input; output = input; output = input; } } } } /// /// Ridimensiona la bitmap con la trasformata di Fourier più veloce /// /// Bitmap ridimensionata public Bitmap Stretch(Bitmap bitmap) ( utilizzando (var image = new Image (bitmap)) ( int length = image.Data.Length; int n0 = image.Data.GetLength(0); int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = nuovo double; Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (double)); double power = Math.Sqrt(doubles.Average(x => x*x)); var input = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray()); var output = new fftw_complexarray(length); fftw_plan.dft_3d(n0, n1, n2, input, output, fftw_direction. Avanti, fftw_flags.Estimate).Execute(); Complesso complesso = output.GetData_Complex(); utilizzando (var image2 = new Image (_newSize)) ( int length2 = image2.Data.Length; int m0 ​​= image2.Data.GetLength(0); int m1 = image2.Data.GetLength(1); int m2 = image2.Data.GetLength(2 ); var complex2 = nuovo complesso; var data = nuovo complesso; var data2 = nuovo complesso; var buffer = nuovo double; GCHandle complexHandle = GCHandle.Alloc(complex, GCHandleType.Pinned); GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType .Pinned ); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, dataPtr, buffer.Length ); complexHandle.Free(); dataHandle.Free(); Copy(dati, dati2); buffer = nuovo double; complexHandle = GCHandle.Alloc(complex2, GCHandleType.Pinned); dataHandle = GCHandle.Alloc(data2, GCHandleType.Pinned ); complexPtr = complexHandle.AddrOfPinnedObject(); dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); complexHandle.Free(); dataHandle.Free(); var input2 = new fftw_complexarray(complex2); var output2 = new fftw_complexarray(length2); fftw_plan.dft_3d(m0, m1, m2, input2, output2, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output2.GetData_Complex().Select(x => x.Magnitude).ToArray(); doppia potenza2 = Math.Sqrt(array2.Average(x => x*x)); double doubles2 = array2.Select(x => x*power/power2).ToArray(); Buffer.BlockCopy(doubles2, 0, image2.Data, 0, length2*sizeof (double)); restituisce immagine2.Bitmap; ) ) )

Di norma, i segnali entrano nel sistema di elaborazione delle informazioni in forma continua. Per l'elaborazione informatica dei segnali continui, è necessario innanzitutto convertirli in digitali. Per fare ciò vengono eseguite operazioni di campionamento e quantizzazione.

Campionamento di immagini

Campionamento– questa è la trasformazione di un segnale continuo in una sequenza di numeri (campioni), cioè la rappresentazione di questo segnale secondo una base a dimensione finita. Questa rappresentazione consiste nel proiettare un segnale su una base data.

Il più conveniente dal punto di vista dell'organizzazione dell'elaborazione e in modo naturale il campionamento è la rappresentazione dei segnali sotto forma di un campione dei loro valori (campioni) in punti individuali, regolarmente distanziati. Questo metodo si chiama rasterizzazione e la sequenza di nodi in cui vengono prelevati i campioni è raster. Viene chiamato l'intervallo attraverso il quale vengono presi i valori di un segnale continuo fase di campionamento. Si chiama il reciproco del passo frequenza di campionamento,

Una domanda essenziale che sorge durante il campionamento: a quale frequenza dovremmo prelevare campioni di segnale per poterlo ricostruire a partire da questi campioni? Ovviamente, se i campioni vengono prelevati troppo raramente, non conterranno informazioni su un segnale in rapido cambiamento. La velocità di variazione di un segnale è caratterizzata dalla frequenza superiore del suo spettro. Pertanto, l'ampiezza minima consentita dell'intervallo di campionamento è correlata alla frequenza più alta dello spettro del segnale (inversamente proporzionale ad essa).

Nel caso del campionamento uniforme vale quanto segue: Il teorema di Kotelnikov, pubblicato nel 1933 nell’opera “Sulla capacità dell’aria e del filo nelle telecomunicazioni”. Dice: se un segnale continuo ha uno spettro limitato dalla frequenza, allora può essere ricostruito completamente e inequivocabilmente dai suoi campioni discreti presi con un periodo, ad es. con frequenza.

Il ripristino del segnale viene effettuato utilizzando la funzione . Kotelnikov ha dimostrato che un segnale continuo che soddisfa i criteri di cui sopra può essere rappresentato come una serie:

.

Questo teorema è anche chiamato teorema del campionamento. Viene anche chiamata la funzione funzione di campionamento o Kotelnikov, sebbene una serie di interpolazioni di questo tipo sia stata studiata da Whitaker nel 1915. La funzione di conteggio ha estensione infinita nel tempo e raggiunge il suo massimo valore, uguale a uno, nel punto rispetto al quale è simmetrico.

Ognuna di queste funzioni può essere considerata come una risposta ad un ideale filtro passa basso(filtro passa-basso) all'impulso delta che arriva all'istante . Pertanto, per ripristinare un segnale continuo dai suoi campioni discreti, è necessario farli passare attraverso un filtro passa-basso appropriato. Va notato che un tale filtro è non causale e fisicamente irrealizzabile.

Il rapporto di cui sopra significa la possibilità di ricostruire accuratamente segnali con uno spettro limitato dalla sequenza dei loro campioni. Segnali a spettro limitato– si tratta di segnali il cui spettro di Fourier differisce da zero solo entro una porzione limitata dell'area di definizione. I segnali ottici possono essere classificati come uno di questi, perché Lo spettro di Fourier delle immagini ottenute nei sistemi ottici è limitato a causa delle dimensioni limitate dei loro elementi. La frequenza viene chiamata Frequenza di Nyquist. Questa è la frequenza limite al di sopra della quale non dovrebbero essere presenti componenti spettrali nel segnale di ingresso.

Quantizzazione dell'immagine

Nell'elaborazione delle immagini digitali, la gamma dinamica continua dei valori di luminosità è suddivisa in una serie di livelli discreti. Questa procedura si chiama quantizzazione. La sua essenza sta nella trasformazione di una variabile continua in una variabile discreta che assume un insieme finito di valori. Questi valori sono chiamati livelli di quantizzazione. In generale, la trasformazione è espressa da una funzione a gradino (Fig. 1). Se l'intensità dell'immagine campione appartiene all'intervallo (ovvero, quando ), quindi il campione originale viene sostituito dal livello di quantizzazione, dove soglie di quantizzazione. Si presuppone che l'intervallo dinamico dei valori di luminosità sia limitato e pari a .

Riso. 1. Funzione che descrive la quantizzazione

Il compito principale in questo caso è determinare i valori delle soglie e dei livelli di quantizzazione. Il modo più semplice per risolvere questo problema è partizionare gamma dinamica a intervalli uguali. Questa soluzione però non è la migliore. Se i valori di intensità della maggior parte dei conteggi delle immagini sono raggruppati, ad esempio, nella regione “scura” e il numero di livelli è limitato, è consigliabile una quantizzazione non uniforme. Nella regione “scura” è necessario quantizzare più spesso, mentre nella regione “chiara” meno spesso. Ciò ridurrà l'errore di quantizzazione.

Nei sistemi elaborazione digitale di immagini, si sforzano di ridurre il numero di livelli e soglie di quantizzazione, poiché la quantità di informazioni richieste per codificare l'immagine dipende dal loro numero. Tuttavia, con relativamente un piccolo numero livelli nell’immagine quantizzata, potrebbero apparire falsi contorni. Sorgono come risultato di un brusco cambiamento nella luminosità dell'immagine quantizzata e sono particolarmente evidenti nelle aree piatte del suo cambiamento. I falsi contorni degradano significativamente la qualità visiva dell'immagine, poiché la visione umana è particolarmente sensibile ai contorni. Quando si quantizzano uniformemente immagini tipiche, sono necessari almeno 64 livelli.

Spiega e mostra con un esempio Pascal: 1) Cos'è l'assoluto e a cosa serve? 2) Cos'è l'ASM e a cosa serve? 3) Cos'è

costruttore e distruttore e a cosa serve?

4) Cos'è l'implementazione e a cosa serve?

5) Assegna un nome ai moduli Pascal (nella riga Uses, ad esempio crt) e quali funzionalità fornisce questo modulo?

6) Che tipo di variabile è: puntatore

7) E infine: cosa significa il simbolo @, #, $, ^?

1. Cos'è un oggetto?2. Cos'è un sistema?3. Qual è il nome comune di un oggetto? Fai un esempio.4. Qual è il nome di un singolo oggetto? Fai un esempio.5.

Fornisci un esempio di sistema naturale.6. Fornire un esempio di sistema tecnico.7. Fornisci un esempio di sistema misto.8. Fornire un esempio di sistema immateriale.9. Cos'è la classificazione?10. Cos'è una classe di oggetti?

1. Domanda 23 - elencare le modalità operative del database di accesso:

Creazione di una tabella in modalità progettazione;
-creare una tabella utilizzando la procedura guidata;
-creare una tabella inserendo i dati.

2. cos'è formato vettoriale?

3. Possono essere classificati come programmi di servizio:
a) programmi di manutenzione del disco (copia, disinfezione, formattazione, ecc.)
b) compressione di file su dischi (archiviatori)
c) lotta ai virus informatici e molto altro ancora.
Personalmente penso che la risposta qui sia B: giusto o sbagliato?

4. per quanto riguarda le proprietà dell'algoritmo (a. discrezione, b. efficacia c. carattere di massa, d. certezza, d. fattibilità e comprensibilità) - qui penso che tutte le opzioni siano corrette. Giusto o sbagliato?

prova 7 semplici domande a scelta multipla

13. La velocità di clock del processore è:

A. il numero di operazioni binarie eseguite dal processore per unità di tempo

B. il numero di impulsi generati al secondo che sincronizzano il funzionamento dei nodi del computer

C. il numero di possibili accessi del processore alla RAM per unità di tempo

D. velocità di scambio delle informazioni tra il processore e i dispositivi di input/output

14. Specificare il minimo insieme necessario dispositivi progettati per il funzionamento del computer:

Una stampante, unità di sistema, tastiera

B. processore, RAM, monitor, tastiera

C. processore, streamer, disco rigido

D. monitor, unità di sistema, tastiera

15. Cos'è un microprocessore?

UN. circuito integrato, che esegue i comandi ricevuti al suo ingresso e controlla

Funzionamento del computer

B. un dispositivo per la memorizzazione dei dati che viene spesso utilizzato al lavoro

C. un dispositivo per visualizzare informazioni testuali o grafiche

D. dispositivo per l'emissione di dati alfanumerici

16.Interazione dell'utente con ambiente software effettuato utilizzando:

A. sistema operativo

B. file system

C. Applicazioni

D. file manager

17.Controllo diretto Software l'utente può eseguire con

Di:

A. sistema operativo

B. GUI

C. Interfaccia utente

D. file manager

18. Le modalità di conservazione dei dati su supporti fisici sono determinate da:

A. sistema operativo

B. software applicativo

C.file system

D. file manager

19. Ambiente grafico su cui vengono visualizzati oggetti e controlli del sistema Windows,

Creato per comodità dell'utente:

A. interfaccia hardware

B. interfaccia utente

C. desktop

D. interfaccia software

20. La velocità di un computer dipende da:

A. Velocità di clock della CPU

B. presenza o assenza di una stampante collegata

C. organizzazione dell'interfaccia del sistema operativo

D. capacità di archiviazione esterna

Analogico e immagine discreta. Le informazioni grafiche possono essere presentate in forma analogica o discreta. Un esempio di immagine analogica è un dipinto il cui colore cambia continuamente, mentre un esempio di immagine discreta è un motivo stampato utilizzando una stampante a getto d'inchiostro, costituito da singoli punti di diversi colori. Analogico (pittura a olio). Discreto.

Diapositiva 11 dalla presentazione "Codifica ed elaborazione delle informazioni". La dimensione dell'archivio con la presentazione è di 445 KB.

Informatica 9° grado

riepilogo altre presentazioni

"Algoritmi della struttura ramificata" - Condizione IF, azione THEN. Cosa sappiamo? Struttura della lezione. Algoritmo di ramificazione. Completa l'algoritmo e compila la tabella. Lo studente che ottiene un punteggio compreso tra 85 e 100 inclusi, accede alla seconda fase del concorso. Inserisci il numero di punti e determina se è arrivato al secondo turno. Trovare numero maggiore tra a e b. Scrivere un programma in un linguaggio di programmazione. Un algoritmo di ramificazione è un algoritmo in cui, a seconda della condizione, viene eseguita l'una o l'altra sequenza di azioni.

“Creazione di intelligenza artificiale” - Approccio di simulazione. Approcci alla costruzione di sistemi di intelligenza artificiale. Approccio evolutivo. Intelligenza artificiale. Può convivere con molte persone, aiutando ad affrontare i problemi personali. Approccio strutturale. Approccio logico. Problemi durante lo sviluppo. Prospettive di sviluppo e ambiti di applicazione.

“Programmi ciclici” - Digitale. Ciclo con precondizione. Trova l'importo. Ciclo con postcondizione. Ciclo con un parametro. Algoritmo di Euclide. Programmi ciclici. Trova la somma dei numeri naturali. Il concetto di ciclo. Una commissione iniziale. Tabulazione delle funzioni. Calcolare. Esempio. Divisori. Informatica. Trova il numero di numeri. Trovare. Trova il numero dei numeri naturali di tre cifre. Numeri a tre cifre. Trova l'insieme dei valori della funzione. Tabella di conversione del dollaro.

"Che cos'è l'e-mail" - Mittente. Indirizzo e-mail. Cronologia delle e-mail. La questione della comparsa della posta elettronica. Struttura delle lettere. Instradamento della posta. Lettera. E-mail. Copia. Data di. X-mailer. E-mail. Come funziona E-mail.

"Lavorare con l'e-mail" - Indirizzo e-mail. Cassetta postale. Protocollo di posta elettronica. Rete di condivisione file. Separazione degli indirizzi. Vantaggi dell'e-mail. Client di posta. Inventore della posta elettronica. Indirizzo. E-mail. Software per lavorare con la posta elettronica. Come funziona la posta elettronica. Teleconferenza. Server email. Condivisione di file.

"Elaborazione in Photoshop" - Bravi ragazzi. Come distinguere un falso. Raster e immagini vettoriali. Introduzione. I posti migliori. Programma Adobe Photoshop. Ritocco. Concorsi su come lavorare con Photoshop. Regolazione della luminosità. I miei amici. Parte pratica. Programmi simili. Parte principale. Progetto. Animali insoliti. Montaggio di più immagini.

I migliori articoli sull'argomento