ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ

Σχετικά έγγραφα
ADVANCES IN DIGITAL AND COMPUTER VISION

Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών. «Προηγμένα Συστήματα Παραγωγής, Αυτοματισμού και. Ρομποτικής» Assignment 2

ΖΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΔΠΜΣ Προηγμένα Συστήματα Παραγωγής, Αυτοματισμού και Ρομποτικής

ΜΗΧΑΝΙΚΗ ΟΡΑΣΗ. 2η ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

Μάθημα: Μηχανική Όραση

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ADVANCES IN DIGITAL AND COMPUTER VISION

Homework 3 Solutions

ΜΗΧΑΝΙΚΗ ΟΡΑΣΗ. 3η ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

Assignment 1. ι ό αος α ά ς Page1

Mean bond enthalpy Standard enthalpy of formation Bond N H N N N N H O O O

Instruction Execution Times

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Approximation of distance between locations on earth given by latitude and longitude

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

Εργαστήριο ADICV2. Image filtering. Κώστας Μαριάς

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

PARTIAL NOTES for 6.1 Trigonometric Identities

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Απόκριση σε Μοναδιαία Ωστική Δύναμη (Unit Impulse) Απόκριση σε Δυνάμεις Αυθαίρετα Μεταβαλλόμενες με το Χρόνο. Απόστολος Σ.

Exercises 10. Find a fundamental matrix of the given system of equations. Also find the fundamental matrix Φ(t) satisfying Φ(0) = I. 1.

[1] P Q. Fig. 3.1

2 Composition. Invertible Mappings

FSM Toolkit Exercises

CHAPTER 48 APPLICATIONS OF MATRICES AND DETERMINANTS

6-Aνίχνευση. Ακμών - Περιγράμματος

ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ

Other Test Constructions: Likelihood Ratio & Bayes Tests

Math 6 SL Probability Distributions Practice Test Mark Scheme

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Second Order RLC Filters

Εργαστήριο ADICV1. Image Boundary detection and filtering. Κώστας Μαριάς 13/3/2017

Areas and Lengths in Polar Coordinates

Partial Differential Equations in Biology The boundary element method. March 26, 2013

Numerical Analysis FMN011

ADVANCES IN DIGITAL AND COMPUTER VISION

References. Chapter 10 The Hough and Distance Transforms

Section 7.6 Double and Half Angle Formulas

Fractional Colorings and Zykov Products of graphs

Modbus basic setup notes for IO-Link AL1xxx Master Block

Econ 2110: Fall 2008 Suggested Solutions to Problem Set 8 questions or comments to Dan Fetter 1

The Simply Typed Lambda Calculus

(1) Describe the process by which mercury atoms become excited in a fluorescent tube (3)

derivation of the Laplacian from rectangular to spherical coordinates

6.3 Forecasting ARMA processes

Areas and Lengths in Polar Coordinates

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Homework 8 Model Solution Section

Potential Dividers. 46 minutes. 46 marks. Page 1 of 11

the total number of electrons passing through the lamp.

Reminders: linear functions

Τελική Εξέταση =1 = 0. a b c. Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. HMY 626 Επεξεργασία Εικόνας

(C) 2010 Pearson Education, Inc. All rights reserved.

Section 8.3 Trigonometric Equations

5.4 The Poisson Distribution.

ECE 468: Digital Image Processing. Lecture 8

Practice Exam 2. Conceptual Questions. 1. State a Basic identity and then verify it. (a) Identity: Solution: One identity is csc(θ) = 1

Αλγόριθμοι και πολυπλοκότητα NP-Completeness (2)

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1

Srednicki Chapter 55

5-1. Industrial Vision. Machine Vision Systems : Image Acquisition Image processing Analysis/Exploitation

1. Ηλεκτρικό μαύρο κουτί: Αισθητήρας μετατόπισης με βάση τη χωρητικότητα

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

SCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions

Jesse Maassen and Mark Lundstrom Purdue University November 25, 2013

Matrices and Determinants

