Το θέμα κλειδώθηκε

Re: 2011-12 / ΓΕ3

Παρ Ιαν 20, 2012 10:03 pm

Έχω μια ερωτησούλα, η οποία δεν ξέρω αν μπορεί να απαντηθεί βέβαια, γιατί μάλλον είναι θέμα υλοποίησης του καθενός. Τέλοσπαντων, το πρόβλημα που έχω είναι στο να βρω ένα τρόπο να υπολογίζω την απόσταση ανάμεσα στα δύο αντικείμενα (εικόνα και μεγενθυντικό φακό). Οι μέθοδοι του TUIO getX() και getY(), απ' ό,τι διαπίστωσα, δε δουλεύουν για δύο αντικείμενα. Προσπαθώ να φτιάξω μια μέθοδο που να παίρνει δύο ορίσματα (δύο αντικείμενα συγκεκριμένα) και να υπολογίζει τη μεταξύ τους απόσταση. Χρησιμοποιώ τα getX και getY από δύο φορές (μία για το κάθε αντικείμενο) και τελικά αυτά που υπολογίζει ως συντεταγμένες, ανεξάρτητα από το πώς θα τα δηλώσω, αναφέρονται στο ίδιο αντικείμενο κάθε φορά, αλλά σε άλλο σημείο του. Καμιά ιδέα; (Αν βέβαια τα εξήγησα σωστά και μπορέσατε να καταλάβετε τι εννοώ... :oops: )

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 9:17 am

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

Από τις μεθόδους getX και getY ενός αντικειμένου παίρνεις τις συντεταγμένες του. Σωστά;
Αν λοιπόν καλέσεις τις ίδιες μεθόδους για κάποιο άλλο, δεύτερο, αντικείμενο, παίρνεις και τις συντεταγμένες του άλλου αντικειμένου. Επειδή όλα γίνονται σ’ ένα επίπεδο, απλά υπολογίζεις την (Ευκλείδεια) απόστασή τους. Αν θυμάμαι καλά d=sqrt((x1-x2)^2 + (y1-y2)^2).

Για να το κάνω ακόμη πιο απλό, αν a και b τα δύο αντικείμενα (TUIO), τότε d=sqrt((a.getX()-b.getX())^2 + (a.getY()-b.getY())^2).

Simple as that. Δεν καταλαβαίνω που μπορεί να μπλέχτηκες. Και φυσικά δεν νομίζω ότι χρειάζεται να κάνεις κάποια μέθοδο ή κάποια συνάρτηση για μία γραμμή κώδικα. Αν και πάλι, αυτό το τελευταίο, είναι θέμα υλοποίησης.

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 9:52 am

Στο 2γ ζητά ψευδοκώδικα της εφαρμογής με αναφορά σε δομές δεδομένων (όπως είχε πει ο ΣΕΠ στην ΟΣΣ).

Σε ποιο επίπεδο σκέφτεστε να περιγράψετε στο 2γ τον ψευδοκώδικα της προτεινόμενης εφαρμογής;

Α) Περιγραφή λειτουργιών - κλήση μεθόδων (π.χ. Υπολόγισε Περιοχές )
ή
Β) Αναλυτικά με χρήση εντολών (π.χ. Για ι 1 έως 10 ... Τέλος_Επανάληψης)

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 10:02 am

galatisp έγραψε:Στο 2γ ζητά ψευδοκώδικα της εφαρμογής με αναφορά σε δομές δεδομένων (όπως είχε πει ο ΣΕΠ στην ΟΣΣ).
...

Παναγιώτη προφανώς αναφέρεσαι στο 1Γ και όχι στο 2Γ. Σωστά;

Εάν ναι, εγώ προσωπικά δεν έδωσα ιδιαίτερη βαρύτητα στο 1Γ και έδωσα μόνο ένα διάγραμμα ροής (flow chart) – τίποτε περισσότερο. Προτίμησα να ασχοληθώ περισσότερο με το 2Γ, δεδομένου ότι δίνει τις ίδιες μονάδες και ήταν περισσότερο του χεριού μου, αλλά λαμβάνοντας υπόψη ότι και όλα τέλεια να είναι ο βαθμός θα είναι 10 και όχι 11.

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 1:04 pm

andreas έγραψε:Για να το κάνω ακόμη πιο απλό, αν a και b τα δύο αντικείμενα (TUIO), τότε d=sqrt((a.getX()-b.getX())^2 + (a.getY()-b.getY())^2).

Simple as that. Δεν καταλαβαίνω που μπορεί να μπλέχτηκες. Και φυσικά δεν νομίζω ότι χρειάζεται να κάνεις κάποια μέθοδο ή κάποια συνάρτηση για μία γραμμή κώδικα. Αν και πάλι, αυτό το τελευταίο, είναι θέμα υλοποίησης.

