i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y)

Σχετικά έγγραφα
ιαφάνειες παρουσίασης #6 (β)

Διάλεξη 18η: Διαχείρηση Αρχείων

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Μεθόδων Επίλυσης Προβλημάτων

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

4ο σετ σημειώσεων - Χειρισμός αρχείων και structs

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

Επεξεργασία Αρχείων Κειµένου

Αρχές Προγραμματισμού

Εργαστήριο 9: Αρχεία

Ανάπτυξη και Σχεδίαση Λογισμικού

Τμήμα Επιστήμης Υπολογιστών ΗΥ-474. Ψηφιακή Εικόνα. Χωρική ανάλυση Αρχεία εικόνων

Ενδεικτική περιγραφή μαθήματος

Περιεχόμενα. Πρόλογος... 21

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

Προγραμματισμός Υπολογιστών με C++

Φροντιςτήριο. Linked-List

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Περιεχόμενα. Πρόλογος... 17

Περιεχόµενα. Πρόλογος... 15

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Διαδικαστικός Προγραμματισμός

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Η γλώσσα προγραμματισμού C Χειρισμός αρχείων

Προγραμματισμός Η/Υ (ΤΛ2007 )

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

Προγραµµατισµός. Αρχεία

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Διαδικασιακός Προγραμματισμός

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Βιβλιοθήκη stdio. Προγραμματισμός II 1

24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Προγραμματισμός Υπολογιστών με C++

Σημειώσεις όγδοης εβδομάδας

Δομές δεδομένων ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Προγραμματισμός I (Θ)

Ανάπτυξη και Σχεδίαση Λογισμικού

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

Παράδειγµα (2) Πίνακες (Arrays) (2) Πίνακες (Arrays) (1) int num[5];

Προγραμματισμός II Τα κανάλια stdin, stdout, stderr κανάλι καθιερωμένης εισόδου stdin κανάλι καθιερωμένης εξόδου stdout κανάλι σφαλμάτων stderr

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης

FILE *fopen(const char *fname, const char *mode) void fclose(file *f) void fflush(file *f)

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΣΗΜΕΙΩΣΕΙΣ. Αρχεία και Μεταδεδομένα

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

11.5 Ολοκληρωμένο παράδειγμα Μισθοδοσία

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομημένος Προγραμματισμός (ΤΛ1006)

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Διάλεξη 9: Δυναμική Δέσμευση Μνήμης

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)

Προγραμματισμός Ι (ΗΥ120)

double sum(double a, double b) { return(a+b); } double my_avg(double a, double b) { return(sum(a, b)/2.0); }

ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Σημειώσεις έκτης και έβδομης εβδομάδας

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI Org. GREEK COMPUTER SOCIETY MEMBER OF IFIP, IOI Org.

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Μεθόδων Επίλυσης Προβλημάτων

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

Γλώσσα Προγραμματισμού C

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι (ΗΥ120)

ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης (Κεφάλαιο , KNK-2ED)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Προγραμματισμό για ΗΜΥ

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Transcript:

D4 2 2. (pixel) 2 ( ) M N (x, y) (x, y ) ( )f(x, y) j N- i j i f(i, j) M-. ij f(i, j) 8 2 8 = 256, 2 2 f(x, y) 3,, R(x, y), G(x, y), B(x, y) 256 2 2.2 ( ) JPEG (Joint Photographic Experts Group), GIF (Graphics Interchange Format), TIFF (Tag Image File Format), ppm (Portable Pixmap File Format), pbm (Portable Bitmap File Format), pgm (Portable Graymap File Format) < > + < > < > < > < > pgm raw ( pgm-raw ) 256

<pgm-raw >::=< >< > < >::=< >< >< > < >< >< > < >< > < >::=P5 < >::=< > < >::=< > < >::=< > < >::=< > < >< > < >::= 2 3 4 5 6 7 8 9 < >::=< > < >< > < >::= ( ) ( \t ) ( \n ) ( \r ) < >::=< > < >::=< > < >< > 2. pgm-raw pgm-raw 2 2 < > # # ( \n ) < > < >, < >, < > ASCII < > ( ) < > < > ( ) < > 3 4 (a) 3 4 4 pgm-raw < > 4 (b) < > 4 (c) 2 2 N N- N- N + N+2 2N- M- N(M-) NM- 3. 2

