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
|
# Run equalization
|
||||||
for mode in modes:
|
for mode in modes:
|
||||||
|
print("Perform histogram equalization in mode: ", mode)
|
||||||
equalized_img = perform_hist_eq(input_array, mode)
|
equalized_img = perform_hist_eq(input_array, mode)
|
||||||
out_filename = f"demo_outputs/equalization_{mode}.png"
|
out_filename = f"demo_outputs/equalization_{mode}.png"
|
||||||
plot_comparison(input_array, equalized_img, f"Histogram Equalization ({mode})", out_filename)
|
plot_comparison(input_array, equalized_img, f"Histogram Equalization ({mode})", out_filename)
|
||||||
|
|
||||||
# Run matching
|
# Run matching
|
||||||
for mode in modes:
|
for mode in modes:
|
||||||
|
print("Perform histogram matching in mode: ", mode)
|
||||||
matched_img = perform_hist_matching(input_array, ref_array, mode)
|
matched_img = perform_hist_matching(input_array, ref_array, mode)
|
||||||
out_filename = f"demo_outputs/matching_{mode}.png"
|
out_filename = f"demo_outputs/matching_{mode}.png"
|
||||||
plot_comparison(input_array, matched_img, f"Histogram Matching ({mode})", out_filename)
|
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