Ο καθαρισμός των εικόνων είναι μια πολύτιμη τεχνική, είτε πρόκειται για περαιτέρω ανάλυση είτε απλώς για να κάνετε τις φωτογραφίες σας να φαίνονται καλύτερα.

Η βελτίωση εικόνας είναι ένα κρίσιμο εργαλείο για την όραση υπολογιστή και τις εφαρμογές επεξεργασίας εικόνας. Στοχεύει στη βελτίωση της ποιότητας των εικόνων.

Με τη βελτίωση της ποιότητας της εικόνας, η ακρίβεια και η αξιοπιστία των τεχνικών ανάλυσης και επεξεργασίας εικόνας μπορούν να βελτιωθούν σημαντικά. Αυτό είναι ιδιαίτερα σημαντικό σε εφαρμογές ανίχνευσης, αναγνώρισης, τμηματοποίησης και παρακολούθησης αντικειμένων.

Η βελτίωση της εικόνας μπορεί να βοηθήσει όταν παράγοντες όπως συνθήκες χαμηλού φωτισμού, θόρυβος αισθητήρα, θόλωση κίνησης ή σφάλματα μετάδοσης έχουν θέσει σε κίνδυνο την ποιότητα της εικόνας.

Ρύθμιση του περιβάλλοντος σας

Ξεκινήστε από ρύθμιση περιβάλλοντος Python, στη συνέχεια εκτελέστε την ακόλουθη εντολή τερματικού για να εγκαταστήσετε τη βιβλιοθήκη OpenCV. Θα χρησιμοποιήσετε το OpenCV για να φορτώσετε και να επεξεργαστείτε την αρχική εικόνα και να αποθηκεύσετε την τελική βελτιωμένη εικόνα.

instagram viewer
pip εγκατάσταση opencv-python

Θα χρησιμοποιήσετε το Matplotlib για να εμφανίσετε τις δύο εικόνες. Εγκαταστήστε το χρησιμοποιώντας αυτήν την εντολή:

εγκατάσταση pip matplotlib

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

pip εγκατάσταση numpy

Αφού εγκαταστήσετε αυτές τις βιβλιοθήκες στο περιβάλλον σας, είστε έτοιμοι να ξεκινήσετε την κωδικοποίηση.

Ο πλήρης πηγαίος κώδικας για αυτήν την επίδειξη είναι διαθέσιμος στο a Αποθετήριο GitHub.

Εισαγωγή των Απαραίτητων Βιβλιοθηκών

Εισαγάγετε τις βιβλιοθήκες που εγκαταστήσατε προηγουμένως στο περιβάλλον σας:

εισαγωγή cv2
εισαγωγή matplotlib.pyplot όπως και plt
εισαγωγή μουδιασμένος όπως και np

Σημειώστε ότι θα πρέπει να εισαγάγετε το OpenCV ως cv2. Αυτή είναι μια τυπική πρακτική που στοχεύει στη διασφάλιση συμβατότητας κώδικα και ευκολίας κατανόησης για άλλους προγραμματιστές.

Φόρτωση και εμφάνιση της αρχικής εικόνας

Ξεκινήστε φορτώνοντας την αρχική εικόνα χρησιμοποιώντας το cv2.imread λειτουργία. Αυτή είναι η εικόνα εισόδου στην οποία το πρόγραμμά σας θα εκτελέσει τεχνικές βελτίωσης. Στη συνέχεια, εμφανίστε το χρησιμοποιώντας τις κατάλληλες συναρτήσεις Matplotlib:

εικόνα = cv2.imread('example.jpg')
plt.imshow (cv2.cvtColor (εικόνα, cv2.COLOR_BGR2RGB))
plt.title('Αρχική εικόνα')
plt.show()

Η εμφάνιση της αρχικής εικόνας θα σας βοηθήσει να συγκρίνετε τα αποτελέσματα του προγράμματος αργότερα:

Η παραπάνω εικόνα θα είναι η είσοδος του προγράμματος.

Μείωση του θορύβου στην εικόνα

Η αποθορυβοποίηση είναι μια τεχνική που στοχεύει στη μείωση του θορύβου—τυχαίες παραμορφώσεις—στην εικόνα. Αυτό έχει ως αποτέλεσμα πιο ομαλή έξοδο. Το OpenCV παρέχει το fastNlMeansDenoiseingColored λειτουργούν για το σκοπό αυτό. Χρησιμοποιεί έναν αλγόριθμο μη τοπικών μέσων για την αφαίρεση του θορύβου διατηρώντας παράλληλα τις λεπτομέρειες της εικόνας.

# Εφαρμόστε βελτιώσεις εικόνας
# Καταργήστε το θόρυβο της εικόνας
denoised_image = cv2.fastNlMeansDenoisingColored (εικόνα, Κανένας, 10, 10, 7, 21)

ο fastNlMeansDenoiseingColored Η λειτουργία παίρνει πολλές παραμέτρους, συμπεριλαμβανομένης της εικόνας, της ισχύος του φίλτρου, του μεγέθους παραθύρου προτύπου και του μεγέθους του παραθύρου αναζήτησης. Μπορείτε να πειραματιστείτε με διαφορετικές τιμές για να έχετε τα επιθυμητά αποτελέσματα.