2 3 2 (a) P5 # This is a comment. 3 4 3 (b) 4. pgm-raw,, 2, 3, 2,,, 3, 2,,, (c) 2.3 f (i, j) f(i, j) g(i, j) g g(i, j) = m 2 m= m n 2 n= n C m,n f(i + m, j + n) () C m,n 3 3 (m =, m 2 =, n =, n 2 = ) C m,n C m,n 5 C -, - C, - C,- C -, C, C, C -, C, C, 5. 2.4 ( ) 2.4. gradient g(i, j) = f(i, j) = i u i + i u j ) 2 ( ) 2 ( = + (2) i j u i, u j 3

i, j / i, / j - = f(i +, j) f(i, j) - i - = f(i, j + ) f(i, j) j (a) (i +.5, j +.5) i j = f(i +, j) f(i, j) = f(i, j + ) f(i, j ) - - - (b) 6. Prewitt 3 3 6 Prewitt 7 Sobel (2) g(i, j) = i + j (3) - -2 2 - (a) - -2 2 - (b) 7. Sobel 2.4.2 2 2 2 g(i, j) = 2 f i 2 + 2 f j 2 (4) 2 f i 2 = f(i +, j) f(i, j) f(i, j) f(i, j) = f(i +, j) 2f(i, j) + f(i, j) (5) 2 f j 2 = f(i, j + ) 2f(i, j) + f(i, j ) (6) 4