Inverse trigonometric functions & General Solution of Trigonometric Equations

Math221: HW# 1 solutions

An Inventory of Continuous Distributions

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

CE 530 Molecular Simulation

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

Advances in Digital Imaging and Computer Vision

Ordinal Arithmetic: Addition, Multiplication, Exponentiation and Limit

EE512: Error Control Coding

Galatia SIL Keyboard Information

Example Sheet 3 Solutions

Block Ciphers Modes. Ramki Thurimella

The challenges of non-stable predicates

CRASH COURSE IN PRECALCULUS

Section 9.2 Polar Equations and Graphs

b. Use the parametrization from (a) to compute the area of S a as S a ds. Be sure to substitute for ds!

Exercises to Statistics of Material Fatigue No. 5

Overview. Transition Semantics. Configurations and the transition relation. Executions and computation

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

Nowhere-zero flows Let be a digraph, Abelian group. A Γ-circulation in is a mapping : such that, where, and : tail in X, head in

F-TF Sum and Difference angle

ST5224: Advanced Statistical Theory II

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ

Concrete Mathematics Exercises from 30 September 2016

1. Πόσοι αριθμοί μικρότεροι του διαιρούνται με όλους τους μονοψήφιους αριθμούς;

ΨΗΦΙΑΚΗ ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ

Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία. Φοιτητής: ΤΣΟΥΛΑΣ ΧΡΗΣΤΟΣ

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Transcript:

ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ Assignment 2 ΟΜΑΔΑ 2 Δημήτρης Βοσκάκης (mth76@edu.teicrete.gr) Νικόλαος Βαρδάκης (mth75@edu.teicrete.gr) ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ Κ.Αλέξανδρος Μακρής Page1

Contents Exercise 1... 3 Θεωρητική Ανάλυση... 3 Ανάπτυξη του Μαθηματικού Μοντέλου στο πρόγραμμα... 3 Εφαρμογές Αποτελέσματα... 4 Exercise 2... 9 Θεωρητική Ανάλυση... 9 Ανάπτυξη του Μαθηματικού Μοντέλου στο πρόγραμμα... 9 Εφαρμογές Αποτελέσματα... 11 Exercise 3... 14 Θεωρητική Ανάλυση... 14 Ανάπτυξη του Μαθηματικού Μοντέλου στο πρόγραμμα... 15 Άσκηση 3. Εφαρμογές - Αποτελέσματα... 18 Βιβλιογραφική Αναφορά:... 19 Page2

Exercise 1 ΔΠΜΣ-ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΓΩΓΗΣ Experiment with the imfilter Matlab function using images of your choice. Present some (3-4) image filtering examples. For each example show which filter type you used and explain the purpose of filtering with that filter (e.g. smoothing, sharpening, edge). For each filter type use different parameter values (e.g. filter size, Gaussian filter standard deviation) and comment on how these parameters affect the result. To create the filter kernel creation, you can use the built-in fspecial function or directly set the appropriate matrix. Θεωρητική Ανάλυση Ένας τρόπος επεξεργασίας της εικόνας είναι το φιλτράρισμα. Η προσθήκη φίλτρο σε εικόνα της προσθέτει ή της αφαιρεί ιδιότητες, ανάλογα με τον τύπο του φίλτρου. Πχ κάποιο φίλτρο μπορεί να τη θολώσει, ενώ ένα άλλο να της αφαιρέσει θόρυβο. Επίσης κάποια φίλτρα μπορούν να την παραγωγίσουν ανά διεύθυνση κλπ. Ανάπτυξη του Μαθηματικού Μοντέλου στο πρόγραμμα Έστω το φίλτρο: h1=1/9*ones(3); Τοποθετεί στο κέντρο κάθε τετραγώνου 3x3 τον Μέσο Όρο της Φωτεινότητας όλων των pixel του. Περιμένουμε λοιπόν να θολώσει την εικόνα. Επειδή h =1 δε θα αλλοιώσει τη μέση Φωτεινότητα της εικόνας. h2=[1,0,-1;0,0,0;-1,0,1]; Επειδή παίρνει διαφορές και στον άξονα x και στον y, θα δώσει στην εικόνα μεγάλες τιμές εκεί που οι διαφορές Φωτεινότητας είναι μεγάλες, είτε στον άξονα x είτε στον y. Συνήθως στις ακμές υπάρχουν μεγάλες διαφορές Φωτεινότητας, άρα περιμένουμε να τονίσει τις ακμές. h3=[0,-1,0;-1,5,-1;0,-1,0]; Τονίσει τα κέντρα και υποτονεί τα γύρω σημεία, άρα περιμένουμε να κάνει πιο κοφτερή την εικόνα. h4 = fspecial('gaussian', [3 3], 0.5); Θολώνει την εικόνα όπως το h1, αλλά με Γκαουσιανή κατανομή. Ο πυρήνας που δημιουργεί είναι τετράγωνο 3x3 και η τυπική του απόκλιση σ=0.5. Ομοίως τα h5, h6, h7. h8=[-1 0 1;-2 0 2;-1 0 1]; Παραγωγίζει την εικόνα στον άξονα x. h9=[1 2 1;0 0 0;-1-2 -1]; Παραγωγίζει την εικόνα στον άξονα y. Page3

