Image Processing Reference

In-Depth Information

for

( y_output

=

0;

y_output

< Image_Height_Output ;

y_output++)

{

for

( x_output

=

0;

x_output

< Image_Width_Output ;

x_output++)

{

x_input

=

1/Sx

∗

x_output ;

y_output ;

g( x_output , y_output )

y_input

=

1/Sy

∗

=

f ( x_input , y_input );

}

}

where Sx and Sy are the scale factors and
(x
,y
)
is written as (x_output,y_output)

and (x,y) is written as (x_input,y_input).

10.2.2 Interpolation

As can be seen in Fig.
10.2
backward mapping is very likely to result in a value of

(x, y)
which is not possible. For example, what is the intensity value of
f(
3
.
4
,
7
.
9
)
?

It is undefined and we therefore
interpolate
in order to find an appropriate intensity

value. The most simple form of interpolation is called
zeroth-order interpolation
.

It rounds off to the value of the nearest possible pixel, i.e.,
f(
3
.
4
,
7
.
9
)

f(
3
,
8
)
.

A better, but also more computational demanding, approach is to apply first-order

interpolation (a.k.a. bilinear interpolation), which weights the intensity values of the

four nearest pixels according to how close they are. The principle is illustrated in

Fig.
10.4
. The area of the square wherein
(x, y)
is located is 1. Now imagine that

we use the position
(x, y)
to divide this square into four sub-regions. The area of

each of these sub-regions define the weight of one of the four nearest pixels. That is,

the area
dx

→

·

dy
becomes the weight for the pixel
f(x
1
,y
1
)
and so forth. The final

intensity value is then found as

g(x
,y
)

=

f(x
0
,y
0
)

·

(
1

−

dx)(
1

−

dy)

+
f(x
1
,y
0
)
·
(dx)(
1

−
dy)

+
f(x
0
,y
1
)
·
(
1

−
dx)(dy)

+
f(x
1
,y
1
)
·
(dx
·
dy)

(10.11)

Note that this equation can be rewritten more compactly for an efficient software

implementation. Note also that more advanced methods for interpolation exist, but

this is beyond the scope of this text.