Image Data Format

advertisement
Image Data and Display
Rolando V. Raqueño
1
Saturday, March 19, 2016
For Class Consistency
% source ~rvrpci/.simg726.rc
Rolando V. Raqueño
2
Saturday, March 19, 2016
Quiz #2 Topics
• mkdir
• chmod
• cd
• grep
• ci and co
Rolando V. Raqueño
3
Saturday, March 19, 2016
PBMPLUS FORMAT and xv
• Digital image format concepts
– PBMPLUS image interchange format.
• Displaying digital image
– xv image display
Rolando V. Raqueño
4
Saturday, March 19, 2016
PBMPLUS Image Data Types
• Bilevel Image Data Type
– Black and White
• Monochrome Image Data Type
– Greyscale
• RGB Color Image Data Type
– Color
Rolando V. Raqueño
5
Saturday, March 19, 2016
Two PBMPLUS
Representations
• All PBMPLUS data formats have the
following representations
– ASCII Format
• (for Human Consumption)
– RAW Format
• (for Computer Consumption)
Rolando V. Raqueño
6
Saturday, March 19, 2016
Displaying Images
• Use xv utility for display and documentation
purposes.
– Note that xv is an X client
• Should NEVER be used for image processing
– USE ONLY FOR DISPLAY PURPOSES
• To invoke xv
% xv &
% xv filename.pgm &
Rolando V. Raqueño
7
Saturday, March 19, 2016
Portable Bit Map (PBM)
• Bilevel Image Data Type
– (Black and White)
• Used to represent printed black and white
imagery such as documents and faxes.
• Uses 0’s (zeroes) to represent white
– (no ink deposited on paper)
• Uses 1’s (ones) to represent black
– (ink deposited on paper)
Rolando V. Raqueño
8
Saturday, March 19, 2016
Let us digress –
The vi Problem
• vi practice and creation of a bilevel image.
• 7”x10” graph paper divided into 10 squares per inch.
• Cell not covered by ink
– value of zero (0).
• Cell fully or partially covered by ink
– value of one (1).
• You will have a total of 700 pixels to enter.
Rolando V. Raqueño
9
Saturday, March 19, 2016
Problem #1 Solution
• vi - Brute Force Solution
1. Is the current pixel 0 (zero) or 1 (one)?
2. Type the appropriate character
3. Repeat steps 1 and 2 until done
Rolando V. Raqueño
10
Saturday, March 19, 2016
Problem #1 Solution
• vi- Smart Solution
1. Type the vi command “70i0”
“seventy, i - for insert, 0 (zero)”
2. Hit the ESCAPE key to get you out of insert mode.
3. Type the vi command “o” to open a new line
4. Hit the ESCAPE key to get you out of insert mode.
5. Move back up to the line of zeroes and use the yy
(yank command) to make a copy of the line of 70
zeroes.
Rolando V. Raqueño
11
Saturday, March 19, 2016
Problem #1 Solution
• vi- Smart Solution
6. Type the vi command “p” 10 times
7. Move back up to the top line of zeroes and use
the 10yy (yank command) to make a copy of
10 lines of 70 zeroes per line.
8. Type the vi command “p” 10 times
9.You will now have a page of 700 zeroes.
Rolando V. Raqueño
12
Saturday, March 19, 2016
Problem #1 Solution
• vi- Smart Solution
10. You can navigate to the areas that need to be
changed to “1” and use the “R” command to
replace contiguous set of characters.
11. Hit the ESCAPE key to get you out of insert mode.
12. Navigate to next section and repeat steps 10 -12
until done.
13. Save the file out and exit vi
:wq signature.dat
Rolando V. Raqueño
13
Saturday, March 19, 2016
Yet another vi Digression
• To show line number in vi, execute the
following command
:set number
• To disable line numbers in vi, execute
the following command
:set nonumber
Rolando V. Raqueño
14
Saturday, March 19, 2016
Viewing current vi settings
:set all
noautoindent
autoprint
noautowrite
nobeautify
directory=/var/tmp
noedcompatible
noerrorbells
noexrc
flash
hardtabs=8
noignorecase
nolisp
nolist
magic
mesg
Rolando V. Raqueño
nomodelines
noshowmode
nonumber
noslowopen
nonovice
tabstop=8
nooptimize
taglength=0
paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
prompt
tagstack
noreadonly
term=vt220
redraw
noterse
remap
timeout
report=5
ttytype=vt220
scroll=11
warn
sections=NHSHH HUuhsh+c
window=23
shell=/bin/csh
wrapscan
shiftwidth=8
wrapmargin=0
noshowmatch
nowriteany
15
Saturday, March 19, 2016
Saving vi Preferences
• Preferences such as :set number
can be saved in the file .exrc in your
home directory (~)
Rolando V. Raqueño
16
Saturday, March 19, 2016
A vi Command to Always
Remember
• To replace all occurrences or a string in
a file with new string.
:%s/string1/string2/g
OR
:%s/string1/string2/gc
(Will ask you for confirmation)
Rolando V. Raqueño
17
Saturday, March 19, 2016
The Super-smart Solution
• In UNIX
% repeat 70 echo -n 0 >>
one_line; echo >> one_line;
repeat 100 cat one_line >>
signature.dat
Rolando V. Raqueño
18
Saturday, March 19, 2016
Let’s Create another image
• Put the signature.dat away for the
time being and create a simpler image
• Call it bilevel.pbm
Rolando V. Raqueño
19
Saturday, March 19, 2016
Portable Bit Map (PBM)
• Bilevel Image Data Type
– For the ASCII file format, the file header is given by P1
– width and height of the image.
– Comments are indicated by the # character
P1
# This is a 16 column x 3 row
# PBM ASCII image
# Created by using vi
16 3
001010100011010000111110
010010000101001001011100
Rolando V. Raqueño
20
Saturday, March 19, 2016
Portable Bit Map (PBM)
• Make a copy of bilevel.pbm and edit the copy to look like
the following,
P1
#This is a 16 column x 3 row PBM ASCII
#image
#
16 3
0010101000110100
0011111001001000
0101001001011100
Rolando V. Raqueño
21
Saturday, March 19, 2016
Portable Bit Map (PBM)
• When displayed looks like
P1
# This is a 16 column x 3 row PBM ASCII
# image
#
16 3
0010101000110100
0011111001001000
0101001001011100
Rolando V. Raqueño
22
Saturday, March 19, 2016
How to Add a PBMPLUS
Header to an Image File
• If its an ASCII file you can use vi
• Use the cat command to concatenate a
header from a file or the keyboard
(standard input - stdio)
Rolando V. Raqueño
23
Saturday, March 19, 2016
Put a header on signature.dat
and display in xv
• Method #1
– Using a text editor, input the appropriate
header values.
Rolando V. Raqueño
24
Saturday, March 19, 2016
Put a header on signature.dat
and display in xv
• Method #2
– Edit a file called header.dat containing
the header information
– Concatenate the header file at the
beginning of signature.dat using the
cat command
% cat header.dat signature.dat >
signature.pbm
Rolando V. Raqueño
25
Saturday, March 19, 2016
Put a header on signature.dat
and display in xv
• Method #3
– Concatenate the header data from the keyboard
directly to the beginning of signature.dat
using the cat command
% cat - signature.dat > signature.pbm
P1
70 100
^D
Rolando V. Raqueño
26
Saturday, March 19, 2016
Portable Bit Map (PBM)
• There is also a binary version of the PBM
image type which uses a P4 header such
as the one below
P4
# This is a 16 column x 3 row PBM RAW
# image
16 3
*4>HR\
Rolando V. Raqueño
27
Saturday, March 19, 2016
Portable Grey Map (PGM)
• Monochrome Image Data Type
(Greyscale)
– Displayed greyscale imagery
– Grey values  brightness.
– Convention opposite that of the PBM
format
Rolando V. Raqueño
28
Saturday, March 19, 2016
Portable Grey Map (PGM)
• Monochrome Image Data Type (Greyscale)
– EXAMPLE,
P2
# This is a 3 column x 2 row PGM ASCII image
# With a possible maximum grey value of 255
3 2
255
42 52 62
72 82 92
Rolando V. Raqueño
29
Saturday, March 19, 2016
Portable Grey Map (PGM)
• When displayed, the image is shown below
P2
# This is a 3 column x 2 row PGM ASCII image
# With a possible maximum grey value of 255
3 2
255
42 52 62
72 82 92
Rolando V. Raqueño
30
Saturday, March 19, 2016
Portable Grey Map (PGM)
• There is also a binary version of the PGM image type
which uses a P5 header such as the one below
P5
# This is a 3 column x 2 row PGM Raw
# image
3 2
255
*4>HR\
Rolando V. Raqueño
31
Saturday, March 19, 2016
Portable Pixel Map (PPM)
• RGB Color Image Data Type (Color)
– Red, Green, and Blue bands
– Arranged in pixel-interleaved format or
band interleaved by pixel (BIP)
Rolando V. Raqueño
32
Saturday, March 19, 2016
Portable Pixel Map (PPM)
• RGB Color Image Data Type (Color)
– For the ASCII file format,
• P3
• width, height
• maximum grey level possible of the image
– The pixel values are given as a triple
representing the red, green, and blue
components .
Rolando V. Raqueño
33
Saturday, March 19, 2016
Portable Pixel Map (PPM)
• RGB Color Image Data Type (Color)
– EXAMPLE,
P3
3 3
255
255 0 0
128 0 0
0
0 0
Rolando V. Raqueño
0
255 0
0
128 0
128 128 128
34
0
0
255
0
0
128
255 255 255
Saturday, March 19, 2016
PPM QUESTION
So what does the data
*4>HR\
look like as a
Raw PPM Image?
Rolando V. Raqueño
35
Saturday, March 19, 2016
Conversion of Raw Files to
PBMPLUS Format
• Alternative to manually prepending a
header file using cat command
rawtopbm, rawtopgm, or rawtoppm
% rawtopgm 256 256
~rvrpci/pub/MyCat_P5.raw >
MyCat.pgm
Rolando V. Raqueño
36
Saturday, March 19, 2016
Usage Note About PBMPLUS
Commands
• PBMPLUS commands heavily use the
UNIX redirection and piping
• To get help use -h option.
% rawtopgm -h
usage: rawtopgm [-headerskip N] [rowskip N] [-tb|-topbottom] [<width>
<height>][rawfile]
Rolando V. Raqueño
37
Saturday, March 19, 2016
Converting PNM Image File
to Another Format
• PNM is a generic designator for all PBM, PGM,
and PPM
• Convert a PBMPLUS format file into a TIFF
– e.g., signature.pbm to signature.tiff.
• Use the following command
% pnmtotiff -none signature.pbm >
signature.tiff
-none option means not invoke LZW image compression.
Rolando V. Raqueño
38
Saturday, March 19, 2016
Rudimentary Image Processing
Using the PBMPLUS Utilities
• Requires that all input be in some form of
PBM, PGM, PPM image
• Supposed we wanted to enlarge a tiff file (
e.g., signature.tiff) by a scale factor
of 2x and then convert it to a SUN raster
file.
TIFF
FILE
Rolando V. Raqueño
PNM
FILE
2X
Scale
39
PNM
FILE
RAST
FILE
Saturday, March 19, 2016
Rudimentary Image Processing
Using the PBMPLUS Utilities
• The previous process can actually be
executed in one UNIX command
% tifftopnm signature.tiff | pnmscale 2.0 |
pnmtorast > signature.rast
• In fact you can pipe the information directly
to xv before writing it out to another format
% tifftopnm signature.tiff | pnmscale 2.0 |
pnmtorast | xv Rolando V. Raqueño
40
Saturday, March 19, 2016
PBMPLUS File Information
• Supposed you wanted to know what the
characteristics are of a particular
PBMPLUS file you can give the
following command
% pnmfile MyCat.pgm
MyCat.pgm: PGM raw, 256 by 256
Rolando V. Raqueño
41
maxval 255
Saturday, March 19, 2016
PBMPLUS Histogram Utilities
• Greyscale histogram
pgmhist
• Color histogram
ppmhist
Rolando V. Raqueño
42
Saturday, March 19, 2016
Cutting out regions of interest
% pnmcut
usage: pnmcut x y width height
[pnmfile]
% pnmcrop
usage: pnmcrop [-white|-black]
[-left] [-right] [-top] [bottom] [pnmfile]
Rolando V. Raqueño
43
Saturday, March 19, 2016
Pasting or Arranging Images
% pnmcat
pnmcat [-white|-black] leftright|-lr [-jtop|-jbottom]
pnmfile pnmfile ...
% pnmpaste
pnmpaste [-replace|-or|-and |xor]
frompnmfile x y [intopnmfile]
Rolando V. Raqueño
44
Saturday, March 19, 2016
You have a bunch of images...
% pnmindex
pnmindex [-size N] [-across N]
[-colors N] [-black] pnmfile ...
Rolando V. Raqueño
45
Saturday, March 19, 2016
Color Bands
Combination and Extraction
% rgb3ppm
rgb3toppm redpgmfile greenpgmfile
bluepgmfile
% ppmtorgb3
ppmtorgb3 [ppmfile]
• results in .red .grn .blu
Rolando V. Raqueño
46
Saturday, March 19, 2016
Spatial Operations
• pnmconvol
• pnmscale
• pnmrotate
• pnmflip
• pnmshear
Rolando V. Raqueño
47
Saturday, March 19, 2016
Greyscale/Color Operations
• ppmquant
• pnmdepth
• ppmdither
Rolando V. Raqueño
48
Saturday, March 19, 2016
Really Useful Stuff
• Doing Screen Captures under X
% xwd | xwdtopnm | pnmdepth
255 | pnmtotiff > screen.tif
• Your cursor will turn into crosshairs
• Click on the window you want to capture
Rolando V. Raqueño
49
Saturday, March 19, 2016
Screen Capture through xv
• Click on grab button
• Specify a time delay
• Left button grabs
window
• Middle button grabs
a rectangle
• Right button cancels
Rolando V. Raqueño
50
Saturday, March 19, 2016
Getting Hardcopy Output
• Determining what type of display device you
have
IDL> help,/device
Available graphics_devices: CGM HP MAC NULL PCL PS Z
Current graphics device: MAC
Macintosh Quickdraw Driver
Screen Resolution: 640x442
Physical Color Map Entries (Used / Total): 220 / 256
Current Window Number: 0, size: (320,240) type: Window.
Graphics Function: 3 (copy)
Current Font: Chicago
Default Backing Store: Pixmap.
Window Status:
0: Window 320x240 (Retained)
Rolando V. Raqueño
51
Saturday, March 19, 2016
Getting Hardcopy Output
• To get a postscript output of your plot
IDL>
IDL>
IDL>
IDL>
IDL>
set_plot,’ps’
device, Filename=‘new_plot.ps’
plot, my_data,Title=‘Imaging Lab 1’
device, /close
$lpr -Pdip new_plot.ps
• You then want to return your output device
to whatever display device you had
originally
IDL> set_plot,’MAC’
Rolando V. Raqueño
52
Saturday, March 19, 2016
Check Your Postscript File
Before Sending to the Printer
• You can use the ghostview utility to
view a postscript file
Rolando V. Raqueño
53
Saturday, March 19, 2016
Note Well
• Always make sure that the printer to which
you will be sending your job is capable of
talking Postscript. If it does not, you will be
killing many trees.
• To find out the status of your job
% lpq -P(printer name)
• To kill a print job
% lprm -P(printer name) job_number
Rolando V. Raqueño
54
Saturday, March 19, 2016
Getting Encapsulated
Postscript File (EPS)
• To get a postscript file of your plot that you
can include into another document
IDL>
IDL>
IDL>
IDL>
IDL>
set_plot,’ps’
device, /encapsulated, /preview
device, Filename=‘new_plot.eps’
plot, my_data,Title=‘Imaging Lab 1’
device, /close
• The above process creates what is known
as an Encapsulated Postscript File (EPS)
Rolando V. Raqueño
55
Saturday, March 19, 2016
Rolando V. Raqueño
56
Saturday, March 19, 2016
Download