If6=filter2(h8,I,'full'); Βγάζει σαν μέγεθος εξόδου το άθροισμα των μεγεθών h8 (φίλτρο με τιμή h8=[-1 0 1;-2 0 2;-1 0 1]; ) και I. Εφαρμογές Αποτελέσματα Εκτελώ το πρόγραμμα Exercise1.m με εισόδους τις εικόνες: Α) cameran.tif, Β) barbara.tif και Γ) NationalGeographic1.jpg Και φαίνονται τα αποτελέσματα που περιμέναμε απότην προηγούμενη παράγραφο. A) cameraman.tif Page4

Page5

Β) barbara.tif Page6

Γ) NationalGeographic1.jpg Page7

Page8

Exercise 2 ΔΠΜΣ-ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΓΩΓΗΣ The aim of this exercise is to detect the edges with a given direction in an image. To that create a function [ E ] = oriented_edges( I, thr, a, da ) that takes as input a double grayscale image Ι, a threshold value thr, a direction a, and an angle da. The output of the function should be a binary image Ε where the pixels that meet the following requirements should have the value 1: The pixel intensity gradient is higher than thr. The gradient direction (in rad) is inside the interval: (a-da,a+da) For the gradient calculation use the imfilter with an appropriate filter (e.g. Sobel). Apply the function using different values for the parameters (thr, a, da) on images of your choice (e.g. <shapes.tiff>) and present the results along with comments on how the parameters affect the output. Θεωρητική Ανάλυση Αποδοτικός τρόπος αναγνώρισης ακμών σε μία εικόνα είναι μέσω του Gradient και της διεύθυνσης του,ορίζοντας πάντα κάποιες παραμέτρους για να έχουμε το επιθυμητό αποτέλεσμα.δημιουργώντας λοιπόν σε αρχικό στάδιο Γκαουσιανό φίλτρο και τοποθετώντας το πάνω στην εικόνα θα μας οδηγήσει στην ανέυρεση των ακμών που επιθυμούμε. Ανάπτυξη του Μαθηματικού Μοντέλου στο πρόγραμμα Ορισμός συνάρτησης με το όνομα oriented_edges.μας ζητήθηκε να δώσουμε ορίσματα την εικόνα, το threshold (αποτελεσματικός τρόπος κατάτμησης της εικόνας απομονωνωτας τα αντικέιμενα),κατεύθυνση a και την γωνία da. function E = oriented_edges(i,threshold,a,da) Inew=im2double(I); Στο συγκεκριμένο σημείο παίρνουμε το μέγεθος της εικόνας και δημιουργούμεαρχικοποιούμε αντίστοιχο πίνακα με μηδενικά.στη συνέχεια φτιάχνουμε το Γκαουσιανό φίλτρο, αφού όπως ξέρουμε είναι ένας κυκλικό φίλτρο. Όπου R και C το κέντρο του πυρήνα και οι τιμές I και j καθορίζουν το μέγεθος γυρω από το κέντρο του φίλτρου. [r,c]=size(inew); h = zeros(r,c); R = (r+1)/2; C = (c+1)/2; sigma =1.3; for(i=1:r) for(j=1:c) Page9