Ούτε εγώ καταλαβαίνω γιατί τόσα προβλήματα. Η πρώτη μου σκέψη είναι αυτή ακριβώς που περιγράφεις (μια γραμμή κώδικα μέσα σε μια άλλη μέθοδο), αλλά όταν είδα ότι έδινε αψυχολόγητα αποτελέσματα, έκανα ενός είδους "debugging", σπάζοντάς τα σε μεθόδους, για να δω που γίνεται το λάθος. Ε, σ' αυτό με τα getX(), getY() γινόταν αυτό που περιέγραψα παραπάνω. Όπως και να το διατύπωσα, μέσα στην ίδια μέθοδο έδινα αλλοπρόσαλες συντεταγμένες (τουλάχιστον για το δεύτερο αντικείμενο). Τελικά το έλυσα βέβαια, με κάπως άκομψο τρόπο, αλλά δεν άντεχα άλλο. Μου κάνει εντύπωση πάντως που σε σένα (και ενδεχομένως και σε άλλους), δούλεψε με αυτό τον τρόπο.

Σημείωση: Αυτό που παρατήρησα είναι ότι τα getX(), getY() δεν επιστρέφουν τις συντεταγμένες σε μονάδες pixel, όπως έχουμε συνηθίσει μέχρι τώρα στο Processing, το οποίο ήταν κι αυτό ένα πρόβλημα στην υλοποίηση της ιδέας μου...

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 1:18 pm

Wazka έγραψε:...
Μου κάνει εντύπωση πάντως που σε σένα (και ενδεχομένως και σε άλλους), δούλεψε με αυτό τον τρόπο.

Σημείωση: Αυτό που παρατήρησα είναι ότι τα getX(), getY() δεν επιστρέφουν τις συντεταγμένες σε μονάδες pixel, όπως έχουμε συνηθίσει μέχρι τώρα στο Processing, το οποίο ήταν κι αυτό ένα πρόβλημα στην υλοποίηση της ιδέας μου...

Κατ’ αρχήν εγώ δεν το υλοποίησα με τον τρόπο που περιέγραψα παραπάνω.

Σε κάθε περίπτωση όμως, αν δεις το documentation του TUIO library, θα διαπιστώσεις ότι οι getX & getY επιστρέφουν έναν αριθμό α, τέτοιον ώστε 0<α<1. 0 σημαίνει τέρμα αριστερά ή πάνω, και 1 σημαίνει τέρμα δεξιά ή κάτω – αν τα θυμάμαι καλά γιατί πάνε πολλές μέρες από τότε. Και αυτό είναι λογικό, διότι η κάμερα έχει ένα οπτικό πεδίο a*b pixel, ενώ το παράθυρό σου έχει μία ανάλυση c*d pixel, η οποία από υλοποίηση σε υλοποίηση, αν μην πω από εκτέλεση σε εκτέλεση, αλλάζει. Επίσης αν θυμάμαι καλά, υπάρχουν κάποιες screenX και screenY που κάνουν αυτόματα την μετατροπή σε pixel – αν δεν θέλεις να μπλέξεις με τις getX και getY. Γενικώς πάντως υπάρχουν πάρα πολλές (βοηθητικές) μέθοδοι, τόσες που δυσκολεύεσαι να διαλέξεις τι θα σ’ εξυπηρετήσει καλύτερα. Υποψιάζομαι όμως ότι δεν μπήκες στον κόπο να δεις το documentation καθόλου. Αν εξακολουθείς να έχεις προβλήματα μη ψάχνεις στα τυφλά – ρίξε μια ματιά και κάτι θα σου κάνει κλικ.

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 1:28 pm

Έψαξα για documentation και το μόνο που βρήκα ήταν αυτό: http://www.tuio.org/api/cpp/main.html, στο οποίο όμως δε βρήκα αυτό που λες για τις τιμές της getX() και getY(). Τελικά ναι, χρησιμοποίησα τις getScreenX(), getScreenY(), γιατί ήταν ο μόνος τρόπος να γίνει αυτό που είχα στο μυαλό μου. Επίσης, υπάρχει η getDistance, αλλά και πάλι, βάσει αυτών που εξήγησα προηγουμένως (ότι τα getX(), getY() είχαν πρόβλημα για 2 αντικείμενα), πάλι δεν είχα καλά αποτελέσματα. Τέλοσπαντων, δεν έχω πετύχει το τέλειο (προφανώς), αλλά δε σκοπεύω να ασχοληθώ άλλο. Θέλω να κάτσω να γράψω και λίγο τα θεωρητικά τώρα, γιατί έχουν κι αυτά λίγο ψάξιμο και μια κάποια δυσκολία, όπως φάνηκε από τις απορίες στην ΟΣΣ.

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 1:30 pm

