50
Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute [email protected] 2015-05-28 1/ 50

Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute [email protected] 2015-05-28

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

Complex numbers and image analysis

Henrik Skov Midtiby

Maersk McKinney Moller [email protected]

2015-05-28

1/ 50

Page 2: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

2/ 50

What is a complex number?What is a complex number?

How to use complex numbers to detect repeating patterns?

Pattern in time

Direction of edges

Marker detection

Outro

Page 3: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

3/ 50

What is a complex number?

Complex numbers let us solve certain equations like

x2 = −4

by introducing the number i , with the property i2 = −1.

Page 4: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

4/ 50

Matlab code example

>> x = 2i

>> x^2

x =

0.0000 + 2.0000i

ans =

-4

>> x = 1 + 1i

>> x^2

x =

1.0000 + 1.0000i

ans =

0.0000 + 2.0000i

Page 5: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

5/ 50

Dual representation

Cartesian form

z = a + ib

Polar form

z = r · e iθ

Page 6: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

6/ 50

Eulers identity

Eulers identitye iθ = cos(θ) + i sin(θ)

describes how to calculate complex exponentials.

Page 7: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

7/ 50

Oscillating exponentials

e ikt k ∈ R

Complex exponentials ”oscillate” and are simpler to do calculationswith than sine and cosine.

Page 8: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

8/ 50

Matlab code example

To plot the oscillating function

f (t) = e it

The following code is used

x = linspace(0, 2*pi, 1000);

x = x(2:end);

ex = exp(1i * x);

plot(x, real(ex)); hold on;

plot(x, imag(ex)); hold off;

legend('Real', 'Imag')

Page 9: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

9/ 50

Oscillating function

Page 10: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

10/ 50

Two oscillating functions

Page 11: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

11/ 50

What is a complex number?

How to use complex numbers to detect repeating patterns?The Fourier transform

Pattern in time

Direction of edges

Marker detection

Outro

Page 12: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

12/ 50

Representations of a periodic function

A periodic function, f (t), with period 2π can be represented af asum of oscillating functions with different frequencies.Sine and cosine based

f (t) = a1 · sin(1t) + a2 · sin(2t) + a3 · sin(3t) + . . .

b0 + b1 · cos(1t) + b2 · cos(2t) + . . .

Based on complex exponentials

f (t) = c1 · e1ti + c2 · e2ti + c3 · e3ti + . . .

c0 + c−1 · e−1ti + c−2 · e−2ti + c−3 · e−3ti + . . .

Page 13: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

13/ 50

Example of a periodic function

Question: How to locate the center of the peak?

Page 14: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

14/ 50

Alternative representationFourier series with five terms

Page 15: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

15/ 50

Alternative representationFourier series with one term

Page 16: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

16/ 50

Orthogonal functions

The complex exponentials enti and emti are orthogonal withrespect to the inner product

〈f (t), g(t)〉 =

∫ 2π

0f (t) · (g(t))∗ dt

if and only if n 6= m.

〈enti , emti 〉 =

∫ 2π

0enti · (emti )∗ dt

=

∫ 2π

0e(n−m)ti dt

For example

〈e2ti , e2ti 〉 = 2π 〈e2ti , e3ti 〉 = 0

Page 17: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

17/ 50

How to determine cn?

The orthogonal property of the complex exponentials allows us tocalculate cn as follows:

f (t) = cn−1 · e(n−1)ti + cn · enti + cn+1 · e(n+1)ti

〈enti , f (t)〉 = cn−1 · 〈enti , e(n−1)ti 〉+cn · 〈enti , enti 〉+ cn+1 · 〈enti , e(n+1)ti 〉

= cn · 〈enti , enti 〉

cn =〈enti , f (t)〉〈enti , enti 〉

Page 18: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

18/ 50

Matlab code example

x = linspace(0, 2*pi, 1001);

x = x(1:(end - 1));

fx = sign(sin(x - 0.6));

ex1 = exp(1i * x );

a1 = fx * ex1' / 1000;

exm1 = exp(-1i * x );

am1 = fx * exm1' / 1000;

peaklocation = -angle(a1)

peaklocation = angle(am1)

plot(x, fx); hold on;