(5), (6) (4) 8(a) 45 8(b) 4 8 2.4.3 Roberts Robers -4 (a) 4-8 (b) 8 8. g(i, j) = ( ) 2 ( 2 f(i, j) f(i +, j + ) + f(i, j + ) f(i +, j)) (7) Robers Forsen Forsen g(i, j) = f(i, j) f(i +, j + ) + (f(i, j + ) f(i +, j) (8) g(i, j) = maxf(i + m, j + n) m, n minf(i + m, j + n) m, n (9) 2.5 2 2 g(i, j) =, (f(i, j) T ), (f(i, j) > T ) () T 2 T T 2 T ( ) 2 σ B 2 T σ B 2 (k) = ω (µ µ T ) 2 + ω (µ µ T ) 2 () σ B 2 (T ) = max k L σ B 2 (k) (2) 5

n i = i N = p i = n i /N k L ω = p i, ω = p i i= i=k+ k L L µ = ip i /ω, µ = ip i /ω, µ T = i= i=k+ i=,, 2,, L- k [, k] [k +, L-] 2 2 2 ip i 3. pgm-raw pgm-raw (a) Prewitt + (2) (b) Prewitt + (3) (c) Sobel + (2) (d) Sobel + (3) (e) 4 (f) 8 (g) Robers (h) Forsen (i) 2. pgm-raw 2 pgm-raw 3. 2 2 2 4. 2. A pgm-raw 2. 6

3 3 (, 5) () g(, 5) = C, f(, 4) + C, f(, 4) + C, f(, 4) + C, f(, 5) + C, f(, 5) + C, f(, 5) + C, f(, 6) + C, f(, 6) + C, f(, 6) (3) f(, 4), f(, 5), f(, 6) 3. 2.4 [, 255] 4. 256 unsigned char unsigned char 255 256 unsigned char 5. main. 2. 3. [], :,, 992. [2] :, C MAGAZINE, vol. 5, No. 7, pp. 38 69, Jul. 993. 7

/********************************************************************** sample.c 994/9/: Created 24/2/24: #include was modified ********************************************************************* #include <stdio.h> #include <stdlib.h> /* * #define min(a, B) ((A)<(B)? (A) : (B)) #define max(a, B) ((A)>(B)? (A) : (B)) /* * typedef struct int width; /* int height; /* int maxvalue; /* ( ) unsigned char *data; /* /* image_t; / * FILE * parsearg (int argc, char **argv) FILE *fp; /* if (argc!= 2) goto usage; fp = fopen (argv[], "rb"); /* /* if (fp == NULL) /* fputs ("Opening the input file was failend\n", stderr); goto usage; return fp; /* usage: fprintf (stderr, "usage : %s <pgm file>\n", argv[]); fputs ("\t<pgm file> : PGM-RAW format image file\n", stderr); exit (); / * * image_t *ptimage (width height) * (maxvalue) * initimage (image_t * ptimage, int width, int height, int maxvalue) ptimage->width = width; ptimage->height = height; ptimage->maxvalue = maxvalue; /* ptimage->data = (unsigned char *) malloc ((size_t) (width * height)); if (ptimage->data == NULL) /* fputs ("out of memory\n", stderr); exit (); * FILE *fp \n char * char *buf n * n- * # * buf EOF (End * Of File) NULL char * readoneline (char *buf, int n, FILE * fp) char *fgetsresult; do fgetsresult = fgets (buf, n, fp); while (fgetsresult!= NULL && buf[] == # ); /* EOF # /* return fgetsresult; / * PGM-RAW * PGM-RAW FILE *fp * * image_t *ptimage * * ptimage->data * *!!!! * PGM-RAW * PGM-RAW * * readpgmrawheader (FILE * fp, image_t * ptimage) int width, height, maxvalue; char buf[28]; /* (P5) if (readoneline (buf, 28, fp) == NULL) if (buf[]!= P buf[]!= 5 ) /* if (readoneline (buf, 28, fp) == NULL) if (sscanf (buf, "%d %d", &width, &height)!= 2) if (width <= height <= ) /* if (readoneline (buf, 28, fp) == NULL) if (sscanf (buf, "%d", &maxvalue)!= ) if (maxvalue <= maxvalue >= 256) /* initimage (ptimage, width, height, maxvalue); return; /* / error: * fputs ("Reading PGM-RAW header was failed\n", stderr); exit ();

/ * PGM-RAW * FILE *fp * image_t *ptimage data readpgmrawbitmapdata (FILE * fp, image_t * ptimage) if (fread (ptimage->data, sizeof (unsigned char), ptimage->width * ptimage->height, fp)!= ptimage->width * ptimage->height) /* fputs ("Reading PGM-RAW bitmap data was failed\n", stderr); exit (); / * ( ) * image_t *originalimage ( * ) image_t *resultimage filteringimage (image_t * resultimage, image_t * originalimage) int x, y; int width, height; /* originalimage resultimage /* width = min (originalimage->width, resultimage->width); height = min (originalimage->height, resultimage->height); for (y = ; y < height; y++) for (x = ; x < width; x++) resultimage->data[x + resultimage->width * y] = (originalimage->maxvalue - originalimage->data[x + originalimage->width * y]) * resultimage->maxvalue / originalimage->maxvalue; / * PGM-RAW * image_t *ptimage FILE *fp * PGM-RAW writepgmrawheader (FILE * fp, image_t * ptimage) /* (P5) if (fputs ("P5\n", fp) == EOF) /* if (fprintf (fp, "%d %d\n", ptimage->width, ptimage->height) == EOF) /* if (fprintf (fp, "%d\n", ptimage->maxvalue) == EOF) return; error: fputs ("Writing PGM-RAW header was failed\n", stderr); exit (); writepgmrawbitmapdata (FILE * fp, image_t * ptimage) if (fwrite (ptimage->data, sizeof (unsigned char), ptimage->width * ptimage->height, fp)!= ptimage->width * ptimage->height) /* fputs ("Writing PGM-RAW bitmap data was failed\n", stderr); exit (); /* * int main (int argc, char **argv) image_t originalimage, resultimage; FILE *fp; /* fp = parsearg (argc, argv); /* /* readpgmrawheader (fp, &originalimage); /* readpgmrawbitmapdata (fp, &originalimage); /* initimage (&resultimage, originalimage.width, originalimage.height, originalimage.maxvalue); /* filteringimage (&resultimage, &originalimage); /* writepgmrawheader (stdout, &resultimage); /* writepgmrawbitmapdata (stdout, &resultimage); return ; / * PGM-RAW * image_t *ptimage FILE *fp * PGM-RAW