int always rounds
Download
Report
Transcript int always rounds
Image Enhancement
Christoph Lampert / Chris Wojtan
Some slides adapted from Selim Aksoy, Bilkent University
Representing an Image in Code
2D matrix of values, starting from the upper left
(start counting at zero)
Pixel [1][3]
Integer, floating point, …, ?
boolean (0=black, 1=white)
floating point (0.0=black, 1.0=white)
8-bit integer (0=black, 255=white) – most common
Whatever is convenient
Floating point is good for continuous math
(exponentiation, division, …)
Integers are useful for dividing up values into discrete sets
(histograms, segmentation, …)
2
ImageJ
You will write some code for homework
Accessing and writing in an image
image.get(10,15);
tells us the pixel value at row 10, column 15
image.set(10, 25, 0);
sets that pixel value to black
Repeating an operation for every pixel
for (int y=0; y<yMax; y++)
for (int x=0; x<xMax; x++)
image.set(x, y, 0);
3
Beware – “casting”
between int and double
Most images need ints in the end, but intermediate computation should
be in doubles.
int always rounds to an integer. This is usually undesired.
int y = 0.9;
int y = 128/255;
int y = sin(x);
// y=0
// y=0
// y=0
“Cast” between the two types
(double) will treat a number like a real value
(int) will treat a number like an integer
int x = 100;
int num_pixels = 1024;
double f = (double) x / (double) num_pixels;
int output_value = (int) (f * 255.0);
4
ImageJ Demos
Black.java
Linear.java
SineWave.java
Checker.java
Circle.java
Max.java
Template.java
Compute_Histogram.java
5
Image enhancement
The principal objective of enhancement is to
process an image so that the result is more
suitable than the original for a specific application.
Enhancement can be done in
Spatial domain,
Frequency domain.
Common reasons for enhancement include
Improving visual quality,
Improving machine recognition accuracy.
6
Image enhancement
First, we will consider point processing where
enhancement at any point depends only on the
image value at that point.
7
Image enhancement
First, we will consider point processing where
enhancement at any point depends only on the
image value at that point.
For gray level images, we will use a
transformation function of the form
s = T(r)
where “r” is the original pixel value and “s” is the
new value after enhancement.
8
Thresholding
if image.get(x,y) < T
image.set(x,y,0);
else
image.set(x,y,255);
Images from http://www.svi.nl/SeedAndThreshold
Image enhancement
10
Image enhancement
11
Image enhancement
12
Image enhancement
13
Image enhancement
14
Image enhancement
Contrast stretching:
15
Image enhancement
16
Histogram processing
17
Histogram processing
2
2
2
3
3
4
5
5
1
1
2
2
4
5
6
5
0
1
1
2
2
6
7
7
0
0
1
2
2
4
6
4
9
5
4
3
4
3
2
0
1
2
3
2
4
5
6
7
18
Histogram processing
2
2
2
3
3
4
5
5
1
1
2
2
4
5
6
5
0
1
1
2
2
6
7
7
0
0
1
2
2
4
6
4
0.3
9
1.0
32
0
0
1
2
3
4
5
6
7
19
Histogram processing
20
Histogram processing
Intuitively, we expect that an image whose pixels
tend to occupy the entire range of possible gray levels,
tend to be distributed uniformly
will have a high contrast and show a great deal of
gray level detail.
It is possible to develop a transformation function
that can achieve this effect using histograms.
21
Histogram equalization
http://fourier.eng.hmc.edu/e161/lectures/contrast_transform/node3.html
22
Histogram equalization
23
Histogram equalization
Adapted from Wikipedia
CS 484, Fall 2012
©2012, Selim Aksoy
24
Histogram specification
whatever the heck you want
The math is similar, but your new image has a
histogram close to any p(y),
instead of a uniform distribution.
http://fourier.eng.hmc.edu/e161/lectures/contrast_transform/node3.html
CS 484, Fall 2012
©2012, Selim Aksoy
25
26
Enhancement using logical operations
Boolean operations
Enhancement using logical operations
Boolean operations
Enhancement using logical operations
Boolean operations
NOT
AND
OR
XOR
INPUT
OUTPUT
A
B
NOT A
A AND B
A OR B
A XOR B
A AND NOT B
0
0
1
0
0
0
0
0
1
1
0
1
1
0
1
0
0
0
1
1
1
1
1
0
1
1
0
0
Enhancement using arithmetic operations
Addition/Subtraction
31
Enhancement using arithmetic operations
Multiplication
Enhancement using arithmetic operations
Masking, alpha channel = arithmetic operations
Geometric Transformations
34
Geometric Transformations
35
Geometric Transformations
36
Geometric Transformations in Code
37