h(i,j) = (1/2*pi*sigma*sigma)*exp(-((i-R)*(i- R)+(j-C)*(j-C))/(2*sigma*sigma)); Κάνουμε κανονικοποίηση και εφαρμόζουμε το Γκαουσιανό φίλτρο. hsum = h/(sum(sum(h))); %normalise GaussBlur = imfilter(i,hsum); sobx=[-1 0 1;-2 0 2;-1 0 1];%sobel παραγωγιση soby=[1 2 1;0 0 0;-1-2 -1];%sobel παραγωγιση %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N=im2double(GaussBlur); Grax=imfilter(N,sobx); Gray=imfilter(N,soby); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Όπως έχουμε διδαχθεί το Gradient έιναι διάνυσμα και δείχνει την μέγιστη μεταβολή έντασης κοιτάζοντας προς αυτή την διεύθυνση.το πόσο γρήγορα μεταβάλλεται το δείχνει το μέτρο του Gradient.Έτσι στην προκειμένη περίπτωση ορίσαμε τους παραγώγους Grax και Gray (Δημιουργήθηκαν με φίλτρο sobel).τέλος εφαρμόσαμε τον τύπο του μέτρου Gradient όπως βλέπετε παρακάτω και την κατεύθυνση του Gradient εφαρμόζοντας τον τύπο theta=((atan2(gray,grax)+pi)*180)/pi;, μετατρέποντας το σε μόίρες. Gradient=sqrt((Grax.*Grax)+(Gray.*Gray)); theta=((atan2(gray,grax)+pi)*180)/pi; %Μετατροπή του gradient direction σε μοίρες. Τέλος ορίζουμε την συνθήκη του threshold,της κατεύθυνσης a,της γωνίας da,με σκοπό να μας επιστρέψει τον δυαδικό πίνακα Ε που μας ζητήθηκε. [r2,c2]=size(inew); E= zeros(r2,c2); for(i=1:r) for(j=1:c) if (Gradient(i,j)>=threshold) && (theta(i,j)<=a+da) && (theta(i,j)>=a-da) E(i,j)=1; else E(i,j)=0;. Page10

Εφαρμογές Αποτελέσματα Εφαρμόζουμε τη συνάρτηση oriented_edges στις εικόνες: shapes.tiff και NationalGeographic1.jpg διάφορα Threshold, a και da = 2, 5 deg. A) Για το shapes.tiff: Page11

Παρατηρήσεις: Η συνάρτηση με αυξημένο threshold και μειωμένο εύρος γωνιών da λαμβάνει λιγότερα σημεία. Page12

B) Για το NationalGeographic1.jpg Παρατηρήσεις. Συγκρίνοντας τις 2 παραπάνω εικόνες βλέπουμε ότι η 1 η που λαμβάνει γωνίες 135 ο προσεγγίζει καλύτερα την αυθεντική από τη 2 η που λαμβάνει γωνίες 45 ο. Αυτό οφείλεται στο γεγονός ότι το εικονιζόμενο πρόσωπο είναι στραμμένο προς τα αριστερά και έτσι φαίνονται περισσότερες ακμές. Page13