Τεντώστε την αντίθεση για να βελτιώσετε την ορατότητα των λεπτομερειών

Το τέντωμα αντίθεσης είναι επίσης γνωστό ως κανονικοποίηση. Επεκτείνει τις τιμές έντασης για να καλύψει ένα συγκεκριμένο εύρος. Αυτό με τη σειρά του βελτιώνει την ορατότητα των λεπτομερειών στην εικόνα.

Μπορείτε να εφαρμόσετε τέντωμα αντίθεσης στην εικόνα χωρίς θόρυβο χρησιμοποιώντας το OpenCV ομαλύνω λειτουργία:

# Εκτελέστε τέντωμα αντίθεσης
contrast_stretched_image = cv2.normalize (denoised_image, Κανένας, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Πώς να ακονίσετε την εικόνα

Η ευκρίνεια εικόνας βελτιώνει τις άκρες και τις λεπτομέρειες της εικόνας, συμβάλλοντας στη βελτίωση της ευκρίνειας της εικόνας.

# όξυνση εικόνας
πυρήνας = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D(contrast_stretched_image, -1, πυρήνας=πυρήνας)

Ο παραπάνω κώδικας δημιουργεί μια μήτρα πυρήνα που δίνει έμφαση στις άκρες και τις λεπτομέρειες της εικόνας. ο cv2.filter2D Η λειτουργία εφαρμόζει τον πυρήνα στην εικόνα με τέντωμα αντίθεσης, αυξάνοντάς την ως αποτέλεσμα.

Προσαρμόστε τη φωτεινότητα για να βελτιώσετε την έκθεση

Η ρύθμιση φωτεινότητας ελέγχει τη συνολική φωτεινότητα μιας εικόνας. Βοηθά να γίνει η εικόνα οπτικά ελκυστική και καλά εκτεθειμένη.

# Ρύθμιση φωτεινότητας
brightness_image = cv2.convertScaleAbs (sharpened_image, alpha=1, βήτα=5)

ο cv2.convertScaleAbs η λειτουργία προσαρμόζει τη φωτεινότητα της εικόνας. ο άλφα παράμετρος ελέγχει την αντίθεση, ενώ το βήτα η παράμετρος ελέγχει τη φωτεινότητα. Αυξάνοντας το βήτα τιμή ενισχύει τη φωτεινότητα της εικόνας.

Εφαρμόστε τη διόρθωση γάμμα για να φωτίσετε την εικόνα

Μια εικόνα μπορεί να εμφανίζεται πολύ φωτεινή μετά την τεχνική ρύθμισης φωτεινότητας. Η διόρθωση γάμμα προσαρμόζει τη συνολική φωτεινότητα και την αντίθεση μιας εικόνας. Διορθώνει εικόνες που φαίνονται πολύ σκοτεινές ή πολύ φωτεινές.

# Διόρθωση γάμμα
γάμμα = 1.5
lookup_table = np.array([((i / 255.0) ** γάμμα) * 255Για Εγώ σε np.arange(0, 256)]).atype("uint8")
gamma_corrected_image = cv2.LUT(brightness_image, lookup_table)

Το παραπάνω απόσπασμα κώδικα δημιουργεί έναν πίνακα αναζήτησης που εφαρμόζει μετασχηματισμό διόρθωσης γάμμα στην εικόνα προσαρμοσμένη στη φωτεινότητα. ο γάμμα τιμή ελέγχει τη ρύθμιση. Χρησιμοποιήστε τιμές μεγαλύτερες από 1 για να κάνετε την εικόνα πιο σκούρα και τιμές μικρότερες από 1 για να την κάνετε πιο φωτεινή.

Αποθήκευση και εμφάνιση της τελικής βελτιωμένης εικόνας

Αφού εφαρμόσετε τις παραπάνω τεχνικές βελτίωσης, αποθηκεύστε την τελική επεξεργασμένη εικόνα σε ένα αρχείο.

# Αποθήκευση τελικής εικόνας
cv2.imwrite('final_image.jpg', gamma_corrected_image)

Στη συνέχεια, εμφανίστε την έξοδο του προγράμματος χρησιμοποιώντας το Matplotlib.

# Εμφάνιση της τελικής βελτιωμένης εικόνας
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title("Τελική βελτιωμένη εικόνα")
plt.show()

Η τελική βελτιωμένη εικόνα είναι η εξής:

Το μέλλον της βελτίωσης εικόνας

Το μέλλον της βελτίωσης εικόνας βρίσκεται στον τομέα της τεχνητής νοημοσύνης. Οι αλγόριθμοι μηχανικής μάθησης εκπαιδεύονται ώστε να εκτελούν αυτόματα τεχνικές βελτίωσης εικόνας σε εικόνες.

Αυτά τα προγράμματα αντιμετωπίζουν κάθε εικόνα ανεξάρτητα, επομένως εφαρμόζουν διαφορετικές τιμές των τεχνικών για διαφορετικές εικόνες.