Wazka έγραψε:Περίπου. Το φίλτρο επεξεργασίας πρέπει να αντιστοιχεί κι αυτό σε κάποιο fiducial, το οποίο όταν εμφανίζεται στην κάμερα, να το αναγνωρίζει το πρόγραμμα και να εφαρμόζει το φίλτρο στην εικόνα.



Wazka έγραψε:Έχω μια ερωτησούλα, η οποία δεν ξέρω αν μπορεί να απαντηθεί βέβαια, γιατί μάλλον είναι θέμα υλοποίησης του καθενός. Τέλοσπαντων, το πρόβλημα που έχω είναι στο να βρω ένα τρόπο να υπολογίζω την απόσταση ανάμεσα στα δύο αντικείμενα (εικόνα και μεγενθυντικό φακό). Οι μέθοδοι του TUIO getX() και getY(), απ' ό,τι διαπίστωσα, δε δουλεύουν για δύο αντικείμενα. Προσπαθώ να φτιάξω μια μέθοδο που να παίρνει δύο ορίσματα (δύο αντικείμενα συγκεκριμένα) και να υπολογίζει τη μεταξύ τους απόσταση. Χρησιμοποιώ τα getX και getY από δύο φορές (μία για το κάθε αντικείμενο) και τελικά αυτά που υπολογίζει ως συντεταγμένες, ανεξάρτητα από το πώς θα τα δηλώσω, αναφέρονται στο ίδιο αντικείμενο κάθε φορά, αλλά σε άλλο σημείο του. Καμιά ιδέα; (Αν βέβαια τα εξήγησα σωστά και μπορέσατε να καταλάβετε τι εννοώ... :oops: )



Ευχαριστω,βρισκομαι σε καλο δρομο πλεον. Δεν καταλαβαινω ομως γιατι μας χρειαζεται η αποσταση αναμεσα σε 2 αντικειμενα για την οποια ρωτας...

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

κατασταση 1 ) Εικονα+ φιλτρο μεγεθυνησης
κατασταση 2) Εικονα + Φιλτρο αλλαγης φωτεινοτητας

?

Ευχαριστω και παλι και σορρυ για τις πολλες ερωτησεις, αλλα αν και ημουνα στην ΟΣΣ , δεν ειχα κανει προεργασια στα fiducials οποτε δεν καταλαβα τιποτα απο οσα ισως εξηγηθηκαν εκει~

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 1:49 pm

Εγώ έφτιαξα ένα φίλτρο μόνο (κι αυτό με δυσκολία :oops: ), οπότε αυτό που σκοπεύω να στείλω είναι η αναγνώριση δύο εικόνων απλά και η αναγνώριση μιας εικόνας και του φίλτρου μεγέθυνσης, ίσως τη μία μεγεθύνοντας την εικόνα (γιατί είναι αρκετά κοντά) και την άλλη όχι (γιατί αντίστοιχα δεν είναι αρκετά κοντά).

Re: 2011-12 / ΓΕ3

Σάβ Ιαν 21, 2012 5:53 pm

Βάσω κοίτα αυτό. Ακόμα πιο απλό από αυτό που λέει ο Ανδρέας. Χρησιμοποιείς τις συντεταγμένες που σου δίνει το TUIO Object από τα getScreenX(width) και getScreenY(height) και 0 στην τρίτη διάσταση και έχεις αμέσως την απόσταση δύο σημείων σε 2D χώρο ;)

Παναγιώτη την απόσταση θέλουμε να την υπολογίσουμε, γιατί υποτίθεται ότι τα action fiducials θα πρέπει να εφαρμόζονται στα object fiducials που βρίσκονται κοντά τους. Επίσης οι δύο καταστάσεις που λέει, υποθέτω ότι εννοεί ότι πρέπει να δείξουμε screenshot πριν την εφαρμογή του action fiducial και μετά (πριν και μετά την μεγέθυνση δηλαδή).

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

Τέλος, εγώ σκέφτομαι να μην απαντήσω καθόλου το 1Β. Έχω δοκιμάσει την κάμερα μου σε 4 διαφορετικά συστήματα και με χρήση της JMyron τρώω μπλε οθόνη λόγω drivers της κάμερας. 10 μονάδες για την ψυχική μου υγεία μπορώ να τις θυσιάσω :P
Βέβαια ίσως την κάνω με OpenCV, αλλά τέτοια ερωτήματα δεν μου προκαλούν καθόλου ενδιαφέρον.
Το θέμα κλειδώθηκε