Exercise 3 ΔΠΜΣ-ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΓΩΓΗΣ The aim of this exercise is to detect dice of a known size and orientation in an image. The method should also be able to recognize the number on each detected dice. The assumption is that the dice in the image are almost parallel with the image axes (e.g. <dice_01.tiff>). For the recognition you are free to use corner and edge detection techniques, for instance you can use built-in Matlab functions. Edge detection will be useful to find the contour of each dice while corner detection on the appropriate scale will provide its number. Visualize the results by superimposing on the initial image the centers of each detected dice and its number. For the initial tests of the system use the simpler image provided: <dice_01.tiff>. Once the system's performance is verified with that image continue your tests with the rest of the provided images or other images of your choice containing dice and comment on the results. For each experiment provide and comment on the parameter values that you used to detect the dice. If your system fails try to explain why. The program should be properly structured using functions for each sub-problem. One possible strategy that you could use is the following: Edge detection to obtain the edge image Ε using the edge Matlab function. Creation of a filter kernel Β that if applied on E will output high response on the location of the possible dice centers. Filtering of the edge image E (after converting it to double) with the filter Β followed by thresholding to obtain a binary image, D, with the possible center locations. Localization of the centroid of each connected component of D using the function regionprops. The output S.Centroid are the possible dice center locations. To convert the output of regionprops to a matrix and visualize the result you can use the following lines of code: centroids = cat(1, S.Centroid); imshow(i); hold on; plot(centroids(:,1), centroids(:,2), 'g*'); hold off; Localization of the corners C at the appropriate scale using the built-in corner function (to adjust the scale change the function's parameter FilterCoefficients). The scale is correct if each dice dot is detected as a single corner. Θεωρητική Ανάλυση Για την επίλυση του προβλήματος στηριζόμαστε στα φίλτρα που αναγνωρίζουν ακμές και γωνίες. Οι ακμές έχουν την ιδιότητα να μην αλλάζουν φωτεινότητα όταν το πέρασμα του φίλτρου γίνει κατά τη φορά τους, ενώ οι γωνίες αλλάζουν φωτεινότητα κατά το πέρασμα του φίλτρου σε οποιαδήποτε διεύθυνση από πάνω τους. Με αυτό τον τρόπο αναγνωρίζεται σαν γωνία και μία κουκκίδα διαμέτρου μικρότερης της ακμής του φίλτρου. Page14

Ανάπτυξη του Μαθηματικού Μοντέλου στο πρόγραμμα Έστω το φίλτρο: B=ones(lz)/(lz^2);, όπου lz=54 η ακμή του ζαριού. Η μέτρηση έγινε με τo data cursor του Matlab. Το παραπάνω φίλτρο, επειδή έχει τις διαστάσεις του ζαριού και περιέχει μονάδες, καθώς σαρώνει το ζάρι, μένει περισσότερες θέσεις στο κέντρο του ζαριού. Οπότε είναι λογικό να φωτίζει περισσότερο το κέντρο του. Ο αλγόρθμος: thr=240; % Mhdenizei tis times katw apo to thr gia na afairesei thorivo for i=1:si(1) for j=1:si(2) if I3(i,j)<thr I3(i,j)=0; ci=corner(i3); μηδενίζει τελείως τη φωτεινότητα των σημείων που έχουν φωτεινότητα μικρότερη από 240, ώστε να φανούν καλύτερα τα κέντρα των ζαριών. Ο αλγόριθμος: figure(1) imshow(i3); ci=corner(i3); % Dies centers that are corners with B filter sci=size(ci); kx=ci(:,1); % Orizei se dianusmata tis syntetagmenes twn kentrwn ky=ci(:,2); hold on % Sxediazei ta kentra twn zariwn plot(ci(:,1), ci(:,2), '*', 'Color', 'm') title(sprintf('no of Dies = %d\nwith Threshold=%d',scI(1),thr)); hold off τοποθετεί τα κέντρα των ζαριών στο figure(1) που όπως φαίνεται στην παρακάτω εικόνα είναι ξεκάθαρα. Με το φίλτρο Β χωρίς το μηδενισμό τιμών κάτω από 240 Με το φίλτρο Β με το μηδενισμό τιμών κάτω από 240 Page15

