chap3ImageDisplayP1.ppt

Download Report

Transcript chap3ImageDisplayP1.ppt

Image Display
• MATLAB functions for displaying image
• Bit Planes
• Spatial resolution
• Quantization
• Dithering
1
MATLAB Functions
• Command: image
– display matrix as image
– default: use current color map to assign color
• Command: imshow
– display uint8 matrix as image
– for double matrix, display in the range of [0,1]
2
MATLAB: image Function
• Require mapping to display grayscale images
• No mapping required for true color images
• Commands to add after image:
– truesize : display one matrix element as one pixel
– axis off : turn off axis labelling
– colormap(gray(num_color)) : adjust color map
to grayscale
– Note: Find the number of gray level by command
size(unique(matrix))
3
Notes on Color Map
• Mapping to fewer color than required.
– Result: Brighter image or Darker image
• Mapping to more color than required
– Result: Brighter image or Darker image
4
Notes on Color Map
• Mapping to fewer color than required produces
brighter image.
(pixel whose intensity higher than the defined
value assigned the highest value (white))
• Mapping to more color than required produces
darker image.
(no pixels mapped to white)
• For indexed color image, map to the image’s
palette.
5
imshow for Double Matrix
• Range is [0,1] not [0,255].
• How to do it?
– imshow(double_matrix/255)
• Vary the brightness of the image:
– imshow(double_matrix/value)
• value > 255: darker; value < 255: brighter
6
Conversion: Double to Uint Image
• Manually
>> b = double(a);
>> c = b/255;
• Specific command: im2double
>> d = im2double(a);
• Note: im2double automatically scale the
output to the range of [0,1]
7
Conversion: Double to Uint Image
• Manually
>> a = uint8(c * 255);
• Specific command: im2uint8
>> a = im2uint8(c);
• Note: im2uint8 automatically scale the input
(range [0,1]) to the range of [0,255]
8
Display Binary Image
• Use uint8 data type with logical flag on
>> imshow(logical(binary_matrix))
Or
>> imshow(double(binary_matrix))
• For normal grayscale image
>> logical_matrix = integer_matrix > threshold
• Conversion: logical to uint8
>> matrix = + matrix
9
Bit Plane
• 8-bit unsigned integer
LSB  Least Significant Bit Plane
MSB  Most Significant Bit Plane
• Bit plane: binary image whose pixel is the
value at the particular bit in the 8-bit unsigned
integer
10
Bit Plane: Lena
Bit Plane#0
Bit Plane#1 Bit Plane#2 Bit Plane#3
Bit Plane#4
Bit Plane#5 Bit Plane#6 Bit Plane#7
11
Bit Plane Construction: Example
>> c = imread(‘cameraman.tif’);
>> cd = double(c);
>> c0 = mod(cd,2);
>> c1 = mod(floor(cd/2),2);
>> c2 = mod(floor(cd/4),2);
>> c3 = mod(floor(cd/8),2);
>> c4 = mod(floor(cd/16),2);
>> c5 = mod(floor(cd/32),2);
>> c6 = mod(floor(cd/64),2);
>> c7 = mod(floor(cd/128),2);
12
Spatial Resolution
• Density of the pixels over the image
• Higher spatial resolution = more pixels in the
image
• Change spatial resolution by imresize
command
Syntax: imresize(matrix, scale, method)
imresize(matrix, scale)
method: ‘nearest’ , ‘bilinear’, ‘bicubic’
13
Decrease Spatial Resolution
• E.g. Lower the resolution by half on x and y
axis
>> imresize(x,1/2);
14
Increase Spatial Resolution
• E.g. Increase the spatial resolution by two on
X and Y axes
>> imresize(x,2);
15
Interpolation Example
450% Scaled up
Nearest Neighbor
Bicubic
Bilinear
16
http://www.dpreview.com/learn/?/key=interpolation
Quantization
• Digitize the image so that the number of the
unique value is within the available range
3
2
1
0
0
1
2
3
17
Uniform Quantization
Quantized value
3
2
x
1
0
0.25MAX 0.5MAX 0.75MAX
MAX Input value
18
Uniform Quantization
MAX = 255
Original values
0 - 63
64 -127
128 -191
192 - 255
Output value
0
1
2
3
19
Quantization: Example
20
Quantization in MATLAB
• Quantization is simply applying flooring
function after division
• Input image matrix = x
• Number of output grayscales = n
• Quantized output: f = floor(double(x)/n);
21
Quantization in MATLAB: Method 1
Command
uint8(floor(double(x)/2)*2)
uint8(floor(double(x)/4)*4)
uint8(floor(double(x)/8)*8)
uint8(floor(double(x)/16)*16)
uint8(floor(double(x)/32)*32)
uint8(floor(double(x)/64)*64)
uint8(floor(double(x)/128)*128)
Number of grayscales
128
64
32
16
8
4
2
22
Quantization in MATLAB: Method 2
Command
Number of grayscales
imshow(grayslice(x,128),gray(128))
imshow(grayslice(x,64),gray(64))
imshow(grayslice(x,32),gray(32))
imshow(grayslice(x,16),gray(16))
imshow(grayslice(x,8),gray(8))
imshow(grayslice(x,4),gray(4))
imshow(grayslice(x,2),gray(2))
128
64
32
16
8
4
2
grayslice produces a uint8 version of image x,
gray(n)
produces a color map of n values.
23