Image Data and Display
RolandoV.Raqueo
Wednesday,August26,2015
For Class Consistency
% source ~rvrpci/.simg726.rc
RolandoV.Raqueo
Wednesday,August26,2015
Quiz #2 Topics
mkdir
chmod
cd
grep
ci and co
RolandoV.Raqueo
Wednesday,August26,2015
PBMPLUS FORMAT and xv
Digital image format concepts
PBMPLUS image interchange format.
Displaying digital image
xv image display
RolandoV.Raqueo
Wednesday,August26,2015
PBMPLUS Image Data Types
Bilevel Image Data Type
Black and White
Monochrome Image Data Type
Greyscale
RGB Color Image Data Type
Color
RolandoV.Raqueo
Wednesday,August26,2015
Two PBMPLUS
Representations
All PBMPLUS data formats have the
following representations
ASCII Format
(for Human Consumption)
RAW Format
(for Computer Consumption)
RolandoV.Raqueo
Wednesday,August26,2015
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 &
RolandoV.Raqueo
Wednesday,August26,2015
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 0s (zeroes) to represent white
(no ink deposited on paper)
Uses 1s (ones) to represent black
(ink deposited on paper)
RolandoV.Raqueo
Wednesday,August26,2015
Let us digress
The vi Problem
vi practice and creation of a bilevel image.
7x10 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.
RolandoV.Raqueo
Wednesday,August26,2015
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
RolandoV.Raqueo
10
Wednesday,August26,2015
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.
RolandoV.Raqueo
11
Wednesday,August26,2015
Problem #1 Solution
vi Smart Solution
6. Type the vi command p10 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 p10 times
9.You will now have a page of 700 zeroes.
RolandoV.Raqueo
12
Wednesday,August26,2015
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
RolandoV.Raqueo
13
Wednesday,August26,2015
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
RolandoV.Raqueo
14
Wednesday,August26,2015
Viewing current vi settings
:set all
noautoindent
autoprint
noautowrite
nobeautify
directory=/var/tmp
noedcompatible
noerrorbells
noexrc
flash
hardtabs=8
noignorecase
nolisp
nolist
magic
mesg
RolandoV.Raqueo
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
Wednesday,August26,2015
Saving vi Preferences
Preferences such as :set number
can be saved in the file .exrc in your
home directory (~)
RolandoV.Raqueo
16
Wednesday,August26,2015
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
(Willaskyouforconfirmation)
RolandoV.Raqueo
17
Wednesday,August26,2015
The Super-smart Solution
In UNIX
% repeat 70 echo -n 0 >>
one_line; echo >> one_line;
repeat 100 cat one_line >>
signature.dat
RolandoV.Raqueo
18
Wednesday,August26,2015
Lets Create another image
Put the signature.dat away for the
time being and create a simpler image
Call it bilevel.pbm
RolandoV.Raqueo
19
Wednesday,August26,2015
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
RolandoV.Raqueo
20
Wednesday,August26,2015
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
RolandoV.Raqueo
21
Wednesday,August26,2015
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
RolandoV.Raqueo
22
Wednesday,August26,2015
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)
RolandoV.Raqueo
23
Wednesday,August26,2015
Put a header on signature.dat
and display in xv
Method #1
Using a text editor, input the appropriate
header values.
RolandoV.Raqueo
24
Wednesday,August26,2015
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
RolandoV.Raqueo
25
Wednesday,August26,2015
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
RolandoV.Raqueo
26
Wednesday,August26,2015
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\
RolandoV.Raqueo
27
Wednesday,August26,2015
Portable Grey Map (PGM)
Monochrome Image Data Type
(Greyscale)
Displayed greyscale imagery
Grey values brightness.
Convention opposite that of the PBM
format
RolandoV.Raqueo
28
Wednesday,August26,2015
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
RolandoV.Raqueo
29
Wednesday,August26,2015
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
RolandoV.Raqueo
30
Wednesday,August26,2015
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\
RolandoV.Raqueo
31
Wednesday,August26,2015
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)
RolandoV.Raqueo
32
Wednesday,August26,2015
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 .
RolandoV.Raqueo
33
Wednesday,August26,2015
Portable Pixel Map (PPM)
RGB Color Image Data Type (Color)
EXAMPLE,
P3
3 3
255
255 0 0
128 0 0
0
0 0
RolandoV.Raqueo
0
255 0
0
128 0
128 128 128
34
0
0
255
0
0
128
255 255 255
Wednesday,August26,2015
PPM QUESTION
So what does the data
*4>HR\
look like as a
Raw PPM Image?
RolandoV.Raqueo
35
Wednesday,August26,2015
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
RolandoV.Raqueo
36
Wednesday,August26,2015
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]
RolandoV.Raqueo
37
Wednesday,August26,2015
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
-noneoption means not invoke LZW image compression.
RolandoV.Raqueo
38
Wednesday,August26,2015
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
RolandoV.Raqueo
PNM
FILE
2X
Scale
39
PNM
FILE
RAST
FILE
Wednesday,August26,2015
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 RolandoV.Raqueo
40
Wednesday,August26,2015
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
RolandoV.Raqueo
41
maxval 255
Wednesday,August26,2015
PBMPLUS Histogram Utilities
Greyscale histogram
pgmhist
Color histogram
ppmhist
RolandoV.Raqueo
42
Wednesday,August26,2015
Cutting out regions of interest
% pnmcut
usage: pnmcut x y width height
[pnmfile]
% pnmcrop
usage: pnmcrop [-white|-black]
[-left] [-right] [-top] [bottom] [pnmfile]
RolandoV.Raqueo
43
Wednesday,August26,2015
Pasting or Arranging Images
% pnmcat
pnmcat [-white|-black]
-leftright|-lr [-jtop|-jbottom]
pnmfile pnmfile ...
% pnmpaste
pnmpaste [-replace|-or|-and |xor]
frompnmfile x y [intopnmfile]
RolandoV.Raqueo
44
Wednesday,August26,2015
You have a bunch of images...
% pnmindex
pnmindex [-size N] [-across N]
[-colors N] [-black] pnmfile ...
RolandoV.Raqueo
45
Wednesday,August26,2015
Color Bands
Combination and Extraction
% rgb3ppm
rgb3toppm redpgmfile greenpgmfile
bluepgmfile
% ppmtorgb3
ppmtorgb3 [ppmfile]
results in .red .grn .blu
RolandoV.Raqueo
46
Wednesday,August26,2015
Spatial Operations
pnmconvol
pnmscale
pnmrotate
pnmflip
pnmshear
RolandoV.Raqueo
47
Wednesday,August26,2015
Greyscale/Color Operations
ppmquant
pnmdepth
ppmdither
RolandoV.Raqueo
48
Wednesday,August26,2015
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
RolandoV.Raqueo
49
Wednesday,August26,2015
Screen Capture through xv
Click on grab button
Specify a time delay
Left button grabs
window
Middle button grabs
a rectangle
Right button cancels
RolandoV.Raqueo
50
Wednesday,August26,2015
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)
RolandoV.Raqueo
51
Wednesday,August26,2015
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
RolandoV.Raqueo
52
Wednesday,August26,2015
Check Your Postscript File
Before Sending to the Printer
You can use the ghostview utility to
view a postscript file
RolandoV.Raqueo
53
Wednesday,August26,2015
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
RolandoV.Raqueo
54
Wednesday,August26,2015
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)
RolandoV.Raqueo
55
Wednesday,August26,2015
RolandoV.Raqueo
56
Wednesday,August26,2015