in

StudentGuru

Ξυπνήστε τον Guru μέσα σας!

StudentGuru Διαγωνισμός

μοιρες μεταξυ 2 εικονων

Last post 01-02-2010 14:22 by ntouros. 11 replies.
Page 1 of 1 (12 items)
Sort Posts: Previous Next
  • 31-01-2010 20:15

    • ntouros
    • Top 75 Contributor
    • Joined on 03-12-2009
    • Posts 16
    • Points 215

    μοιρες μεταξυ 2 εικονων

    γεια χαρα

    εχω 2 παρομοιες εικονες  και η μια ειναι στραμμενη κατα χ μοιρες σε σχεση με την αλλη πως θα μπορουσα να μετρησω το χ ?

    χρησιμοποιω  surf descriptor για την περιγραφη της καθε εικονας θα μπορουσα με αυτον η καπως αλλιως να βγαλω τις μοιρες που εχου διαφορα οι 2 εικονες ?

    ευχαριστω 

    προγραμματιζω σε c#

  • 01-02-2010 03:37 In reply to

    • jupiter
    • Top 10 Contributor
      Male
    • Joined on 28-02-2007
    • Around
    • Posts 280
    • Points 3.890

    Απ: μοιρες μεταξυ 2 εικονων

     Καλησπέρα..Δεν έχω δει το SURF και δεν ξέρω τί δυνατότητες προσφέρει αλλά αν δεν έχει κάτι έτοιμο, τότε θες κάποια δουλειά για να κάνεις αυτό που θες! Μια λύση θα μπορούσε να είναι η ακόλουθη (όχι η βέλτιση αλλά εύκολα υλοποιήσιμη):

    Οι εικόνα που είναι rotated εξακολουθεί προφανώς να είναι ορθογώνια. Γύρω γύρω από την πραγματική εικόνα (για να γεμίσει το ορθογώνιο) θα είναι filled με κάποιο χρώμα (μαύρο λογικά..?). Θα μπορούσες να την κάνεις rotate μοίρα μοίρα μέχρι να ισιώσει και μετά απλά να συγκρίνεις τις 2 φωτογραφίες pixel-pixel. Για να ελεγξεις αν ίσιωσε μετά απο κάθε rotate μπορείς να κανεις το εξής:

    Βρες το πρώτο (πάνω αριστερά pixel) που είναι non-black (ή ότι έχει γύρω γύρω) και κοίτα για όλη την σειρά στην οποία βρίσκεται αν τα pixel είναι και αυτά non-black και αν τα pixel όλης της παραπάνω σειράς είναι black. Τότε θα ξέρεις ότι ευθυγραμμίστηκες. Προφανώς εδώ υπάρχει θέμα αν τα pixel της 1ης σειράς της εικόνας είναι μαύρα (ιδιαίτερα το πρώτο) αλλά μπορείς να πάρεις στατιστικά αν ισχυεί αυτό που σου είπα για κάποιο μεγάλο ποσοστό (ιδιαίτερα σε ενδιαφέρουν οι άκρες). Και θέλει και κάποια προσοχή προς τα ποιά μεριά κάνεις rotate κλπ..

    Όχι ο πιο γρήγορος τρόπος όπως σου είπα αλλά υλοποιείται σχετικά εύκολα... Αν δεις ότι σε καθυστερεί ή Bitmap.GetPixel() μπορείς να παίξεις με unsafe και pointers για να προχωρήσεις μέσα στην εικόνα. Μπορείς να δεις αυτό το post στο blog μου για το πώς να το κάνεις: http://www.studentguru.gr/blogs/jupiter/archive/2009/12/20/creating-an-image-processing-library-with-c-part-2.aspx

    Blog: http://www.studentguru.gr/blogs/jupiter

    Jupiter's Blog


    Twitter: http://twitter.com/mzervos
    Email & MSN: mzervos [AT] gmail [DOT] com
  • 01-02-2010 03:44 In reply to

    • jupiter
    • Top 10 Contributor
      Male
    • Joined on 28-02-2007
    • Around
    • Posts 280
    • Points 3.890

    Απ: μοιρες μεταξυ 2 εικονων

    Και μπορείς να ξεχάσες όλα αυτά τα περι στροφής μοίρα-μοίρα γιατί μου ήρθε μια καλύτερη ιδέα με το που πάτησα το submit Stick out tongue

    Έστω ότι έχει στρίψει η φωτογραφία κατά την φορά των δεικτών του ρολογιού.

    Βρες πάλι το πάνω αριστερό pixel και μετά βρες  το πιο δεξί και πάνω pixel. Ουσιαστικά την πάνω δεξιά γωνία.. Πάρε την ευκλείδια απόσταση τους σε κάθε άξονα ξεχωριστά και θα έχεις ένα ορθογώνιο τρίγωνο που θα ξέρεις τα μήκη των 2 κάθετων πλευρών άρα την εφαπτομένη της γωνίας σου, άρα και την γωνία Wink

    Αυτό προυποθέτει ότι τα 2 pixel (πάνω αριστερά και πάνω δεξιά) δεν είναι ίδιο χρώμα με το γύρω γύρω αλλά φαντάζομαι ότι η πιθανότητα να είναι ακριβώς το ίδιο RGB είναι αρκετά μικρή..

    Blog: http://www.studentguru.gr/blogs/jupiter

    Jupiter's Blog


    Twitter: http://twitter.com/mzervos
    Email & MSN: mzervos [AT] gmail [DOT] com
  • 01-02-2010 09:40 In reply to

    Απ: μοιρες μεταξυ 2 εικονων

    Ο αλγόριθμός σου Jupiter δεν θα αποτύγχανε σε αυτήν την περίπτωση;Δεν πρέπει πρώτα να εξασφαλίσεις ότι το τμήμα που θα επιλέξεις δεν είναι συμμετρικό;

  • 01-02-2010 11:57 In reply to

    • jupiter
    • Top 10 Contributor
      Male
    • Joined on 28-02-2007
    • Around
    • Posts 280
    • Points 3.890

    Απ: μοιρες μεταξυ 2 εικονων

    Χαχα και το σκεφτόμουνα μόλις τώρα που σηκώθηκα απ'το κρεβάτι.. Ναι, αλλά μπορείς αν δεις ότι δεν είναι ίδια τα pixel όταν αρχίσεις να τα συγκρίνεις να κάνεις και μια σύγκριση με τα pixel το πρώτο της μιας με το τελευταίο της άλλης, το 2ο με το πρωτελευταίο κλπ.. Αν το πετύχεις έτσι μπορείς να την γυρίσεις 180 μοίρες.

    Αν επίσης δεις μετά το αρχικό (αυτό που είπα στο παραπάνω post) rotation ότι το πλάτος της είναι ίσο με το ύψος της άλλης, τότε κάνεις ένα rotate 90 και συνεχίζεις από εκεί (μπορεί να χρειαστεί να κάνεις και αυτό που περιέγραψα από πάνω μετά)

    Blog: http://www.studentguru.gr/blogs/jupiter

    Jupiter's Blog


    Twitter: http://twitter.com/mzervos
    Email & MSN: mzervos [AT] gmail [DOT] com
  • 01-02-2010 12:09 In reply to

    Απ: μοιρες μεταξυ 2 εικονων

    Στην ουσία προτείνεις έναν αλγόριθμο που εξαρτάται από την εικόνα που θα του εισάγεις.Και πάλι θα σου βρω παραδείγματα συμμετρίας σε έναν άλλο άξονα που θα σου δημιουργήσει προβλήματα σε άλλη γωνία.Το θέμα είναι πρώτα να βρεις ένα τμήμα της εικόνας που να λειτουργεί ως κλειδί (δηλαδή δεν είναι συμμετρικό με ένα άλλο αντίστοιχου μεγέθους) και να κάνεις αντίστοιχη διαδικασία για την δεύτερη εικόνα.Φυσικά θα φροντίσεις αυτό το μη συμμετρικό σχήμα να είναι το μικρότερο δυνατό ώστε να μη χρειαστούν πολλές συγκρίσεις.Σε κάθε pixel αυτού του τμήματος θα πρέπει να σιγουρευτείς ότι με την ίδια μήτρα περιστροφής επαληθεύονται τα αποτελέσματα.

    Τα γράφω λίγο μπακάλικα αλλά νομίζω έδωσα κάποιες ιδέες για έναν πιο αξιόπιστο αλγόριθμο.

  • 01-02-2010 12:26 In reply to

    • jupiter
    • Top 10 Contributor
      Male
    • Joined on 28-02-2007
    • Around
    • Posts 280
    • Points 3.890

    Απ: μοιρες μεταξυ 2 εικονων

    *Νομίζω* ότι αν βάλεις αυτά του τελευταίου post τότε είσαι οκ.. Για στείλε κανένα αντιπαράδειγμα αν έχεις σκεφτεί κάτι! Σίγουρα όπως είπα απ'την αρχή θα υπάρχει καλύτερος αλγόριθμος αλλά αυτός είναι αρκετά εύκολος στην υλοποιήση και σχετικά αποδοτικός (O(w*h)).
    Blog: http://www.studentguru.gr/blogs/jupiter

    Jupiter's Blog


    Twitter: http://twitter.com/mzervos
    Email & MSN: mzervos [AT] gmail [DOT] com
  • 01-02-2010 13:16 In reply to

    Απ: μοιρες μεταξυ 2 εικονων

     Εγώ από την άλλη νομίζω ότι ο δημιουργός του thread θα ήταν καλό να μας εξηγήσει τι εννοεί με το "περιστροφή εικόνας".Μιλά για περιστροφή ολόκληρης της εικόνας (οπότε τα vertices που την απρτίζουν θα έχουν διαφορετικές συντεταγμένες) ή για απεικόνιση ενός αντικειμένου σε δύο εικόνες όπου στην δεύτερη έχει περιστραφεί σε σχέση με την πρώτη;Διότι στην πρώτη περίπτωση απλά συγκρίνεις τα vertices που σχηματίζουν τις εικόνες (τις γωνίες κοινώς) και εύκολα μπορεί να βρει την γωνία που σχηματίζουν με τα vertices της αρχικής εικόνας ελέγχοντας όλα τα pixels ένα προς ένα,αντί για μία μόνο σειρά.Πιστεύω οι συγκρίσεις θα είναι 4*w*h στο μέγιστο (τα μαθηματικά πάντα με εκδικούνται για την ωφελιμιστική σχέση που έχουν μεταξύ τους οπότε μπορεί να σφάλω εδώ).

    Εγώ υπέθεσα εξ'αρχής ότι θέλουμε να βρούμε τη γωνία περιστροφής ενός αντικειμένου,γι'αυτό και ζητώ τη διευκρίνιση πριν μπούμε στα βαθιά (και πριν εκτεθεί η ημιμάθεια μου στα μαθηματικά ακόμα περισσότερο Stick out tongue ).

  • 01-02-2010 13:20 In reply to

    • ntouros
    • Top 75 Contributor
    • Joined on 03-12-2009
    • Posts 16
    • Points 215

    Απ: μοιρες μεταξυ 2 εικονων

    ναι πρεπει να διευκρινισω

    παιρνουμε 2 εικονες με μια webcam του ιδιου αντικειμενου απλα στην μια εικονα το αντικειμενο  ειναι περιστραμενο κατα φ μοιρες σε σχεση με την αλλη εικονα 

    αρα ειναι αυτο που λες πρεπει να υπολογισουμε την γωνια που περιστραφικε το αντικειμενο.

  • 01-02-2010 13:46 In reply to

    • jupiter
    • Top 10 Contributor
      Male
    • Joined on 28-02-2007
    • Around
    • Posts 280
    • Points 3.890

    Απ: μοιρες μεταξυ 2 εικονων

    darklynx:

    Πιστεύω οι συγκρίσεις θα είναι 4*w*h στο μέγιστο (τα μαθηματικά πάντα με εκδικούνται για την ωφελιμιστική σχέση που έχουν μεταξύ τους οπότε μπορεί να σφάλω εδώ).

     

    Το 4*w*h ανήκει στην κλάσση O(w*h)

    (Αλλά είναι λιγότερες οι μέγιστες συγκρίσεις έτσι κ αλλιώς.. Αν φτάσεις μετά την μέση και βρεις το πρώτο διαφορετικό pixel τότε δεν υπάρχει λόγος να κοιτάξεις καν την κατ 180 μοίρες γυρισμένη. Αν είναι πιο πριν, θα σταματήσεις πριν το w*h/2 οπότε οι μέγιστες πρέπει να είναι 2*w*h)

    Αλλά πολύ το κάψαμε χωρίς λόγο απ'ότι φαίνεται γιατί θέλει κάτι άλλο Stick out tongue Αρκετά πιο πολύπλοκο...

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

    Blog: http://www.studentguru.gr/blogs/jupiter

    Jupiter's Blog


    Twitter: http://twitter.com/mzervos
    Email & MSN: mzervos [AT] gmail [DOT] com
  • 01-02-2010 14:02 In reply to

    Απ: μοιρες μεταξυ 2 εικονων

     Το θέμα είναι ότι ήδη διαθέτει τους surf descriptors οπότε με αυτούς μάλλον μπορεί να βγάλει άκρη.Αλλά για να δώσω μια απάντηση θα πρέπει να ξαναδιαβάσω για αυτούς (δεν τους έχω πολυχρησιμοποιήσει ως τώρα) πράγμα που προς το παρόν δεν έχω χρόνο να κάνω.Αν ο φίλος μας έχει υπομονή ίσως βρω μια λύση χωρίς να υπόσχομαι τίποτα.

  • 01-02-2010 14:22 In reply to

    • ntouros
    • Top 75 Contributor
    • Joined on 03-12-2009
    • Posts 16
    • Points 215

    Απ: μοιρες μεταξυ 2 εικονων

    ευχαριστω παιδες για τις απαντησεις αν εχετε χρονο και βρειτε κατι πειτε.

    darklynx ειπες οτι εχεις χρησιμοποησει ta surf να σε ρωτησω ξερεις αν γινεται και πως  να συγκρινω τους descriptor 2 εικονων και να μου επιστρεψει εναν αριθμο για το ποσο μοιαζουν οι εικονες ?

    πχ αν ειναι ιδιες οι εικονες να μου δωσει 0 η 1 αν μοιαζουν λιγο να μου δωσει καποιον αριθμο ειτε float  η int

    ευχαριστω και παλι 

Page 1 of 1 (12 items)
StudentGuru 2010
Powered by Community Server (Commercial Edition), by Telligent Systems
Που είναι το στυλο μου