HW01: First version of report added
This commit is contained in:
parent
d771baa443
commit
cb7a1f2a7c
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "HW01/report/AUThReport"]
|
||||
path = HW01/report/AUThReport
|
||||
url = ssh://git@git.hoo2.net:222/hoo2/AUThReport.git
|
1
HW01/report/AUThReport
Submodule
1
HW01/report/AUThReport
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 74ec4b5f6c66382e5f1b6d2e6930897e4ed53ea6
|
BIN
HW01/report/report.pdf
Normal file
BIN
HW01/report/report.pdf
Normal file
Binary file not shown.
207
HW01/report/report.tex
Normal file
207
HW01/report/report.tex
Normal file
@ -0,0 +1,207 @@
|
||||
%
|
||||
% !TEX TS-program = xelatex
|
||||
% !TEX encoding = UTF-8 Unicode
|
||||
% !TEX spellcheck = el-GR
|
||||
%
|
||||
% AUTH report template for english
|
||||
%
|
||||
% Requires compilation with pdfLaTeX or XeLaTeX
|
||||
%
|
||||
% authors:
|
||||
% Χρήστος Χουτουρίδης ΑΕΜ 8997
|
||||
% cchoutou@ece.auth.gr
|
||||
|
||||
% Options:
|
||||
%
|
||||
% 1) mainlang=<language>
|
||||
% Default: english
|
||||
% Set the default language of the document which affects hyphenations,
|
||||
% localization (section, dates, etc...)
|
||||
%
|
||||
% example: \documentclass[mainlang=greek]{AUThReport}
|
||||
%
|
||||
% 2) <language>
|
||||
% Add hyphenation and typesetting support for other languages
|
||||
% Currently supports: english, greek, german, frenc
|
||||
%
|
||||
% example: \documentclass[english, greek]{AUThReport}
|
||||
%
|
||||
% 3) short: Requests a shorter title for the document
|
||||
% Default: no short
|
||||
%
|
||||
% example: \documentclass[short]{AUThReport}
|
||||
%
|
||||
\documentclass[a4paper, 11pt, mainlang=greek, english]{AUThReport/AUThReport}
|
||||
|
||||
\CurrentDate{\today}
|
||||
|
||||
% Greek report document setup suggestions
|
||||
%---------------------------------
|
||||
% Document configuration
|
||||
\AuthorName{Χρήστος Χουτουρίδης}
|
||||
\AuthorAEM{8997}
|
||||
\AuthorMail{cchoutou@ece.auth.gr}
|
||||
|
||||
%\CoAuthorName{CoAuthor Name}
|
||||
%\CoAuthorAEM{AEM}
|
||||
%\CoAuthorMail{CoAuthor Mail}
|
||||
|
||||
% \WorkGroup{Ομάδα Χ}
|
||||
|
||||
\DocTitle{Εργασία 1}
|
||||
\DocSubTitle{Παραλλαγές αλγορίθμων εξισορρόπησης και αντιστοίχισης ιστογράμματος}
|
||||
|
||||
\Department{Τμήμα ΗΜΜΥ. Τομέας Ηλεκτρονικής}
|
||||
\ClassName{Ψηφιακή Επεξεργασία Εικόνας}
|
||||
|
||||
\InstructorName{Α. Ντελόπουλος}
|
||||
\InstructorMail{}
|
||||
|
||||
|
||||
\CoInstructorName{Δ. Αλέτρας}
|
||||
\CoInstructorMail{lnmpikas@ece.auth.gr}
|
||||
|
||||
|
||||
% Local package requirements
|
||||
%---------------------------------
|
||||
%\usepackage{tabularx}
|
||||
%\usepackage{array}
|
||||
%\usepackage{commath}
|
||||
|
||||
\usepackage{amsmath, amssymb, amsfonts}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{float}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Request a title page or header
|
||||
\InsertTitle
|
||||
|
||||
\section{Εισαγωγή}
|
||||
|
||||
\par
|
||||
|
||||
|
||||
\subsection{Παραδοτέα}
|
||||
Τα παραδοτέα της εργασίας αποτελούνται από:
|
||||
\begin{itemize}
|
||||
\item Την παρούσα αναφορά.
|
||||
\item Τα αρχεία dmeo.py, hist\_modif.py, hist\_utils.py
|
||||
\item Το \href{https://git.hoo2.net/hoo2/DigitalImageProcessing/src/branch/master/HW01}{σύνδεσμο} με το αποθετήριο που περιέχει όλο το project με τον κώδικα σε python της αναφοράς και τα παραδοτέα.
|
||||
\end{itemize}
|
||||
|
||||
\section{Εξισορρόπηση Ιστογράμματος (Equalization)}
|
||||
|
||||
\subsection{Τεχνική περιγραφή και σχόλια υλοποίησης}
|
||||
|
||||
Η εξισορρόπηση ιστογράμματος στοχεύει στη βελτίωση της αντίθεσης μιας εικόνας κατανέμοντας ομοιόμορφα τις εντάσεις φωτεινότητας.
|
||||
Για την υλοποίηση αναπτύχθηκε η συνάρτηση \texttt{perform\_hist\_eq()}, η οποία στηρίζεται στη γενικευμένη \texttt{perform\_hist\_modification()}.
|
||||
Η \texttt{perform\_hist\_eq()} δημιουργεί έναν ισοκατανεμημένο στόχο ιστογράμματος με \texttt{L=256} επίπεδα και καλεί την τροποποίηση με το επιθυμητό mode (\texttt{greedy}, \texttt{non-greedy}, \texttt{post-disturbance}).
|
||||
|
||||
\paragraph{Περιγραφή Κώδικα}
|
||||
Ο κώδικας ακολουθεί τα εξής βήματα:
|
||||
\begin{enumerate}
|
||||
\item Υπολογισμός του ιστογράμματος εισόδου.
|
||||
\item Δημιουργία στόχου: ισοκατανομή με ίσες πιθανότητες ανά επίπεδο.
|
||||
\item Κλήση της \texttt{perform\_hist\_modification()} με το επιλεγμένο mode για να μετασχηματιστεί η εικόνα.
|
||||
\end{enumerate}
|
||||
|
||||
Η \texttt{perform\_hist\_modification()} χαρτογραφεί κάθε επίπεδο εισόδου σε επίπεδο εξόδου με βάση την επιθυμητή κατανομή, χρησιμοποιώντας διαφορετικές στρατηγικές εκχώρησης αναλόγως του mode.
|
||||
|
||||
\subsection{Plots και σχόλια για τα αποτελέσματα}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{../scripts/demo_outputs/equalization_greedy.png}
|
||||
\caption{Ισοστάθμιση ιστογράμματος με χρήση greedy στρατηγικής.}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{../scripts/demo_outputs/equalization_non-greedy.png}
|
||||
\caption{Ισοστάθμιση ιστογράμματος με χρήση non-greedy στρατηγικής.}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{../scripts/demo_outputs/equalization_post-disturbance.png}
|
||||
\caption{Ισοστάθμιση ιστογράμματος με χρήση post-disturbance στρατηγικής.}
|
||||
\end{figure}
|
||||
|
||||
\paragraph{Σχολιασμός αποτελεσμάτων}
|
||||
|
||||
Παρατηρείται ότι η ισοστάθμιση δεν επιτυγχάνεται πλήρως.
|
||||
Πιο συγκεκριμένα:
|
||||
\begin{itemize}
|
||||
\item Στο \texttt{greedy} mode, πολλά επίπεδα εισόδου συγκεντρώνονται στα ίδια επίπεδα εξόδου, καθώς η στρατηγική είναι άπληστη και δεν διασφαλίζει σωστή εξισορρόπηση.
|
||||
\item Στο \texttt{non-greedy} mode, υπάρχει κάποια βελτίωση, αλλά η μέθοδος δεν εξισορροπεί τέλεια, επειδή τα επίπεδα εισόδου δεν κατανέμονται ιδανικά λόγω του τρόπου που διαχειριζόμαστε το έλλειμμα (deficiency).
|
||||
\item Στο \texttt{post-disturbance} mode, εισάγεται τυχαίος θόρυβος πριν την αντιστοίχιση, γεγονός που οδηγεί σε ελαφρώς καλύτερη κατανομή, αλλά το αποτέλεσμα εξακολουθεί να είναι μακριά από την ιδανική ισοκατανομή.
|
||||
\end{itemize}
|
||||
|
||||
Η κύρια αιτία είναι ότι η μετατροπή βασίζεται σε απλή αντιστοίχιση επιπέδων χωρίς πραγματική υπολογιστική σύγκλιση σε ομοιόμορφο ιστόγραμμα.
|
||||
|
||||
\section{Αντιστοίχιση Ιστογράμματος (Matching)}
|
||||
|
||||
\subsection{Τεχνική περιγραφή και σχόλια υλοποίησης}
|
||||
|
||||
Η αντιστοίχιση ιστογράμματος έχει ως στόχο τη μεταβολή του ιστογράμματος μιας εικόνας ώστε να προσεγγίσει αυτό μιας εικόνας αναφοράς.
|
||||
Για την υλοποίηση χρησιμοποιήθηκε η συνάρτηση \texttt{perform\_hist\_matching()}, η οποία:
|
||||
\begin{itemize}
|
||||
\item Υπολογίζει το κανονικοποιημένο ιστόγραμμα της εικόνας αναφοράς.
|
||||
\item Καλεί την \texttt{perform\_hist\_modification()} χρησιμοποιώντας το ιστόγραμμα αναφοράς ως στόχο.
|
||||
\end{itemize}
|
||||
|
||||
\paragraph{Περιγραφή Κώδικα}
|
||||
Η διαδικασία ακολουθεί τα εξής βήματα:
|
||||
\begin{enumerate}
|
||||
\item Ανάγνωση της εικόνας αναφοράς.
|
||||
\item Υπολογισμός κανονικοποιημένου ιστογράμματος για την εικόνα αναφοράς.
|
||||
\item Εκτέλεση της τροποποίησης με βάση το ιστόγραμμα αναφοράς και το επιθυμητό mode.
|
||||
\end{enumerate}
|
||||
|
||||
Όπως και στην εξισορρόπηση, τα διαφορετικά modes καθορίζουν πώς γίνεται η αντιστοίχιση των επιπέδων.
|
||||
|
||||
\subsection{Plots και σχόλια για τα αποτελέσματα}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{../scripts/demo_outputs/matching_greedy.png}
|
||||
\caption{Αντιστοίχιση ιστογράμματος με χρήση greedy στρατηγικής.}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{../scripts/demo_outputs/matching_non-greedy.png}
|
||||
\caption{Αντιστοίχιση ιστογράμματος με χρήση non-greedy στρατηγικής.}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{../scripts/demo_outputs/matching_post-disturbance.png}
|
||||
\caption{Αντιστοίχιση ιστογράμματος με χρήση post-disturbance στρατηγικής.}
|
||||
\end{figure}
|
||||
|
||||
\paragraph{Σχολιασμός αποτελεσμάτων}
|
||||
|
||||
Παρατηρείται ότι και στην περίπτωση της αντιστοίχισης η τελική μορφή των ιστογραμμάτων δεν προσεγγίζει με ακρίβεια το ιστόγραμμα της εικόνας αναφοράς.
|
||||
Συγκεκριμένα:
|
||||
\begin{itemize}
|
||||
\item Στο \texttt{greedy} mode, πολλά επίπεδα εισόδου συνδέονται με λίγα επίπεδα εξόδου, προκαλώντας υπερσυσσώρευση.
|
||||
\item Στο \texttt{non-greedy} mode, υπάρχει μερική βελτίωση, όμως εξακολουθεί να υπάρχει απώλεια ακρίβειας στις περιοχές χαμηλής ή υψηλής πυκνότητας.
|
||||
\item Στο \texttt{post-disturbance} mode, η διασπορά βελτιώνεται, αλλά η κατανομή απέχει ακόμα από το ιδανικό.
|
||||
\end{itemize}
|
||||
|
||||
Η αποτυχία στην πλήρη αντιστοίχιση οφείλεται στο γεγονός ότι η υλοποίηση βασίζεται σε τοπική αντιστοίχιση επιπέδων και όχι σε παγκόσμια αντιστοίχιση αθροιστικών συναρτήσεων κατανομής (CDF), όπως απαιτείται στη θεωρητικά σωστή μέθοδο.
|
||||
|
||||
\section{Συμπεράσματα}
|
||||
|
||||
Από την πειραματική αξιολόγηση διαπιστώθηκε ότι:
|
||||
\begin{itemize}
|
||||
\item Η μέθοδος ισοστάθμισης και αντιστοίχισης που αναπτύχθηκε λειτουργεί σε βασικό επίπεδο, αλλά δεν επιτυγχάνει ακριβή προσαρμογή της κατανομής.
|
||||
\item Η στρατηγική \texttt{post-disturbance} οδηγεί σε πιο ομαλή και φυσική κατανομή επιπέδων, αν και δεν αρκεί για την πλήρη επιδιόρθωση.
|
||||
\item Μια ακριβέστερη υλοποίηση θα απαιτούσε τη χρήση σωστής αντιστοίχισης των αθροιστικών συναρτήσεων κατανομής (CDF matching).
|
||||
\end{itemize}
|
||||
|
||||
Η συνολική υλοποίηση βασίστηκε σε modular σχεδίαση, επιτρέποντας εύκολη παραμετροποίηση και δοκιμή διαφορετικών στρατηγικών αντιστοίχισης.
|
||||
|
||||
\end{document}
|
@ -79,12 +79,14 @@ modes = ["greedy", "non-greedy", "post-disturbance"]
|
||||
|
||||
# Run equalization
|
||||
for mode in modes:
|
||||
print("Perform histogram equalization in mode: ", mode)
|
||||
equalized_img = perform_hist_eq(input_array, mode)
|
||||
out_filename = f"demo_outputs/equalization_{mode}.png"
|
||||
plot_comparison(input_array, equalized_img, f"Histogram Equalization ({mode})", out_filename)
|
||||
|
||||
# Run matching
|
||||
for mode in modes:
|
||||
print("Perform histogram matching in mode: ", mode)
|
||||
matched_img = perform_hist_matching(input_array, ref_array, mode)
|
||||
out_filename = f"demo_outputs/matching_{mode}.png"
|
||||
plot_comparison(input_array, matched_img, f"Histogram Matching ({mode})", out_filename)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 154 KiB |
Binary file not shown.
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 208 KiB |
Loading…
x
Reference in New Issue
Block a user