2007 ICSPC International Conference on Signal
                                                   Processing and Communicat...
motivation
               feature extraction

Micron                   Nanorobotics




         1. keypoint selection
   ...
state of the art
                                   keypoint selection

Roberts cross                         Kanade-Lucas...
¨
                                   Thomas Bulow

Hypercomplex Spectral Signal Representations for Image
               P...
Ivan Selesnick

The design of approximate Hilbert transform pairs of
                  wavelet bases
Nick Kingsbury


Image processing with complex wavelets
Ivan Selesnick, Richard G. Baraniuk, Nick Kingsbury


The dual-tree complex wavelet transform
1-D basis wavelets (Selesnick)



                              wavelets for K = K = 5 and L = 4
                         ...
dual-tree complex wavelet transform (Kingsbury)


                                                                 2-d
   ...
commutative hypercomplex algebra




multiplication table of H
      1    i    j    k

  1   1    i     j    k
  i   i   −...
test image




require ’selesnick’
require ’kingsbury’
img=MultiArray.load_grey8("circle.png")
hwt=HWT.new(MultiArray::SFL...
hypercomplex components


                    1              i              j              k
                    A = H, B ...
wavelet tree
linear combinations of 1-D basis wavelets


                                    animating ∆x




     
1
    i
 ...
2-D separable basis wavelets




                                  
     1
     
         0
           
     ...
linear combinations of 2-D basis wavelets



                                                       animation




        ...
coping with rotations (Kingsbury) (Bharath,Ng)




Rotation-invariant local feature matching   A steerable complex wavelet...
wavelet editor
blob-like pattern




                                                
                        1 0
                 ...
edge pattern




                                 v1,0 v1,1
                                      v0,1 ρ


               ...
cross pattern




                                                    
                                                ...
conclusion




• improved understanding of high frequency pattern

• enable use of hypercomplex wavelets beyond edge detec...
future work




• complete basis of steerable patterns? rotation around any point?

• understand interaction between neigh...
Hornetseye
                         GPL (free and open source software)




         http://rubyforge.org/projects/hornets...
filter design (Selesnick)


   perfect reconstruction
                      recursion
  H0 (z)         2       2        H0 ...
filter design (Selesnick)


   perfect reconstruction
                      recursion
  H0 (z)         2       2        H0 ...
filter design (Selesnick)




                                                (2)· · ·
                                    ...
filter design (Selesnick)




                                                (4)· · ·
                                    ...
filter design (Selesnick)




                                (2,4)· · ·
                                                  ...
spectral factorisation (Laguerre)

                                                      spectral factorisation
          ...
Upcoming SlideShare
Loading in …5
×

Steerable Filters generated with the Hypercomplex Dual-Tree Wavelet Transform - ICSPC 2007

955 views

Published on

The use of wavelets in the image processing domain is still in its infancy, and largely associated with image compression. With the advent of the dual-tree hypercomplex wavelet transform (DHWT) and its improved shift invariance and directional selectivity, applications in other areas of image processing are more conceivable. This paper discusses the problems and solutions in developing the DHWT and its inverse. It also offers a practical implementation of the algorithms involved. The aim of this work is to apply the DHWT in machine vision.
Tentative work on a possible new way of feature extraction is presented. The paper shows that 2-D hypercomplex basis wavelets can be used to generate steerable filters which allow rotation as well as translation.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
955
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Steerable Filters generated with the Hypercomplex Dual-Tree Wavelet Transform - ICSPC 2007

  1. 1. 2007 ICSPC International Conference on Signal Processing and Communications TA-P1: Image and Video Processing 6 STEERABLE FILTERS GENERATED WITH THE HYPERCOMPLEX DUAL-TREE WAVELET TRANSFORM J. Wedekind, B. Amavasai, K. Duttona Tuesday, November 27th 2007 Microsystems and Machine Vision Laboratory Materials Engineering Research Institute Sheffield Hallam University Sheffield United Kingdom a This project was supported by the Nanorobotics EPSRC Basic Technology grant GR/S85696/01
  2. 2. motivation feature extraction Micron Nanorobotics 1. keypoint selection • rotation • translation • blur/scale 2. feature descriptor 3. RANSAC,BHT
  3. 3. state of the art keypoint selection Roberts cross Kanade-Lucas-Tomasi Harris-Stephens SIFT (Lowe), MOPS (Brown et al.) next generation feature extractor?
  4. 4. ¨ Thomas Bulow Hypercomplex Spectral Signal Representations for Image Processing and Analysis
  5. 5. Ivan Selesnick The design of approximate Hilbert transform pairs of wavelet bases
  6. 6. Nick Kingsbury Image processing with complex wavelets
  7. 7. Ivan Selesnick, Richard G. Baraniuk, Nick Kingsbury The dual-tree complex wavelet transform
  8. 8. 1-D basis wavelets (Selesnick) wavelets for K = K = 5 and L = 4 wavelet wavelet 0.6 1.5 0.5 1 0.4 0.5 0.3 0 0.2 0.1 -0.5 0 -1 -0.1 -1.5 recursion 0 2 4 6 8 10 12 14 0 2 4 6 8 10 12 14 16 H0 (z) 2 2 H0 (z) H1 (z) 2 2 H1 (z) H0 , G0 H1 , G 1 recursion G0 (z) 2 2 G0 (z) wavelet wavelet 1.4 0.6 G1 (z) 2 2 G1 (z) 1.2 0.4 1 0.8 0.2 0.6 0 0.4 0.2 -0.2 0 -0.4 -0.2 -0.4 -0.6 0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 H0 , G0 H1 , G 1
  9. 9. dual-tree complex wavelet transform (Kingsbury) 2-d 1-d H0 (z2 ) 2 z2 H0 (z) 2 H0 (z2 ) 2 z2 G0 (z) 2 G0 (z2 ) 2 z2 G0 (z2 ) 2 z2 H1 (z) 2 H0 (z1 ) 2 H0 (z2 ) 2 z1 z2 G1 (z) 2 G0 (z1 ) 2 H0 (z2 ) 2 z1 z2 H0 (z1 ) 2 G0 (z2 ) 2 z1 z2 G0 (z1 ) 2 G0 (z2 ) 2 z1 z2 (hyper)complex representation H1 (z1 ) 2 z1 H1 (z2 ) 2 z2 G1 (z1 ) 2 H1 (z2 ) 2 z1 z2 1 H1 (z1 ) 2 G1 (z2 ) 2 z1 z2 i G1 (z1 ) 2 G1 (z2 ) 2 z1 z2 + H1 (z2 ) 2 z2 1 j H1 (z2 ) 2 + z2 i k G1 (z2 ) 2 z2 G1 (z2 ) 2 z2
  10. 10. commutative hypercomplex algebra multiplication table of H 1 i j k 1 1 i j k i i −1 k −j j j k −1 −i k k −j −i 1
  11. 11. test image require ’selesnick’ require ’kingsbury’ img=MultiArray.load_grey8("circle.png") hwt=HWT.new(MultiArray::SFLOAT) himg=hwt.decompose(hwt.prepare(img),3) img2=hwt.finalise(hwt.compose(himg,3)) diff=img2-img diff.range # -0.00522037548944354..0.0319054499268532 diff.normalise.display Math::sqrt((diff**2).sum/diff.size) # 0.00274400669319458
  12. 12. hypercomplex components 1 i j k A = H, B = H A = G, B = H A = H, B = G A = G, B = G A0 (z1 ) B0 (z2 ) A1 (z1 ) B0 (z2 ) A0 (z1 ) B1 (z2 ) A1 (z1 ) B1 (z2 )
  13. 13. wavelet tree
  14. 14. linear combinations of 1-D basis wavelets animating ∆x     1   i     2 π ∆x i/2     0                  V (z) =       Ha (z) R(va )+ 0 0               v  2 π ∆x i v0    0    v = =e ·   , v ∈ C2      0     0 0 a∈{0,1}                     v      v          1         i Ga (z) I(va ) 1 1 animations require Javascript
  15. 15. 2-D separable basis wavelets         1   0   i   0   j   0   k   0                            0        0 0 0 0 0 0 0         0   1   0   i   0   j   0   k                            0        0 0 0 0 0 0 0         0   0   0   0   0   0   0   0                            1        0 i 0 j 0 k 0         0   0   0   0   0   0   0   0                            0        1 0 i 0 j 0 k
  16. 16. linear combinations of 2-D basis wavelets animation   2 π ∆x j/2 0 V (z1 , z2 ) =    Ha (z1 ) Hb (z2 ) R(va,b )+      2          2 π ∆x2   a,b∈{0,1}   0 j  V =e   · V· Ga (z1 ) Hb (z2 ) I(va,b )+   2 π ∆x i/2 0 Ha (z1 ) Gb (z2 ) J(va,b )+         1          2 π ∆x1   0 i   Ga (z1 ) Gb (z2 ) K(va,b )  , V ∈ C2×2   e animations require Javascript
  17. 17. coping with rotations (Kingsbury) (Bharath,Ng) Rotation-invariant local feature matching A steerable complex wavelet construction with complex wavelets and its application to image denoising
  18. 18. wavelet editor
  19. 19. blob-like pattern     1 0  + (i − j) sin(α) 1 0         (1 − k) cos(α)        0 0      0 0    animations require Javascript
  20. 20. edge pattern v1,0 v1,1 v0,1 ρ     0 1  + (i + j) cos(α − ρ) 0 1  (1 + k) cos(α + ρ)  +                  0 0   0  0     0 0  + (i + j) sin(α − ρ) 0 0  (1 + k) sin(α + ρ)  +                     1 0 1 0     0 0 1 1  + (1 − j) cos(α) 0 0         (1 − i) sin(α)        0 1    2  0 1 2    animations require Javascript
  21. 21. cross pattern   0 0 (1 + i + j + k) cos(α)  +        0 1      0 0 (1 + i − j − k) sin(α)  +        1 0      0 1 (−1 + i − j + k) sin(α)          0 0    cos(α) H1 +sin(α) H2 , where H1 , H2 ∈ HCA2×2 animations require Javascript
  22. 22. conclusion • improved understanding of high frequency pattern • enable use of hypercomplex wavelets beyond edge detection • several fully steerable patterns (translation, rotation) • hypercomplex matrices for representing local structure animations require Javascript
  23. 23. future work • complete basis of steerable patterns? rotation around any point? • understand interaction between neighbouring coefficients • understand interaction of different layers of wavelet pyramid (Kingsbury) • choose keypoints, descriptors animations require Javascript
  24. 24. Hornetseye GPL (free and open source software) http://rubyforge.org/projects/hornetseye/ http://sourceforge.net/projects/hornetseye/ http://vision.eng.shu.ac.uk/mediawiki/index.php/Hornetseye http://raa.ruby-lang.org/project/hornetseye/ http://www.wedesoft.demon.co.uk/hornetseye-api/
  25. 25. filter design (Selesnick) perfect reconstruction recursion H0 (z) 2 2 H0 (z) 1 2 H0 (z)X(z) + H0 (−z)X(−z) H0 (z)+ H1 (z) 2 2 H1 (z) 1 2 H1 (z)X(z) + H1 (−z)X(−z) H1 (z) =(∗) X(z) recursion ⇔ G0 (z) 2 2 G0 (z) H0 (z) H0 (−z) + H1 (z) H1 (−z) = 0 (1) G1 (z) 2 2 G1 (z) H0 (z) H0 (z) + H1 (z) H1 (z) = 2 (2) Thiran filter (τ = 0.5) n−1 τ−L+1+k d(n) = L−1 n (−1)n k=0 τ+1+k ⇐ vanishing moments H1 (z) = H0 (−z) (1) K=1 1 −1 H1 (z) = −H0 (−z) K=2 1 −2 1 H0 (z) = Q(z) (1 + z−1 )K D(z) (2)· · · K=3 1 −3 3 −1 H0 (z) = Q(z) (1 + z−1 )K D(z−1 ) z1−L K =4 1 −4 6 −4 1 c .... s 1 X(z) + X(−z) (∗) [↑ 2] [↓ 2] x(n) 2 ... ...
  26. 26. filter design (Selesnick) perfect reconstruction recursion H0 (z) 2 2 H0 (z) 1 2 G0 (z)X(z) + G0 (−z)X(−z) G0 (z)+ H1 (z) 2 2 H1 (z) 1 2 G1 (z)X(z) + G1 (−z)X(−z) G1 (z) =(∗) X(z) recursion ⇔ G0 (z) 2 2 G0 (z) G0 (z) G0 (−z) + G1 (z) G1 (−z) = 0 (3) G1 (z) 2 2 G1 (z) G0 (z) G0 (z) + G1 (z) G1 (z) = 2 (4) Thiran filter (τ = 0.5) n−1 τ−L+1+k d(n) = L−1 n (−1)n k=0 τ+1+k ⇐ vanishing moments G1 (z) = G0 (−z) (3) K=1 1 −1 G1 (z) = −G0 (−z) K=2 1 −2 1 G0 (z) = Q(z) (1 + z−1 )K D(z−1 ) z1−L (4)· · · K=3 1 −3 3 −1 G0 (z) = Q(z) (1 + z−1 )K D(z) K =4 1 −4 6 −4 1 c .... s 1 X(z) + X(−z) (∗) [↑ 2] [↓ 2] x(n) 2 ... ...
  27. 27. filter design (Selesnick) (2)· · ·  H0 (z) H0 (z) + H1 (z) H1 (z) = 2       H1 (z) = H0 (−z)         1 = H0 (z) H0 (z) = (1 + z ) −1 K+K D(z) D(z−1 ) z1−L Q(z) Q(z)  H1 (z) = −H0 (−z)     H0 (z) = Q(z) (1 + z−1 )K D(z)    S (z) R(z)      H0 (z) = Q(z) (1 + z−1 )K D(z−1 ) z1−L   
  28. 28. filter design (Selesnick) (4)· · ·  G0 (z) G0 (z) + G1 (z) G1 (z) = 2       G1 (z) = G0 (−z)         1 = G0 (z) G0 (z) = (1 + z ) −1 K+K D(z) D(z−1 ) z1−L Q(z) Q(z)  G1 (z) = −G0 (−z)     G0 (z) = Q(z) (1 + z−1 )K D(z−1 ) z1−L    S (z) R(z)      G0 (z) = Q(z) (1 + z−1 )K D(z)   
  29. 29. filter design (Selesnick) (2,4)· · ·  .  r  .     s  N   0 ···      1  .                         sN−2    sN−1 sN 0 · · ·     r2  0                 .   . . . .     .      .     S (z) Q(z) Q(z) = 1 ⇔  . . . . .   .  = 1     .    . . . .                    R(z)                   R(z)   ···  rN−1  0  0 s1 s2 s3                           .     r  .       .        ··· 0 s1  N   
  30. 30. spectral factorisation (Laguerre) spectral factorisation Laguerre R(z) symmetric, real-valued Input: Polynomial p(x) Im Im Output: zero crossing o ∈ C of p x → 0.0 + 0.0 i; c → 100; while c ≥ 0 do Re Re if |p(x)| sufficiently small then return o = x; tuples quadruples end g = p (x)/p(x); h = g2 − p (x)/p(x); Im Im Im Im if |g + d| > |g − d| then Re Re Re Re a = n/(g + d); tuples quadruples tuples quadruples else Q(z) Q(z) a = n/(g − d); H0 (z) = Q(z) (1 + z−1 )K D(z) end x → x − a; c → c − 1; H0 (z) = Q(z) (1 + z−1 )K D(z−1 ) z1−L end H1 (z) = H0 (−z), H1 (z) = −H0 (−z) (2,4)

×