plot(x, real(a1 * ex1 + am1 * exm1))

Page 19: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

19/ 50

Determined peak location

Page 20: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

20/ 50

What is a complex number?

How to use complex numbers to detect repeating patterns?

Pattern in timePattern in time

Direction of edges

Marker detection

Outro

Page 21: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

21/ 50

Image of experimental setup

Page 22: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

22/ 50

Polarization angles

Page 23: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

23/ 50

Matlab code example

Load image stack

imagestack = [];

for k=1:36

filename = sprintf('img/%02d.png', k);

img = imread(filename);

imagestack(:, :, k) = img;

end

Page 24: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

24/ 50

Matlab code example

Plot intensity variations of a region in the image sequence

vals = [];

for k = 1:36

temp = imagestack(181:207, 162:193, k);

vals(k) = sum(temp(:));

end

plot(vals);

Page 25: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

25/ 50

Intensity variations

Page 26: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

26/ 50

Matlab code example

x = (1:36) * 2 * pi / 36

ex2 = exp(2i * x );

a2 = vals * ex2' / 36

exm2 = exp(-2i * x );

am2 = vals * exm2' / 36

peaklocation = -angle(a2) / 2

plot(x, real(a2 * ex2 + am2 * exm2))

Page 27: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

27/ 50

Second harmonics

Page 28: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

28/ 50

Located peaks

Page 29: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

29/ 50

Matlab code example

phaseimage = imagestack(:, :, 1) * 0;

for k = 1:36

phaseimage = phaseimage + ...

imagestack(:, :, k) * exp(1i * k * 2 * 2*pi / 36);

end

absPhaseImage = abs(phaseimage);

absPhaseImage = absPhaseImage / max(absPhaseImage(:));

argPhaseImage = angle(phaseimage);

rgbimage = hsv2rgb((argPhaseImage + pi)/(2*pi), ...

1+0*argPhaseImage, 1 + 0*argPhaseImage);

image(rgbimage);

Page 30: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

30/ 50

Located orientations

Page 31: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

31/ 50

What is a complex number?

How to use complex numbers to detect repeating patterns?

Pattern in time

Direction of edgesDirection of edges

Marker detection

Outro

Page 32: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

32/ 50

Building block of an algorithm from my phd

Page 33: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

33/ 50

Fourier transform around points in an image

Page 34: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

34/ 50

What is a complex number?

How to use complex numbers to detect repeating patterns?

Pattern in time

Direction of edges

Marker detectionMarker localisationBending spaceMarker localization

Outro

Page 35: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

35/ 50

Marker localisation

Page 36: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

36/ 50

Bending space

Page 37: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

37/ 50

Bending space

Page 38: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

38/ 50

Bending space

Page 39: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

39/ 50

Bending space

Page 40: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

40/ 50

Bending space

Page 41: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

41/ 50

Bending space

Page 42: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

42/ 50

Final marker

Page 43: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

43/ 50

Matlab code example

kernel = genSymDetectorKernel(4, 150);

function kernel = genSymDetectorKernel(order, kernelsize)

stepsize = 2 / (kernelsize-1);

temp1 = meshgrid(-1:stepsize:1);

kernel = temp1 + 1i*temp1';

magni = abs(kernel);

kernel = kernel.^order;

kernel = kernel.*exp(-8*magni.^2);

abs(kernel);

end

Page 44: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

44/ 50

Marker localization

Real part of kernel

Absolute value of kernel

Imaginary part of kernel

Argument of kernel

Page 45: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

45/ 50

Input image

Page 46: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

46/ 50

Magnitude response of convolution

Page 47: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

47/ 50

Input image

Page 48: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

48/ 50

What is a complex number?

How to use complex numbers to detect repeating patterns?

Pattern in time

Direction of edges

Marker detection

OutroOutro

Page 49: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

49/ 50

Conclusion

Complex numbers can be used to detect repeating patterns inimages.The patterns might repeat over

I time

I orientation

Page 50: Henrik Skov Midtibyhenrikmidtiby.github.io/downloads/2015-05-28... · Complex numbers and image analysis Henrik Skov Midtiby Maersk McKinney Moller Institute hemi@mmmi.sdu.dk 2015-05-28

50/ 50

Questions