Κοινή χρήση τεχνολογίας

Γ: Μια σύντομη επισκόπηση της λειτουργίας filter2D

2024-07-08

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

στο OpenCVfilter2D Η συνάρτηση είναι ένα πολύ ισχυρό εργαλείο για τη συνέλιξη εικόνων για την εφαρμογή διαφόρων γραμμικών φίλτρων. Αυτή η συνάρτηση επεξεργάζεται κάθε εικονοστοιχείο στην εικόνα και τροποποιεί τα χαρακτηριστικά της εικόνας περιελίσσοντάς την με έναν καθορισμένο πυρήνα συνέλιξης (ή φίλτρο).Το παρακάτω αφοράfilter2DΑναλυτική εισαγωγή της λειτουργίας:

πρωτότυπο λειτουργίας

Στο OpenCV,filter2DΤο πρωτότυπο της λειτουργίας είναι το εξής:

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

Περιγραφή παραμέτρου

  • src: Εισαγωγή εικόνας.
  • δστ: Έξοδος εικόνας και είσοδος εικόναςsrcΈχετε το ίδιο μέγεθος και τον ίδιο αριθμό καναλιών.
  • βάθους : Το επιθυμητό βάθος της εικόνας εξόδου (τύπος δεδομένων). Όταν είναι -1, σημαίνει ότι η εικόνα εξόδου έχει το ίδιο βάθος με την εικόνα εισόδου.
  • πυρήνας : Πυρήνας συνέλιξης (ή φίλτρο), ο οποίος είναι ένας πίνακας κινητής υποδιαστολής ενός καναλιού. Αυτός ο πίνακας καθορίζει τον τρόπο εκτέλεσης λειτουργιών συνέλιξης στην εικόνα εισόδου.
  • άγκυρα : Το σημείο αγκύρωσης του πυρήνα, το οποίο υποδεικνύει τη σχετική θέση του σημείου φίλτρου στον πυρήνα. Το σημείο αγκύρωσης πρέπει να βρίσκεται εντός του πυρήνα, η προεπιλεγμένη τιμή (-1,-1) σημαίνει ότι το σημείο αγκύρωσης βρίσκεται στο κέντρο του πυρήνα.
  • δέλτα: μια προαιρετική τιμή που θα χρησιμοποιηθεί κατά την αποθήκευση φιλτραρισμένων pixeldstπροστέθηκε προηγουμένως στα φιλτραρισμένα εικονοστοιχεία.
  • borderType : Μέθοδος παρέκτασης εικονοστοιχείων, που χρησιμοποιείται για την επεξεργασία εικονοστοιχείων εκτός των ορίων της εικόνας. Καθορίζει πώς επεξεργάζονται τα οριακά εικονοστοιχεία όταν ο πυρήνας συνέλιξης υπερβαίνει το όριο της εικόνας.Οι κοινές επιλογές περιλαμβάνουνBORDER_CONSTANTBORDER_REPLICATEBORDER_REFLECTΠερίμενε.

αρχή λειτουργίας

filter2D Η συνάρτηση εκτελεί στην πραγματικότητα μια λειτουργία συνέλιξης (αν και τεχνικά υπολογίζει μια συσχέτιση παρά μια αυστηρή συνέλιξη δεδομένου ότι δεν υπάρχει αναστροφή του πυρήνα). Η λειτουργία συνέλιξης περιλαμβάνει "ολίσθηση" του πυρήνα συνέλιξης πάνω από την εικόνα εισόδου, πολλαπλασιάζοντας τα αντίστοιχα στοιχεία κάθε υπομήτρας του ίδιου μεγέθους με τον πυρήνα συνέλιξης και στη συνέχεια προσθέτοντας τα αποτελέσματα. Αυτή η διαδικασία δημιουργεί μια νέα τιμή pixel που τοποθετείται στην αντίστοιχη θέση στην εικόνα εξόδου. Καθώς ο πυρήνας συνέλιξης ολισθαίνει σε ολόκληρη την εικόνα εισόδου, αυτή η διαδικασία επαναλαμβάνεται μέχρι να δημιουργηθεί η πλήρης εικόνα εξόδου.

Σενάρια εφαρμογής

Αλλάζοντας τον πυρήνα συνέλιξης,filter2DΟι λειτουργίες μπορούν να επιτύχουν μια ποικιλία εφέ επεξεργασίας εικόνας, συμπεριλαμβανομένων, ενδεικτικά, των εξής:

  • Ευκρίνεια εικόνας: Η χρήση ενός συγκεκριμένου πυρήνα περιέλιξης ευκρίνειας μπορεί να κάνει τις άκρες της εικόνας πιο καθαρές.
  • μέσο φίλτρο: Η χρήση του μέσου πυρήνα συνέλιξης μπορεί να μειώσει το θόρυβο της εικόνας, αλλά μπορεί να κάνει την εικόνα θολή.
  • Φίλτρο Gauss : Το φίλτρο Gauss είναι μια ευρέως χρησιμοποιούμενη τεχνική εξομάλυνσης εικόνας που μπορεί να μειώσει το θόρυβο της εικόνας διατηρώντας ταυτόχρονα τις πληροφορίες άκρων.Αν καιfilter2DΗ ίδια η συνάρτηση δεν παρέχει άμεσα τη δημιουργία πυρήνων Gauss, αλλά μπορεί να περάσειgetGaussianKernelη συνάρτηση δημιουργεί έναν πυρήνα Gauss και χρησιμοποιείfilter2DΕκτελέστε φιλτράρισμα Gauss.
  • ανίχνευση άκρων: Σχεδιάζοντας συγκεκριμένους πυρήνες συνέλιξης (όπως ο τελεστής Sobel, ο τελεστής Λαπλασίας κ.λπ.), μπορούν να εντοπιστούν άκρες στην εικόνα.

Δείγμα κώδικα

Το παρακάτω είναι μια χρήσηfilter2DΠαράδειγμα κώδικα για το φιλτράρισμα μέσων συνάρτησης (έκδοση Python):

#include