Ο αλγόριθμος: figure(2) imshow(i); zdlx=zeros(sci(1)); %Arxikopoiisi oriwn. Down limit in x dimension zulx=zeros(sci(1)); % Upper limit in x dimension zdly=zeros(sci(1)); % Down limit in y dimension zuly=zeros(sci(1)); % Upper limit in y dimension scv=4; %Syntelesths Asfaleias gia na aporif8oyn alles kouukides kai n akrati8oun oi eikseis tou zariou for k=1:sci(1) % Sarwnei ta zaria zdlx(k)=kx(k)-lz/2 + scv; % Orizei ta oria ka8e zariou. To 4 zulx(k)=kx(k)+lz/2 - scv; zdly(k)=ky(k)-lz/2 + scv; zuly(k)=ky(k)+lz/2 - scv; hold on %Topo8tei ta perigrammata twn zariwn me anafora ta kentra tous rectangle('position',[ci(k,1)-lz/2,ci(k,2)- lz/2,lz,lz],'edgecolor','r','linewidth',2) text(ci(k,1),ci(k,2)-6, num2str(k)) % Anaferei ton auksonta ari8mo kathe zariou hold off ορίζει τα όρια του κάθε ζαριού με βάση το κέντρο και τη διάτασή του, που στη συγκεκριμένη περίπτωση lz=54. Το scv κάνει τα όρια του ζαριού λίγο μικρότερα, ώστε αργότερα στον έλεγχο για το ποιες γωνίες είναι μέσα στο ζάρι να δώσει ασφάλεια για να αποφευχθούν οι γωνίες που είναι κοντά στις ακμές του ζαριού. Επίσης αριθμεί τα ζάρια και σχεδιάζει και τα περιγράμματα τους, όπως δείχνει η εικόνα. Page16

Επειδή οι κουκκίδες του ζαριού είναι μέρος των γωνιών, φιλτράρεται η εικόνα με canny και στο διάνυσμα c έχουμε τις διαστάσεις όλων των γωνιών. I1=edge(I,'canny'); c=corner(i1); % All corners after canny filter sc=size(c); Ο αλγόριθμος: figure(3) imshow(i1); z=zeros(sci(1)); for m=1:sc(1) %Sarwnei oles tis gwnies for n=1:sci(1) %%Sarwnei ola ta zaria if (c(m,1)>zdlx(n) && c(m,1)<zulx(n) && c(m,2)>zdly(n) && c(m,2)<zuly(n)) %Elefxei ka8e fwnia an vrisketai mesa sto zari z(n)=z(n)+1; %Metraei tis koukkides pou einai se kathe zari hold on plot(c(m,1), c(m,2), '*', 'Color', 'r') %Topo8etei tis koukkides pou einai mesa sto zari hold off ελέγχει ποιες γωνίες είναι εντός των οριών κάθε ζαριού. Αυτές είναι και οι χρήσιμες κουκκίδες, τις οποίες σχεδιάζει και τις αριθμεί στο διάνυσμα z. Ο αλγόριθμος: for nn=1:sci(1) %Die Indices fprintf('\ndie No%d indicates %d',nn, z(nn)); δίνει τα αποτελέσματα του προγράμματος που είναι ο αριθμός των ζαριών και η ένδειξη του καθενός, όπως φαίνεται στην επόμενη παράγραφο. Page17

Άσκηση 3. Εφαρμογές - Αποτελέσματα Για την εικόνα dice_01.tiff έχουμε: Die No1 indicates 4 Die No2 indicates 1 Die No3 indicates 2 Die No4 indicates 6 (*Θα πρέπει απλά να σας ενημερώσουμε ότι στο συγκεκριμένο ζάρι στην κάτω αριστεή βούλα έβλεπε 2 γωνίες για αυτό τον λόγο βγάζει σαν αποτέλεσμα 6) Die No5 indicates 3 Die No6 indicates 6 Τα παραπάνω αποτελέσματα επαληθεύονται με οπτική αναγνώριση. Page18

Βιβλιογραφική Αναφορά: 1. Forsyth 5.1, 5.2, 5.3 2. Szeliski 4.1.1, 4.2 3. Lectures Alexandros Makris Page19