Προηγούμενος έλεγχος και από τις δύο πλευρές
Προηγούμενη αναθεώρηση
Επόμενη αναθεώρηση
|
Προηγούμενη αναθεώρηση
|
c_image_processing [2015/11/14 13:18] chiossif |
c_image_processing [2020/11/21 09:52] (τρέχουσα) |
| |
Στο wiki αυτό θα μάθουμε να διαχειριζόμαστε και γενικότερα επεξεργαζόμαστε πολυκάναλες εικόνες με την [[https://en.wikipedia.org/wiki/C_%28programming_language%29|γλώσσα προγραμματισμού C]]. Θα ξεκινήσουμε από απλές λειτουργίες όπως ανάγνωση εικόνας και αριθμητική δεικτών και θα προχωρήσουμε σε πιο σύνθετα θέματα :-) | Στο wiki αυτό θα μάθουμε να διαχειριζόμαστε και γενικότερα επεξεργαζόμαστε πολυκάναλες εικόνες με την [[https://en.wikipedia.org/wiki/C_%28programming_language%29|γλώσσα προγραμματισμού C]]. Θα ξεκινήσουμε από απλές λειτουργίες όπως ανάγνωση εικόνας και αριθμητική δεικτών και θα προχωρήσουμε σε πιο σύνθετα θέματα :-) |
| |
| |
| |
Έτσι, προκειμένου η διαδικασία να γίνει πιο εύκολη, αρκεί να δημιουργηθεί ένα αρχείο που περιέχει μόνο τις τιμές των εικονοστοιχείων και όχι άλλες πληροφορίες που αφορούν το μέγεθος της εικόνας, τον τύπο της κ.τ.λ. Ένα τέτοιο πρότυπο είναι το πρότυπο [[http://users.ntua.gr/chiossif/Free_As_Freedom_Software/BIL_BIP_BSQ.pdf|BIL/BIP/BSQ]] (το οποίο έχουμε μάθει ως .ers) το οποίο μετατρέπει την εικόνα σε δύο αρχεία. Το πρώτο που έχει κατάληξη .ers περιέχει όλες τις πληροφορίες της εικόνας (γραμμές, στήλες, κανάλια, τύπος δεδομένων) και το δεύτερο την εικόνα με τις τιμές της σε όλα τα κανάλια. Έτσι αρκεί, να μετατρέψουμε σε πρώτη φάση την εικόνα μας σε .ers. Η μετατροπή μπορεί να γίνει με πολλούς τρόπους, αλλά ένας από τους πιο εύκολους είναι μέσω της βιβλιοθήκης gdal. Η [[http://www.gdal.org/|gdal]] είναι μια βιβλιοθήκη ελεύθερου λογισμικού που χρησιμοποιείται για γεωχωρικά δεδομένα και υποστηρίζει όλα τα πρότυπα στα οποία μπορεί να έχει αποθηκευτεί μια εικόνα. | Έτσι, προκειμένου η διαδικασία να γίνει πιο εύκολη, αρκεί να δημιουργηθεί ένα αρχείο που περιέχει μόνο τις τιμές των εικονοστοιχείων και όχι άλλες πληροφορίες που αφορούν το μέγεθος της εικόνας, τον τύπο της κ.τ.λ. Ένα τέτοιο πρότυπο είναι το πρότυπο [[http://users.ntua.gr/chiossif/Free_As_Freedom_Software/BIL_BIP_BSQ.pdf|BIL/BIP/BSQ]] (το οποίο έχουμε μάθει ως .ers) το οποίο μετατρέπει την εικόνα σε δύο αρχεία. Το πρώτο που έχει κατάληξη .ers περιέχει όλες τις πληροφορίες της εικόνας (γραμμές, στήλες, κανάλια, τύπος δεδομένων) και το δεύτερο την εικόνα με τις τιμές της σε όλα τα κανάλια. Έτσι αρκεί, να μετατρέψουμε σε πρώτη φάση την εικόνα μας σε .ers. Η μετατροπή μπορεί να γίνει με πολλούς τρόπους, αλλά ένας από τους πιο εύκολους είναι μέσω της βιβλιοθήκης gdal. Η [[http://www.gdal.org/|gdal]] είναι μια βιβλιοθήκη ελεύθερου λογισμικού που χρησιμοποιείται για γεωχωρικά δεδομένα και υποστηρίζει όλα τα πρότυπα στα οποία μπορεί να έχει αποθηκευτεί μια εικόνα. |
| |
Έχοντας λοιπόν την [[ https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png|εικόνα]] μας την μεταφορτώνουμε με την εντολή: | Έχοντας λοιπόν την [[https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png |εικόνα]] μας την μεταφορτώνουμε με την εντολή: |
wget https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png | wget https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png |
και μέσω της gdal την μετατρέπουμε σε ers πρότυπο | και μέσω της gdal την μετατρέπουμε σε ers πρότυπο |
| |
-> Προσέξτε πως ελέγχουμε την απόδοση τιμής στο αποτέλεσμα. Μην ξεχνάμε πως προδιαγραφή (και άρα περιορισμός) είναι η εικόνα αποτέλεσμα να είναι 8bit όπως και η εικόνα εισόδου. Αυτό το λογισμικό αντιμετωπίζει μόνο εικόνες 8bit και έτσι πρέπει να έχει τιμές στο εύρος [0,255] (unsigned char). | -> Προσέξτε πως ελέγχουμε την απόδοση τιμής στο αποτέλεσμα. Μην ξεχνάμε πως προδιαγραφή (και άρα περιορισμός) είναι η εικόνα αποτέλεσμα να είναι 8bit όπως και η εικόνα εισόδου. Αυτό το λογισμικό αντιμετωπίζει μόνο εικόνες 8bit και έτσι πρέπει να έχει τιμές στο εύρος [0,255] (unsigned char). |
| |
| |
| |
| |
όπου με τον τελεστή ()?: αποφασίζεται και αποθηκεύεται στην εικόνα αποτέλεσμα image_out στην θέση k (πρόκειται για ενδιάμεση μνήμη αποθήκευσης μιας γραμμής) είτε η image_in1 είτε η image_in2. Η απόφαση λαμβάνεται από το λογικό (i/ssize-k/ssize)%2 όπου i η τρέχουσα γραμμή η οποία περιέχεται στις ενδιάμεσες μνήμες των εικόνων, k η τρέχουσα στήλη (ως στοιχείο των ενδιάμεσων μνημών) και ssize το μέγεθος του τετράγωνου της σκακιέρας όπως προαναφέρθηκε. :-) | όπου με τον τελεστή ()?: αποφασίζεται και αποθηκεύεται στην εικόνα αποτέλεσμα image_out στην θέση k (πρόκειται για ενδιάμεση μνήμη αποθήκευσης μιας γραμμής) είτε η image_in1 είτε η image_in2. Η απόφαση λαμβάνεται από το λογικό (i/ssize-k/ssize)%2 όπου i η τρέχουσα γραμμή η οποία περιέχεται στις ενδιάμεσες μνήμες των εικόνων, k η τρέχουσα στήλη (ως στοιχείο των ενδιάμεσων μνημών) και ssize το μέγεθος του τετράγωνου της σκακιέρας όπως προαναφέρθηκε. :-) |
| |
| |
| |
| |
| |
| |
| |
====Ασκήσεις==== | ====Ασκήσεις==== |