| Προηγούμενος έλεγχος και από τις δύο πλευρές
Προηγούμενη αναθεώρηση
Επόμενη αναθεώρηση | Προηγούμενη αναθεώρηση | 
                        
                | octave [2014/02/01 13:11] chiossif
 | octave [2021/01/30 13:59] (τρέχουσα) 62.210.151.70 παλαιότερη έκδοση επαναφέρθηκε (2014/01/29 10:01)
 | 
        
| c =  8 - 1i | c =  8 - 1i | 
| Για τις συναρτήσεις σε μιγαδικούς αριθμούς δείτε περισσότερα [[http://www.gnu.org/software/octave/doc/interpreter/Complex-Arithmetic.html|εδώ]] | Για τις συναρτήσεις σε μιγαδικούς αριθμούς δείτε περισσότερα [[http://www.gnu.org/software/octave/doc/interpreter/Complex-Arithmetic.html|εδώ]] | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
| 2    2 | 2    2 | 
| 12   12 | 12   12 | 
| Υποστηρίζονται οι πράξεις +,-,* ως πολλαπλασιασμός πινάκων, ανάλογα η ύψωση σε δύναμη ^, ο ανάστροφος ' και .* ως βαθμωτός πολλαπλασιασμός, / και ./ αντίστοιχα και \ και .\ ως αριστερή διαίρεση: | Υποστηρίζονται οι πράξεις +,-,* ως πολλαπλασιασμός πινάκων και .* ως βαθμωτός πολλαπλασιασμός, / και ./ αντίστοιχα και \ και .\ ως αριστερή διαίρεση: | 
| octave:17> F=A.\B | octave:17> F=A.\B | 
| F = | F = | 
| 3 | 3 | 
| για την πρώτη στήλη. | για την πρώτη στήλη. | 
| Τι σημαίνει όμως το [[https://www.gnu.org/software/octave/doc/interpreter/Ranges.html|εύρος τιμών]]; Το εύρος ορίζεται ως αρχή:βήμα:τέλος έτσι: | Τι σημαίνει όμως το [https://www.gnu.org/software/octave/doc/interpreter/Ranges.html|εύρος τιμών]; Το εύρος ορίζεται ως αρχή:βήμα:τέλος έτσι: | 
| octave:30> 1:3:10 | octave:30> 1:3:10 | 
| ans = | ans = | 
|  |  | 
|  |  | 
|  | ======Βιβλιοθήκη επεξεργασίας εικόνας====== | 
|  | Ναι... υπάρχει και είναι [[http://octave.sourceforge.net/image/ | εδώ]]. Εγκαταστήστε την και ξεκινάμε. | 
|  | Κατ'αρχήν και πάντα παραδοσιακά κατεβάζουμε στον υπολογιστή μας την [[https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png| Λέννα]]. | 
|  |  | 
|  | Με την ευκαιρία [[http://www.lenna.org/full/len_full.html|εδώ]] ολόκληρη η Λέννα για περισσότερες δοκιμές και [[http://www.cs.cmu.edu/~chuck/lennapg/|εδώ]] η ιστορία της ;-) | 
|  |  | 
|  |  | 
|  |  | 
| ======Βιβλιοθήκη επεξεργασίας εικόνας====== |  | 
| Ναι... υπάρχει και είναι [[http://octave.sourceforge.net/image/ | εδώ]]. Εγκαταστήστε την για να μπορείτε να την χρησιμοποιήσετε. |  | 
| Κατ'αρχήν και πάντα παραδοσιακά κατεβάζουμε στον υπολογιστή μας την [[https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png| Λέννα]]. ( Με την ευκαιρία [[http://www.lenna.org/full/len_hires.html|εδώ]] ολόκληρη η Λέννα για περισσότερες δοκιμές και [[http://www.cs.cmu.edu/~chuck/lennapg/|εδώ]] η ιστορία της ;-) ) |  | 
|  |  | 
| Ξεκινάμε... | Ξεκινάμε... | 
|  | (to be written - curently starring at [[http://www.lenna.org/full/len_full.html| Lenna's portait]] ;-) ) | 
| Στην octave όλες οι εικόνες αναπαριστώνται ως πίνακες ακεραίων ή πραγματικών αριθμών δύο ή τριών διαστάσεων. Εάν η εικόνα μας είναι RGB (ή με άλλα περισσότερα του ενός κανάλια) τότε έχουμε έναν πίνακα τριών διαστάσεων: //γραμμές//x//στήλες//x//κανάλια// όπου //κανάλια//=3 για την περίπτωση RGB. Εάν η εικόνα μας είναι ασπρόμαυρη (bitmap δηλαδή μόνο άσπρο=1 και μαύρο=0) ή τόνων του γκρίζου (greyscale δηλαδή όλα τα γκρίζα από 0 μαύρο έως 255 άσπρο για εικόνα 8 μπιτ) τότε έχει δύο διαστάσεις: //γραμμές//x//στήλες//. Ας ξεκινήσουμε με την [[https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png| Λέννα]] αποθηκεύοντάς την στον χώρο εργασίας μας και ας δούμε τις κυριότερες εντολές: |  | 
|  |  | 
| octave:1> Lenna_RGB=imread('Lenna.png'); |  | 
| warning: your version of GraphicsMagick limits images to 16 bits per pixel |  | 
| octave:2> Lenna_R=Lenna_RGB(:,:,1); |  | 
| octave:3> Lenna_G=Lenna_RGB(:,:,2); |  | 
| octave:4> Lenna_B=Lenna_RGB(:,:,3); |  | 
| octave:5> imshow(Lenna_RGB); |  | 
| radeon: Acquired access to Hyper-Z. |  | 
| Στην εντολή 1 διαβάσαμε με την [[http://octave.sourceforge.net/octave/function/imread.html|imread]] την Λέννα ως ένα πίνακα τριών διστάσεων διότι είναι έγχρωμη εικόνα RGB. Στην συνέχεια αποκόψαμε κάθε κανάλι σε χωριστούς πίνακες: έναν για το κόκκινο R, έναν για το πράσινο G και έναν για το μπλε B. Στην συνέχεια με την εντολή [[http://octave.sourceforge.net/octave/function/imshow.html |imshow]] εμφανίσαμε την εικόνα της Λέννας σε παράθυρο απεικόνισης με τίτλο Figure 1. (Μερικές φορές όπως εδώ εμφανίζονται ενημερωτικά μηνύματα για την χρήση του υλικού όπως εδώ για τα γραφικά ή άλλες προειδοποιήσεις όπως ίσως δούμε παρακάτω.) |  | 
|  |  | 
| Για να κάνουμε χρήση της βιβλιοθήκης [[http://octave.sourceforge.net/image/ |octave-image]] θα πρέπει να τη ενεργοποιήσουμε στο περιβάλλον μας με την εντολή [[http://octave.sourceforge.net/octave/function/pkg.html|pkg]]: |  | 
|  |  | 
| octave:6> pkg load image |  | 
| warning: function /usr/share/octave/packages/specfun-1.1.0/ellipke.m shadows a core library function |  | 
| warning: function /usr/share/octave/packages/specfun-1.1.0/expint.m shadows a core library function |  | 
| warning: function /usr/share/octave/packages/specfun-1.1.0/erfcinv.m shadows a built-in function |  | 
| Οι ειδοποιήσεις αυτές μας ενημερώνουν ότι στην βιβλιοθήκη που μόλις ενεργοποιήσαμε περιέχονται συναρτήσεις με ονόματα ίδια με ήδη δηλωμένες συναρτήσεις. Στην octave ισχύει η τελευταία ενεργοποιημένη συνάρτηση και έτσι «σκιάζονται» όλες οι προγενέστερα ενεργοποιημένες συνώνυμές της. |  | 
| octave:7> imhist(Lenna_G); |  | 
| octave:8> imshow(Lenna_G,[3 222]); |  | 
| Με την εντολή [[http://octave.sourceforge.net/image/function/imhist.html|imhist]] βλέπουμε το ιστόγραμμα του πράσινου καναλιού που απομονώσαμε προηγουμένως ενώ με την imshow που ακολουθεί το εμφανίζουμε με γραμμική ενίσχυση των τόνων του από το 3 έως το 222. |  | 
| octave:9> Lenna_GH=histeq(Lenna_G); |  | 
| octave:10> imshow(Lenna_G); |  | 
| octave:11> figure |  | 
| octave:12> imshow(Lenna_GH); |  | 
| Με την εντολή [[http://octave.sourceforge.net/image/function/histeq.html|histeq]] ισοδυναμοποιούμε το ιστόγραμμα της εικόνας Lenna_G στην νέα εικόνα Lenna_GH. Εμφανίζουμε την Lenna_G, με την εντολή [[http://www.gnu.org/software/octave/doc/interpreter/Multiple-Plot-Windows.html|figure]] δημιουργούμε ένα νέο παράθυρο απεικόνισης και εμφανίζουμε την εικόνα Lenna_GH. Έτσι μπορούμε να συγκρίνουμε τις εικόνες και με ανάλογο τρόπο και την εντολή imhist τα ιστογράμματά τους. |  | 
| Καλά, έχει ισοδυναμοποίηση και δεν έχει γραμμική ενίσχυση με αποκοπή στα άκρα; Φυσικά και έχει: |  | 
|  |  | 
| Φίλτρα; Απ' αυτά κι αν έχει. Κι ας αρχίσουμε με το φίλτρο διαμέσου [[http://octave.sourceforge.net/image/function/medfilt2.html|medfilt2]]: |  | 
| octave:13> Lenna_GM=medfilt2(Lenna_G,[5 5]); |  | 
| octave:14> figure(2),imshow(Lenna_GM) |  | 
| όπου 5x5 είναι η διάσταση του παραθύρου εφαρμογής. |  | 
| Ας πάμε στην συνάρτηση [[http://octave.sourceforge.net/image/function/fspecial.html|fspecial]] η οποία επιστρέφει ένα προκαθορισμένο φίλτρο ενώ η [[http://octave.sourceforge.net/image/function/imfilter.html|imfilter]] το εφαρμόζει. Δείτε και θα καταλάβετε: |  | 
| octave:15> f=fspecial('sobel') |  | 
| octave:16> Lenna_Sobel=sqrt(imfilter2(,f).^2+imfilter2(,f').^2); |  | 
| octave:17> figure(2),imshow(histeq(Lenna_Sobel)) |  | 
|  |  | 
| Φτάνει.Πειστήκατε; Όσοι δεν πειστήκατε δείτε τις [[http://octave.sourceforge.net/image/overview.html|περιεχόμενες]] συναρτήσεις της βιβλιοθήκης image της octave και θα καταλάβετε. |  | 
| Δεν γράφω άλλα ;-) |  | 
|  |  | 
| ======Άλλες βιβλιοθήκες και πρόσθετο υλικό====== | ======Άλλες βιβλιοθήκες και πρόσθετο υλικό====== | 
|  |  | 
| ======Επίλογος; Όχι. Τώρα ξεκινάμε... ;-)====== | ======Επίλογος; Όχι. Τώρα ξεκινάμε... ;-)====== | 
|  |  | 
|  |  | 
| ======Μέτα την παράσταση====== | ======Μέτα την παράσταση====== | 
| Με όλα όσα αναφέρθηκαν παραπάνω, έχετε τη δυνατότητα να κάνετε οποιοδήποτε πρόγραμμα υπολογισμών της Σχολής μας και μάλιστα να είναι και αρκετά σταθερό και φιλικό προς τον χρήστη. | Με όλα όσα αναφέρθηκαν παραπάνω, έχετε τη δυνατότητα να κάνετε οποιοδήποτε πρόγραμμα υπολογισμών της Σχολής μας και μάλιστα να είναι και αρκετά σταθερό και φιλικό προς τον χρήστη. | 
|  |  | 
| Επίσης να σημειωθεί ότι αυτό το wiki είναι //ελεύθερο// όπως και η GNU/Octave. Μπορεί ο καθένας να έρθει να συμπληρώσει πράγματα, να διαγράψει ή να τροποποιήσει. Ο προσανατολισμός του είναι ερασιτεχνικός και κομμένος και ραμμένος στις απαιτήσεις τις σχολής μας. Στόχος του είναι να αποτελεί ένα πρακτικό εργαλείο και όχι να σας μάθει να προγραμματίζετε σαν επαγγελματίες. | Επίσης να σημειωθεί ότι αυτό το wiki είναι //ελεύθερο// όπως και η GNU/Octave. Μπορεί ο καθένας να έρθει να συμπληρώσει πράγματα, να διαγράψει ή να τροποποιήσει. Ο προσανατολισμός του είναι ερασιτεχνικός και κομμένος και ραμμένος στις απαιτήσεις τις σχολής μας. Στόχος του είναι να αποτελεί ένα πρακτικό εργαλείο και όχι να σας μάθει να προγραμματίζετε σαν επαγγελματίες. | 
|  |  | 
| Επιπρόσθετα θα σας ενθαρρύναμε ότι πρόγραμμα γράφετε να είναι ανοιχτό και ελεύθερο προς όλους. Να μπορεί δηλαδή ο καθένας να διαβάσει τον κώδικα του και να τον τροποποιήσει ανάλογα με τις ανάγκες του. | Επιπρόσθετα θα σας ενθαρρύναμε ότι πρόγραμμα γράφετε να είναι ανοιχτό και ελεύθερο προς όλους. Να μπορεί δηλαδή ο καθένας να διαβάσει τον κώδικα του και να τον τροποποιήσει ανάλογα με τις ανάγκες του. | 
|  |  | 
| Μεταφράζοντας τα 4 στοιχεία τα οποία πρέπει να έχει ένα πρόγραμμα για να θεωρείται ελεύθερο (όλη την φιλοσοφία μπορείτε να την βρείτε εδώ : http://www.gnu.org/philosophy/free-sw.html) : | Μεταφράζοντας τα 4 στοιχεία τα οποία πρέπει να έχει ένα πρόγραμμα για να θεωρείται ελεύθερο (όλη την φιλοσοφία μπορείτε να την βρείτε εδώ : http://www.gnu.org/philosophy/free-sw.html) : | 
| => Πρέπει να παρέχει την ελευθερία σε τρίτους να το εκτελούν για οποιοδήποτε λόγο. | => Πρέπει να παρέχει την ελευθερία σε τρίτους να το εκτελούν για οποιοδήποτε λόγο. | 
| => Πρέπει να παρέχει την ελευθερία σε τρίτους να διανέμουν αντίτυπα του προγράμματος για να βοηθήσουν τον πλησίον τους. | => Πρέπει να παρέχει την ελευθερία σε τρίτους να διανέμουν αντίτυπα του προγράμματος για να βοηθήσουν τον πλησίον τους. | 
| => Πρέπει να παρέχει την ελευθερία σε τρίτους να βελτιώνουν το πρόγραμμα και να δημοσιεύουν τις βελτιώσεις στο ευρύ κοινό, ώστε να επωφελείται από αυτές ολόκληρη η κοινότητα. Η ελεύθερη πρόσβαση στον κώδικα είναι προαπαιτούμενη. | => Πρέπει να παρέχει την ελευθερία σε τρίτους να βελτιώνουν το πρόγραμμα και να δημοσιεύουν τις βελτιώσεις στο ευρύ κοινό, ώστε να επωφελείται από αυτές ολόκληρη η κοινότητα. Η ελεύθερη πρόσβαση στον κώδικα είναι προαπαιτούμενη. | 
|  |  | 
| **Τέλος ας σημειωθεί ότι ο όρος //free software// πρέπει να αντιλαμβάνεται ως //freedom of speech// και όχι ως //free beer//. ;)** | **Τέλος ας σημειωθεί ότι ο όρος //free software// πρέπει να αντιλαμβάνεται ως //freedom of speech// και όχι ως //free beer//. ;)** | 
|  |  |