diff --git a/Assignment_2/1.jpeg b/Assignment_2/1.jpeg new file mode 100644 index 0000000..b4bc008 Binary files /dev/null and b/Assignment_2/1.jpeg differ diff --git a/Assignment_2/2.jpeg b/Assignment_2/2.jpeg new file mode 100644 index 0000000..c859efd Binary files /dev/null and b/Assignment_2/2.jpeg differ diff --git a/Assignment_2/report/5.0.demo1.tex b/Assignment_2/report/5.0.demo1.tex index 7006131..25c67b9 100644 --- a/Assignment_2/report/5.0.demo1.tex +++ b/Assignment_2/report/5.0.demo1.tex @@ -2,11 +2,15 @@ Στη πρώτη σειρά πειραμάτων γίνεται παρουσίαση της λειτουργίας και των αποτελεσμάτων της συνάρτησης \texttt{mySpectralClustering}. Τα πειράματα εκτελούνται με κλήση του script \texttt{demo1} χωρίς ορίσματα. Το script εκτελεί μία σειρά από τρία πειράματα κατά τα οποία γίνεται κατάτμηση ενός δοσμένου γράφου συγγένειας (``\texttt{d1a}'') σε δύο, τρεις και τέσσερεις ομάδες (clusters) διαδοχικά. Τα αποτελέσματα φαίνονται παρακάτω. -Η έξοδος της συνάρτηση είναι ένα διάνυσμα (vector) με την ομάδα στην οποία ανήκει κάθε pixel της αρχικής εικόνας. Στα επόμενα πειράματα στα οποία οι διαστάσεις της αρχικής εικόνας είναι διαθέσιμες θα γίνεται πρώτα κατάλληλη μετατροπή του διανύσματος σε πίνακα με διαστάσεις ίδιες με αυτές της αρχικής εικόνας. Εδώ οι διαστάσεις δεν είναι γνωστές οπότε το βήμα αυτό παραλείπεται. Έπειτα πρέπει να αντιμετωπιστεί το πρόβλημα των τιμών του πίνακα, οι οποίες είναι οι φυσικοί $1, 2, 3,... ,k$ και αντιστοιχούν στην ομάδα που έχει ανατεθεί σε κάθε pixel. Για να γίνει απεικόνιση του πίνακα πρέπει οι τιμές αυτές να μεταφερθούν στο διάστημα $[0, 1]$, για το σκοπό αυτό εκτελείται διαίρεση των στοιχείων του πίνακα με τον αριθμό των ομάδων $k$. Έτσι προκύπτουν οι grayscale κατατμημένες εικόνες. +Η έξοδος της συνάρτηση είναι ένα διάνυσμα (vector) με την ομάδα στην οποία ανήκει κάθε pixel της αρχικής εικόνας. Στα επόμενα πειράματα στα οποία οι διαστάσεις της αρχικής εικόνας είναι διαθέσιμες θα γίνεται πρώτα κατάλληλη μετατροπή του διανύσματος σε πίνακα με διαστάσεις ίδιες με αυτές της αρχικής εικόνας. Εδώ οι διαστάσεις δεν είναι γνωστές οπότε το βήμα αυτό παραλείπεται. + +Έπειτα πρέπει να αντιμετωπιστεί το πρόβλημα των τιμών του πίνακα, οι οποίες είναι οι φυσικοί $1, 2, 3,... ,k$ και αντιστοιχούν στην ομάδα που έχει ανατεθεί σε κάθε pixel. Για να γίνει απεικόνιση του πίνακα πρέπει οι τιμές αυτές να μεταφερθούν στο διάστημα $[0, 1]$, για το σκοπό αυτό εκτελείται διαίρεση των στοιχείων του πίνακα με τον αριθμό των ομάδων $k$. Έτσι προκύπτουν οι grayscale κατατμημένες εικόνες. + +Σημειώνεται ότι το πραγματικό διάστημα τιμών που προκύπτει μετά τη διαίρεση είναι το $(0, 1]$, δηλαδή η τιμή $0$ δεν υπάρχει στους πίνακες, ενώ η τιμή $1$ υπάρχει (μάλιστα υπάρχει πάντα). Γεγονώς που εκμεταλλευόμαστε βάζοντας τις εικόνες σε μαύρο φόντο για καλύτερη απεικόνιση. \begin{figure}[H] \centering - \resizebox{\textwidth}{!}{ + \resizebox{.6\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo1_f1.pdf_tex}} } \caption{Κατάτμηση γράφου σε 2 ομάδες} @@ -14,7 +18,7 @@ \begin{figure}[H] \centering - \resizebox{\textwidth}{!}{ + \resizebox{.6\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo1_f2.pdf_tex}} } \caption{Κατάτμηση γράφου σε 3 ομάδες} @@ -22,7 +26,7 @@ \begin{figure}[H] \centering - \resizebox{\textwidth}{!}{ + \resizebox{.6\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo1_f3.pdf_tex}} } \caption{Κατάτμηση γράφου σε 4 ομάδες} diff --git a/Assignment_2/report/6.0.demo2.tex b/Assignment_2/report/6.0.demo2.tex index 8d2aa42..9fdfcfd 100644 --- a/Assignment_2/report/6.0.demo2.tex +++ b/Assignment_2/report/6.0.demo2.tex @@ -2,20 +2,21 @@ Στη δεύτερη σειρά πειραμάτων γίνεται παρουσίαση της λειτουργίας και των αποτελεσμάτων της συνάρτησης \texttt{mySpectralClustering} σε συνδυασμό με τη συνάρτηση \texttt{Image2Graph}. Τα πειράματα εκτελούνται με κλήση του script \texttt{demo2} χωρίς ορίσματα. Το script εκτελεί μία σειρά από έξι πειράματα κατά τα οποία γίνεται κατάτμηση δύο δοσμένων εικόνων (``\texttt{d2a}'' και ``\texttt{d2b}'') σε δύο, τρεις και τέσσερεις ομάδες (clusters) διαδοχικά. Τα αποτελέσματα φαίνονται και σχολιάζονται στη συνέχεια. -Στο πρώτο μέρος του script εκτελούνται τα πειράματα για την πρώτη εικόνα που δίνεται (``\texttt{d2a}''). Ο affinity matrix που προκύπτει απεικονίζεται γραφικά ώστε να γίνει εμφανής η δομή και η συμμετρία του. Τα αποτελέσματα της κατάτμησης φαίνονται παρακάτω. - \begin{figure}[H] \centering - \resizebox{.7\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e1_g.pdf_tex}} } \caption{Απεικόνιση affinity matrix πρώτης εικόνας (``\texttt{d2a}'')} + \label{d2a_g} \end{figure} +Στο πρώτο μέρος του script εκτελούνται τα πειράματα για την πρώτη εικόνα που δίνεται (``\texttt{d2a}''). Ο affinity matrix που προκύπτει απεικονίζεται γραφικά παραπάνω (\ref{d2a_g}) ώστε να γίνει εμφανής η δομή και η συμμετρία του. Τα αποτελέσματα της κατάτμησης φαίνονται παρακάτω. + \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e1_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2a}'')} @@ -23,7 +24,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e1_f2.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 2 ομάδες} @@ -33,7 +34,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e1_f3.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 3 ομάδες} @@ -41,7 +42,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e1_f4.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 4 ομάδες} @@ -50,20 +51,23 @@ Όπως φαίνεται στις εικόνες ο αλγόριθμος κάνει τέλεια κατάτμηση για τη περίπτωση των τριών ομάδων. Στη περίπτωση των δύο ομάδων η πράσινη και κόκκινη περιοχή κατατάσσονται στην ίδια ομάδα, ωστόσο αυτό μπορεί να αλλάξει ανάλογα με το σπόρο που θα δοθεί στην αρχή του script λόγω της τυχαιότητας που εισάγεται από τον αλγόριθμο K-Means. Τέλος στη περίπτωση των τεσσάρων ομάδων παρουσιάζεται ``θόρυβος'' στην ομαδοποίηση. -Στο δεύτερο μέρος του script εκτελούνται τα πειράματα για την δεύτερη εικόνα που δίνεται (``\texttt{d2b}''). Ο affinity matrix που προκύπτει απεικονίζεται και πάλι γραφικά. Τα αποτελέσματα της κατάτμησης φαίνονται παρακάτω. +Στο δεύτερο μέρος του script εκτελούνται τα πειράματα για την δεύτερη εικόνα που δίνεται (``\texttt{d2b}''). Ο affinity matrix που προκύπτει απεικονίζεται και πάλι γραφικά (\ref{d2b_g}). \begin{figure}[H] \centering - \resizebox{.7\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_g.pdf_tex}} } \caption{Απεικόνιση affinity matrix πρώτης εικόνας (``\texttt{d2b}'')} + \label{d2b_g} \end{figure} +Τα αποτελέσματα της κατάτμησης φαίνονται παρακάτω. + \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2b}'')} @@ -71,17 +75,19 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f3.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 2 ομάδες, grayscale χρώματα} \end{figure} \end{multicols} +\newpage + \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f5.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 3 ομάδες, grayscale χρώματα} @@ -89,7 +95,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f7.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 4 ομάδες, grayscale χρώματα} @@ -101,7 +107,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2b}'')} @@ -109,17 +115,19 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f2.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 2 ομάδες, χρωματικός διάμεσος} \end{figure} \end{multicols} +\newpage + \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f4.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 3 ομάδες, χρωματικός διάμεσος} @@ -127,17 +135,17 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo2_e2_f6.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 4 ομάδες, χρωματικός διάμεσος} \end{figure} \end{multicols} -Στη περίπτωση των δύο ομάδων θα ήταν ιδανικό να διαχωριστεί το καμπυλόγραμμο τετράγωνο που βρίσκεται ``μπροστά'' από το λευκό φόντο που βρίσκεται πίσω. Στη περίπτωση αυτή ο αλγόριθμος έχει μέτρια αποτελέσματα, ομαδοποιόντας τα χέρια της φιγούρας του Mario στην ίδια ομάδα με το φόντο. +Στη περίπτωση των δύο ομάδων θα ήταν ιδανικό να διαχωριστεί το καμπυλόγραμμο τετράγωνο που βρίσκεται ``μπροστά'' από το λευκό φόντο που βρίσκεται πίσω. Στη περίπτωση αυτή ο αλγόριθμος έχει μέτρια αποτελέσματα, ομαδοποιόντας τα χέρια της φιγούρας του Mario καθώς και μέρος του προσώπου στην ίδια ομάδα με το φόντο. -Στη περίπτωση των τριών ομάδων θα ήταν ιδανικό να δημιουργηθούν οι ομάδες ώστε να περιέχουν η μία το λευκό φόντο, η άλλη το μπλε φόντο της φιγούρας και η τρίτη τη φιγούρα. Και εδώ ο αλγόριθμος δίνει μέτρια αποτελέσματα. +Στη περίπτωση των τριών ομάδων θα ήταν ιδανικό να δημιουργηθούν οι ομάδες ώστε να περιέχουν η μία το λευκό φόντο, η άλλη το μπλε φόντο της φιγούρας και η τρίτη τη φιγούρα. Εδώ ο αλγόριθμος αποδίδει άσχημα αποτελέσματα δημιουργώντας μία ομάδα με ένα μόνο εικονοστοιχείο. -Στη περίπτωση των τεσσάρων ομάδων ισχύει ό,τι και στη προηγούμενη, δηλαδή για τρείς ομάδες. +Στη περίπτωση των τεσσάρων ομάδων υπάρχει και πάλι η ομάδα με το μοναδικό εικονοστοιχείο, ωστόσο η επιπλέον ομάδα παρέχει έναν καλό επιπλέον διαχωρισμό της κόκκινης εξωτερικής λεζάντας. -Παρατηρείται ότι ο αλγόριθμος έχει σχετικά ικανοποιητικά αποτελέσματα αλλά επιδέχεται βελτίωσης. \ No newline at end of file +Παρατηρείται ότι ο αλγόριθμος έχει ικανοποιητικά αποτελέσματα αλλά επιδέχεται σημαντικής βελτίωσης. \ No newline at end of file diff --git a/Assignment_2/report/7.0.demo3.tex b/Assignment_2/report/7.0.demo3.tex index 1591dac..256d6ee 100644 --- a/Assignment_2/report/7.0.demo3.tex +++ b/Assignment_2/report/7.0.demo3.tex @@ -3,4 +3,5 @@ Στη τρίτη σειρά πειραμάτων γίνεται παρουσίαση της λειτουργίας και των αποτελεσμάτων των συναρτήσεων \texttt{myNCuts} και \texttt{calculateNCuts}. Τα πειράματα εκτελούνται με κλήση των scripts \texttt{demo3a}, \texttt{demo3b} και \texttt{demo3c} χωρίς ορίσματα. Τα scripts εκτελούν μία σειρά από πειράματα που επιδεικνύουν τη λειτουργία της \texttt{myNCuts} με δύο τρόπους, καλώντας την συνάρτηση μη-αναδρομικά και αναδρομικά. \input{7.1.demo3a} -\input{7.2.demo3b} \ No newline at end of file +\input{7.2.demo3b} +\input{7.3.demo3c} diff --git a/Assignment_2/report/7.1.demo3a.tex b/Assignment_2/report/7.1.demo3a.tex index 505b4c4..453f8b0 100644 --- a/Assignment_2/report/7.1.demo3a.tex +++ b/Assignment_2/report/7.1.demo3a.tex @@ -7,7 +7,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e1_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2a}'')} @@ -15,7 +15,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e1_f2.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 2 ομάδες} @@ -25,7 +25,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e1_f3.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 3 ομάδες} @@ -33,7 +33,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e1_f4.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 4 ομάδες} @@ -49,7 +49,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2b}'')} @@ -57,7 +57,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f3.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 2 ομάδες, grayscale χρώματα} @@ -67,7 +67,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f5.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 3 ομάδες, grayscale χρώματα} @@ -75,17 +75,19 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f7.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 4 ομάδες, grayscale χρώματα} \end{figure} \end{multicols} +\newpage + \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2b}'')} @@ -93,7 +95,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f2.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 2 ομάδες, χρωματικός διάμεσος} @@ -103,7 +105,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f4.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 3 ομάδες, χρωματικός διάμεσος} @@ -111,14 +113,11 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3a_e2_f6.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 4 ομάδες, χρωματικός διάμεσος} \end{figure} \end{multicols} -Όπως και στη περίπτωση του spectral clustering που πραγματοποιήθηκε στη δεύτερη σειρά πειραμάτων, έτσι και εδώ ο αλγόριθμος normalized cuts δίνει αξιόλογα αποτελέσματα κατάτμησης, εξακολουθεί ωστόσο να επιδέχεται βελτιώσεων. - -Όπως και για τη προηγούμενη εικόνα, τα αποτελέσματα του αλγόριθμου normalized cuts είναι συγκρίσιμα με αυτά του spectral clustering για αυτή τη μη αναδρομική εκδοχή. Αυτή τη φορά παρατηρείται μικρή βελτίωση στη κατάτμηση με χρήση normalized cuts, όχι όμως σημαντική. - +Ο αλγόριθμος normalized cuts δίνει αξιόλογα αποτελέσματα κατάτμησης. Τα αποτελέσματα του αλγόριθμου normalized cuts είναι σαφώς καλύτερα σε σχέση με αυτά του spectral clustering για αυτή τη μη αναδρομική εκδοχή, εξακολουθεί ωστόσο να επιδέχεται βελτιώσεων. diff --git a/Assignment_2/report/7.2.demo3b.tex b/Assignment_2/report/7.2.demo3b.tex index 98ac641..e1470f3 100644 --- a/Assignment_2/report/7.2.demo3b.tex +++ b/Assignment_2/report/7.2.demo3b.tex @@ -7,7 +7,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3b_e1_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2a}'')} @@ -15,7 +15,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3b_e1_f2.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}'') σε 2 ομάδες} @@ -27,7 +27,7 @@ \begin{multicols}{2} \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3b_e2_f1.pdf_tex}} } \caption{Αρχική εικόνα (``\texttt{d2b}'')} @@ -35,7 +35,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3b_e2_f3.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 2 ομάδες, grayscale χρώματα} @@ -44,7 +44,7 @@ \begin{figure}[H] \centering - \resizebox{.4\textwidth}{!}{ + \resizebox{.5\textwidth}{!}{ \colorbox{shadecolor}{\input{res/demo3b_e2_f2.pdf_tex}} } \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}'') σε 3 ομάδες, χρωματικός διάμεσος} diff --git a/Assignment_2/report/7.3.demo3c.tex b/Assignment_2/report/7.3.demo3c.tex index e69de29..047d1c5 100644 --- a/Assignment_2/report/7.3.demo3c.tex +++ b/Assignment_2/report/7.3.demo3c.tex @@ -0,0 +1,55 @@ +\subsection{Αναδρομικός normalized cuts} + +Η εκδοχή της αναδρομικής εκτέλεσης παρουσιάζεται στο script \texttt{demo3c}. Το script εκτελεί μία σειρά από δύο πειράματα κατά τα οποία γίνεται κατάτμηση δύο δοσμένων εικόνων (``\texttt{d2a}'' και ``\texttt{d2b}'') σε ομάδες (clusters) διαδοχικά. Τα αποτελέσματα φαίνονται και σχολιάζονται στη συνέχεια. + +Στο πρώτο μέρος του script εκτελείται το πείραμα για την πρώτη εικόνα που δίνεται (``\texttt{d2a}''). Το αποτέλεσμα της κατάτμησης φαίνεται παρακάτω. + +\begin{multicols}{2} + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/demo3c_e1_f1.pdf_tex}} + } + \caption{Αρχική εικόνα (``\texttt{d2a}'')} + \end{figure} + + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/demo3c_e1_f2.pdf_tex}} + } + \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2a}''), τυχαίος χωματισμός των ομάδων} + \end{figure} +\end{multicols} + +Σε αυτή τη περίπτωση ο αλγόριθμος κάνει τη βέλτιστη ομαδοποίηση, σταματώντας στις τρεις ομάδες και αντιστοιχίζοντας μία ομάδα σε κάθε χρώμα της αρχικής εικόνας. + +Στο δεύτερο μέρος του script εκτελείται το πείραμα για την δεύτερη εικόνα που δίνεται (``\texttt{d2b}''). Το αποτέλεσμα της κατάτμησης φαίνεται παρακάτω. + +\begin{multicols}{2} + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/demo3c_e2_f1.pdf_tex}} + } + \caption{Αρχική εικόνα (``\texttt{d2b}'')} + \end{figure} + + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/demo3c_e2_f3.pdf_tex}} + } + \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}''), τυχαίος χωματισμός των ομάδων} + \end{figure} +\end{multicols} + +\begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/demo3c_e2_f2.pdf_tex}} + } + \caption{Κατάτμηση πρώτης εικόνας (``\texttt{d2b}''), χρωματικός διάμεσος} +\end{figure} + +Στη δεύτερη εικόνα ο αλγόριθμος χωρίζει σε τρεις ομάδες με πολύ ικανοποιητικά αποτελέσματα. diff --git a/Assignment_2/report/8.0.results.tex b/Assignment_2/report/8.0.results.tex index 63f4680..f76d30b 100644 --- a/Assignment_2/report/8.0.results.tex +++ b/Assignment_2/report/8.0.results.tex @@ -1,16 +1,39 @@ \section{Εκτέλεση και αποτελέσματα} -% Παρακάτω παρατίθενται ενδεικτικά οι χρόνοι εκτέλεσης των βασικών συναρτήσεων για επιλεγμένες διαστάσεις τελικής εικόνας 960Χ1280 καθώς: +Από τη προηγούμενη ανάλυση βγαίνει το συμπέρασμα ότι η αναδρομική εκδοχή του normalized cuts αλγόριθμου δίνει τα βέλτιστα αποτελέσματα. Για την περαιτέρω επίδειξη της ποιότητας του αλγορίθμου, η αναδρομική εκδοχή του δοκιμάστηκε σε πραγματικές εικόνες. Τα αποτελέσματα φαίνονται παρακάτω. -% \begin{table}[H] -% \centering -% \begin{tabular}{l l} \toprule -% Συνάρτηση & Χρόνος (seconds) \\ \midrule -% \texttt{bayer2rgb} (``nearest'') & 0.164 \\ -% \texttt{bayer2rgb} (``linear'') & 0.484 \\ -% \texttt{imagequant} & 0.0315 \\ -% \texttt{imagedequant} & 0.024 \\ -% \texttt{saveasppm} & 0.208 \\ \bottomrule -% \end{tabular} -% \caption{Χρόνοι βασικών συναρτήσεων} -% \end{table} \ No newline at end of file +\begin{multicols}{2} + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/exp_1_o.pdf_tex}} + } + \caption{Αρχική εικόνα} + \end{figure} + + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/exp_1_c.pdf_tex}} + } + \caption{Κατάτμηση εικόνας, χρωματικός διάμεσος} + \end{figure} +\end{multicols} + +\begin{multicols}{2} + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/exp_2_o.pdf_tex}} + } + \caption{Αρχική εικόνα} + \end{figure} + + \begin{figure}[H] + \centering + \resizebox{.5\textwidth}{!}{ + \colorbox{shadecolor}{\input{res/exp_2_c.pdf_tex}} + } + \caption{Κατάτμηση εικόνας, χρωματικός διάμεσος} + \end{figure} +\end{multicols} diff --git a/Assignment_2/report/report.tex b/Assignment_2/report/report.tex index f05c665..4196a9d 100644 --- a/Assignment_2/report/report.tex +++ b/Assignment_2/report/report.tex @@ -20,7 +20,7 @@ \definecolor{shadecolor}{RGB}{0, 0, 0} \graphicspath{{res/}} %\usepackage{multirow} -%\usepackage[all]{hypcap} +\usepackage[all]{hypcap} \definecolor{codegreen}{rgb}{0,0.6,0} \definecolor{codegray}{rgb}{0.5,0.5,0.5} diff --git a/Assignment_2/report/res/exp_1_c.pdf_tex b/Assignment_2/report/res/exp_1_c.pdf_tex new file mode 100644 index 0000000..b8a2edb --- /dev/null +++ b/Assignment_2/report/res/exp_1_c.pdf_tex @@ -0,0 +1,58 @@ +%% Creator: Inkscape inkscape 0.92.3, www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file 'exp_1_c.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{67.49999915bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,1)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{exp_1_c.pdf}}% + \end{picture}% +\endgroup% diff --git a/Assignment_2/report/res/exp_1_c.svg b/Assignment_2/report/res/exp_1_c.svg new file mode 100644 index 0000000..7cb5788 --- /dev/null +++ b/Assignment_2/report/res/exp_1_c.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment_2/report/res/exp_1_o.pdf_tex b/Assignment_2/report/res/exp_1_o.pdf_tex new file mode 100644 index 0000000..57cdf4d --- /dev/null +++ b/Assignment_2/report/res/exp_1_o.pdf_tex @@ -0,0 +1,58 @@ +%% Creator: Inkscape inkscape 0.92.3, www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file 'exp_1_o.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{67.49999915bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,1)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{exp_1_o.pdf}}% + \end{picture}% +\endgroup% diff --git a/Assignment_2/report/res/exp_1_o.svg b/Assignment_2/report/res/exp_1_o.svg new file mode 100644 index 0000000..9fe552b --- /dev/null +++ b/Assignment_2/report/res/exp_1_o.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment_2/report/res/exp_2_c.pdf_tex b/Assignment_2/report/res/exp_2_c.pdf_tex new file mode 100644 index 0000000..5690eed --- /dev/null +++ b/Assignment_2/report/res/exp_2_c.pdf_tex @@ -0,0 +1,58 @@ +%% Creator: Inkscape inkscape 0.92.3, www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file 'exp_2_c.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{67.49999915bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,1)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{exp_2_c.pdf}}% + \end{picture}% +\endgroup% diff --git a/Assignment_2/report/res/exp_2_c.svg b/Assignment_2/report/res/exp_2_c.svg new file mode 100644 index 0000000..f4f99ea --- /dev/null +++ b/Assignment_2/report/res/exp_2_c.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment_2/report/res/exp_2_o.pdf_tex b/Assignment_2/report/res/exp_2_o.pdf_tex new file mode 100644 index 0000000..c7e93b8 --- /dev/null +++ b/Assignment_2/report/res/exp_2_o.pdf_tex @@ -0,0 +1,58 @@ +%% Creator: Inkscape inkscape 0.92.3, www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file 'exp_2_o.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{67.49999915bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,1)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{exp_2_o.pdf}}% + \end{picture}% +\endgroup% diff --git a/Assignment_2/report/res/exp_2_o.svg b/Assignment_2/report/res/exp_2_o.svg new file mode 100644 index 0000000..c583e94 --- /dev/null +++ b/Assignment_2/report/res/exp_2_o.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment_2/tester.m b/Assignment_2/tester.m index 24e9bfa..d5292bf 100644 --- a/Assignment_2/tester.m +++ b/Assignment_2/tester.m @@ -1,35 +1,15 @@ image = imageT; -k = 3; +k = 4; graph = Image2Graph(image); %clusters = mySpectralClustering(graph, k); -clusters = myNCuts(graph, k); +%clusters = myNCuts(graph, k); +clusters = recursiveNCuts(graph); -clusters = reshape(clusters, size(image, 1), []); - -redChannel = image(:, :, 1); -greenChannel = image(:, :, 2); -blueChannel = image(:, :, 3); - -segImR = clusters; -segImG = clusters; -segImB = clusters; +%calculateNcut(graph, clusters); +unique(clusters) -for cluster = 1:k - meanR = mean(redChannel(clusters == cluster)); - meanG = mean(greenChannel(clusters == cluster)); - meanB = mean(blueChannel(clusters == cluster)); - - segImR(clusters == cluster) = meanR; - segImG(clusters == cluster) = meanG; - segImB(clusters == cluster) = meanB; -end - -segIm = zeros(size(image, 1), size(image, 2), 3); -segIm(:, :, 1) = segImR; -segIm(:, :, 2) = segImG; -segIm(:, :, 3) = segImB; -imshow(segIm) +clusters = reshape(clusters, size(image, 1), []); +imshow(meanClustersColorRGB(imageT, clusters)) -clearvars segImR segImG segImB meanR meanG meanB graph redChannel ... - greenChannel blueChannel clusters k image cluster segIm \ No newline at end of file +clearvars graph clusters k image \ No newline at end of file