Προηγούμενος έλεγχος και από τις δύο πλευρές
Προηγούμενη αναθεώρηση
Επόμενη αναθεώρηση
|
Προηγούμενη αναθεώρηση
|
octave [2014/02/01 13:17] 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//. ;)** |
| |