PGM Format CS474/674 – Prof. Bebis.

Slides:



Advertisements
Similar presentations
Web Design Vocab 3 PNG, JPG, GIF, MP3, MPEG.
Advertisements

C++ Basics March 10th. A C++ program //if necessary include headers //#include void main() { //variable declaration //read values input from user //computation.
Introduction to MATLAB and image processing. MATLAB and images The help in MATLAB is very good, use it! An image in MATLAB is treated as a matrix Every.
Buffers Mohan Sridharan Based on slides created by Edward Angel 1 CS4395: Computer Graphics.
Image Representation and Manipulation CS302 Data Structures Prof. George Bebis
Introduction to Image Processing CS474/674 – Prof. Bebis.
Image Formation Fundamentals CS491E/791E. How are images represented in the computer?
Images and MATLAB Source of images: Science&subcategory=Digital Image Processing&isbn=
Image representation methods. Bitmap graphic method of a black-and-white image.
Image and Sound Editing Raed S. Rasheed Image Image. Digital image. – Raster images. – Vector Images. – Stereo Images. – Image File Formats Lossless.
Goals of Computer Vision To make useful decisions based on sensed images To construct 3D structure from 2D images.
WEB GRAPHICS. The Pixel Computer displays are comprised of rows and columns of pixels. Pixels are indivisible. Some common screen resolutions are:, 600.
Filtering (I) Dr. Chang Shu COMP 4900C Winter 2008.
Module Code: CU0001NI Technical Information on Digital Images Week -2.
Image Storage Bitmapped Graphics – in which an image is represented as a collection of dots Vector Graphics – in which an image is represented as a set.
Digital Image: Representation & Processing (2/2) Lecture-3
September 21, COMPUTER VISION WEB PAGE IS UP !! OR Simply go to computer science homepage.
ITEC 320 C++ Examples.
Topics 1.File Basics 2.Output Formatting 3.Passing File Stream Objects to Functions 4.More Detailed Error Testing 5.Member Functions for Reading and 6.Writing.
Image Representation. Digital Cameras Scanned Film & Photographs Digitized TV Signals Computer Graphics Radar & Sonar Medical Imaging Devices (X-Ray,
Bitmap Graphics. Bitmap Basics Bitmap Graphic Bitmap Graphic Paint Software Paint Software.
Graphics and Images Graphics and images are both non-textual information, that can be displayed and printed. These images may appear on screen as well.
Computer Programming TCP1224 Chapter 13 Sequential File Access.
Graphics & Images What File Format Do I Use?. Graphics & Images …..are visual images presented on some form of media (drawings, print, web, digital video)
FILE I/O IN C++. Using Input/Output Files A computer file  is stored on a secondary storage device (e.g., disk);  is permanent;  can be used to provide.
Raster Graphics 2.01 Investigate graphic image design.
Image File Formats. What is an Image File Format? Image file formats are standard way of organizing and storing of image files. Image files are composed.
Digital Image Editing Presented by John Hohn. File Formats JPEG – Joint Photographic Experts Group PNP – Portable Network Graphics GIF – Graphic Interchange.
Digital File Formats By Ali Aslam. JPEG JPEG Stands for Joint Photographic Experts Group. JPEG uses a lossy compression routine. Lossy compression means.
Introduction to Image Processing. What is Image Processing? Manipulation of digital images by computer. Image processing focuses on two major tasks: –Improvement.
Instructor: Mircea Nicolescu Lecture 4 CS 485 / 685 Computer Vision.
HTTP transaction with Graphics HTML file + two graphics files.
Lecture 27: Image Processing
Lecture 14 Arguments, Classes and Files. Arguments.
Binary Files. Text Files vs. Binary Files Text files: A way to store data in a secondary storage device using Text representation (e.g., ASCII characters)
File I/O in C++. Using Input/Output Files A computer file  is stored on a secondary storage device (e.g., disk);  is permanent;  can be used to provide.
Graphics and Image Data Representations 1. Q1 How images are represented in a computer system? 2.
13/15/2016CS150 Introduction to Computer Science 1 Summary  Assignment due on Wednesday, October 29,  Tutor will be in the lab on Tuesday evening,
Image Representation and Read/Write CS479/679 – Prof. Bebis.
Computer Skills2 / Scientific Colleges 1 Arrays Topics to cover: Arrays Data Types One-dimensional Arrays Two-dimensional Arrays.
1 ENERGY 211 / CME 211 Lecture 3 September 26, 2008.
Programming II I/O Streams and Data Files 1(c) Asma AlOsaimi.
2.01 Understand Digital Raster Graphics
2.01 Understand Digital Raster Graphics
Representation of image data
Sampling, Quantization, Color Models & Indexed Color
File Processing in C++ Data is stored in files so that it may be retrieved for processing when needed.
Introduction to Programming
2.01 Understand Digital Raster Graphics
Introduction to raster graphics
Image Formats.
What is a File? A file is a collection on information, usually stored on a computer’s disk. Information can be saved to files and then later reused.
2.01 Investigate graphic image design.
Saving Images from Fireworks
1.01 Investigate graphic types and file formats.
Outline Image formats and basic operations Image representation
Image Formation Fundamentals
Digital Image Fundamentals
2.01 Understand Digital Raster Graphics
2.01 Investigate graphic image design.
File Processing in C++ Data is stored in files so that it may be retrieved for processing when needed.
COMS 161 Introduction to Computing
2.01 Understand Digital Raster Graphics
CS150 Introduction to Computer Science 1
CS150 Introduction to Computer Science 1
do/while Selection Structure
CS150 Introduction to Computer Science 1
2.01 Investigate graphic image design.
2.01 Investigate graphic image design.
Lesson 6 File Types.
Presentation transcript:

PGM Format CS474/674 – Prof. Bebis

How are images represented?

Color images

Common image file formats PGM (Portable Gray Map) PNG (Portable Network Graphics) GIF (Graphic Interchange Format) JPEG (Joint Photographic Experts Group) TIFF (Tagged Image File Format) FITS (Flexible Image Transport System)

PGM Image file format (Portable Graymap) It adheres to the following simple model: Header Data (line by line, no breaks between lines).

PGM Image file format (cont.) Header contains at least: A signature or “magic number” (i.e., a short sequence of bytes for identifying the file format). The columns (M) and rows (N) of the image. The number of quantization levels (L).

PGM and related image file formats PGM is for grayscale images (8 bits/pixel) Closely-related formats are: PBM (Portable Bitmap), for binary images (1 bit/pixel) PPM (Portable Pixelmap), for color images (24 bits/pixel) ASCII or raw storage #Col #Row #Q (usually on a separate line) ASCII Raw

Image Class class ImageType { public: ImageType(); // constructor ImageType(ImageType&); // copy-constructor ~ImageType(); // destructor void getImageInfo(int&, int&, int&); void setImageInfo(int, int, int); void getVal(int, int, int&); void setVal(int, int, int); // more functions ... private: int N, M, Q; //N: # rows, M: # columns int **pixelValue; };

Input / Output Functions C++ routine to read the header of a PGM image: ReadImageHeader.cpp C++ routine to read a PGM image from a file: ReadImage.cpp C++ routine to write a PGM image to a file: WriteImage.cpp

An example - Threshold.cpp void readImageHeader(char[], int&, int&, int&, bool&); void readImage(char[], ImageType&); void writeImage(char[], ImageType&); void main(int argc, char *argv[]) { int i, j, M, N, Q; bool type; int val, thresh; // read image header readImageHeader(argv[1], N, M, Q, type); // allocate memory for the image array ImageType image(N, M, Q);

Threshold.cpp (cont’d) // read image readImage(argv[1], image); cout << "Enter threshold: "; cin >> thresh; // threshold image for(i=0; i<N; i++) for(j=0; j<M; j++) { image.getVal(i, j, val); if(val < thresh) image.setVal(i, j, 0); else image.setVal(i, j, 255); } // write image writeImage(argv[2], image);

Reading/Writing PGM images (2D array of int) (1D array of unsigned char) Use “write” (1D array of unsigned char) (2D array of int) Use “read”

Writing a PGM image to a file void writeImage(char fname[], ImageType& image) int N, M, Q; unsigned char *charImage; ofstream ofp; image.getImageInfo(N, M, Q); charImage = (unsigned char *) new unsigned char [M*N]; // convert integer values to unsigned char int val; for(i=0; i<N; i++) for(j=0; j<M; j++) image.getVal(i, j, val); charImage[i*M+j]=(unsigned char)val; }

Writing a PGM image... (cont’d) ofp.open(fname, ios::out | ios::binary); if (!ofp) { cout << "Can't open file: " << fname << endl; exit(1); } ofp << "P5" << endl; ofp << M << " " << N << endl; ofp << Q << endl; ofp.write( reinterpret_cast<char *>(charImage), (M*N)*sizeof(unsigned char)); if (ofp.fail()) { cout << "Can't write image " << fname << endl; exit(0); } ofp.close(); }

Reading a PGM image from a file void readImage(char fname[], ImageType& image) { int i, j; int N, M, Q; unsigned char *charImage; char header [100], *ptr; ifstream ifp; ifp.open(fname, ios::in | ios::binary); if (!ifp) { cout << "Can't read image: " << fname << endl; exit(1); }

Reading a PGM image from a file // read header ifp.getline(header,100,'\n'); if ( (header[0]!=80) || // 'P' (header[1]!=53) ) { // '5' cout << "Image " << fname << " is not PGM" << endl; exit(1); } ifp.getline(header,100,'\n'); // skip comments while(header[0]=='#') M=strtol(header,&ptr,0); // read M, N N=atoi(ptr);

Reading a PGM image …. (cont’d) ifp.getline(header,100,'\n'); // assumes Q is stored on a separate line Q=strtol(header,&ptr,0); charImage = (unsigned char *) new unsigned char [M*N]; ifp.read( reinterpret_cast<char *>(charImage), (M*N)*sizeof(unsigned char)); if (ifp.fail()) { cout << "Image " << fname << " has wrong size" << endl; exit(1); } ifp.close();

Reading a PGM image…(cont’d) // Convert unsigned characters to integers int val; for(i=0; i<N; i++) for(j=0; j<M; j++) { val = (int)charImage[i*M+j]; image.setVal(i, j, val); }

How do I “see” images on my computer? Unix/Linux: xv, gimp Windows: Photoshop Irfanview

How do I convert an image from one format to another? Use “Save As” option