Condivisione della tecnologia

C: Una breve panoramica della funzione filter2D

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

in OpenCVfilter2D La funzione è uno strumento molto potente per convolgere le immagini per applicare vari filtri lineari. Questa funzione elabora ogni pixel nell'immagine e modifica le caratteristiche dell'immagine convolundola con un kernel di convoluzione specificato (o filtro).Quanto segue riguardafilter2DIntroduzione dettagliata della funzione:

prototipo di funzione

In OpenCV,filter2DIl prototipo della funzione è il seguente:

void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel,  
                  Point anchor = Point(-1,-1), double delta = 0,  
                  int borderType = BORDER_DEFAULT);

Descrizione dei parametri

  • origine: Immagine immessa.
  • ora legale: Immagine in uscita e immagine in ingressosrcAvere la stessa dimensione e numero di canali.
  • profondità : La profondità desiderata dell'immagine in uscita (tipo di dati). Quando è -1, significa che l'immagine di output ha la stessa profondità dell'immagine di input.
  • nocciolo : Kernel di convoluzione (o filtro), che è una matrice in virgola mobile a canale singolo. Questa matrice definisce come eseguire operazioni di convoluzione sull'immagine di input.
  • ancora : il punto di ancoraggio del kernel, che indica la posizione relativa del punto di filtro nel kernel. Il punto di ancoraggio dovrebbe essere posizionato all'interno del kernel; il valore predefinito (-1,-1) significa che il punto di ancoraggio si trova al centro del kernel.
  • delta: un valore facoltativo che verrà utilizzato durante la memorizzazione dei pixel filtratidstprecedentemente aggiunto ai pixel filtrati.
  • Tipo di bordo : metodo di estrapolazione dei pixel, utilizzato per elaborare i pixel all'esterno dei confini dell'immagine. Determina come vengono elaborati i pixel di confine quando il kernel di convoluzione supera il confine dell'immagine.Le opzioni comuni includonoBORDER_CONSTANTBORDER_REPLICATEBORDER_REFLECTAspettare.

principio di funzionamento

filter2D La funzione esegue effettivamente un'operazione di convoluzione (sebbene tecnicamente calcoli una correlazione anziché una convoluzione rigorosa poiché non è coinvolta l'inversione del kernel). L'operazione di convoluzione prevede lo "scorrimento" del kernel di convoluzione sull'immagine di input, moltiplicando gli elementi corrispondenti di ciascuna sottomatrice della stessa dimensione del kernel di convoluzione e quindi aggiungendo i risultati. Questo processo genera un nuovo valore di pixel che viene posizionato nella posizione corrispondente nell'immagine di output. Mentre il kernel di convoluzione scorre sull'intera immagine di input, questo processo viene ripetuto finché non viene generata l'immagine di output completa.

Scenari applicativi

Modificando il kernel di convoluzione,filter2DLe funzioni possono ottenere una varietà di effetti di elaborazione delle immagini, inclusi ma non limitati a:

  • Nitidezza dell'immagine: L'utilizzo di uno specifico kernel di convoluzione della nitidezza può rendere più chiari i bordi dell'immagine.
  • filtro medio: L'utilizzo del kernel di convoluzione media può ridurre il rumore dell'immagine, ma può rendere l'immagine sfocata.
  • Filtro gaussiano : Il filtraggio gaussiano è una tecnica di livellamento dell'immagine comunemente utilizzata che può ridurre il rumore dell'immagine mantenendo le informazioni sui bordi.Sebbenefilter2DLa funzione in sé non prevede direttamente la generazione di kernel gaussiani, ma può essere passatagetGaussianKernella funzione genera un kernel gaussiano e utilizzafilter2DEseguire il filtraggio gaussiano.
  • rilevamento dei bordi: Progettando nuclei di convoluzione specifici (come l'operatore Sobel, l'operatore Laplaciano, ecc.), è possibile rilevare i bordi nell'immagine.

Codice d'esempio

Quello che segue è un usofilter2DCodice di esempio per il filtraggio della media delle funzioni (versione Python):

#include