changeset 360:fc5bb270596a

completed kernel visualization code.
author Robert McIntyre <rlm@mit.edu>
date Thu, 07 Mar 2013 03:12:25 +0000
parents 744ae7ef9b14
children 09461dce2e2f
files org/gabor.org
diffstat 1 files changed, 24 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/org/gabor.org	Thu Mar 07 02:37:49 2013 +0000
     1.2 +++ b/org/gabor.org	Thu Mar 07 03:12:25 2013 +0000
     1.3 @@ -31,9 +31,9 @@
     1.4      (.put r 0 0 (float-array (map (fn [_] (rand)) (range 25))))
     1.5      (println (.dump r))
     1.6  
     1.7 -    ;;r
     1.8 +    r
     1.9  
    1.10 -    (org.opencv.core.MatOfFloat. (float-array [0.5]))
    1.11 +
    1.12      ))
    1.13  
    1.14  (defn gabor-kernel [sigma aspect-ratio theta wavelength phase-offset]
    1.15 @@ -66,7 +66,7 @@
    1.16          scale (reduce + (map gaussian grid))
    1.17          
    1.18          gabor (fn [[x y :as coord]]
    1.19 -                (* (sinusoid coord) (gaussian coord) scale))
    1.20 +                (* (sinusoid coord) (gaussian coord) (/ scale)))
    1.21  
    1.22          mat-width (+ 1 (* 2 half-width))
    1.23          mat (Mat. mat-width mat-width CvType/CV_32F)]
    1.24 @@ -81,9 +81,24 @@
    1.25  
    1.26  
    1.27  (defn show-kernel [kernel]
    1.28 -  (let [output "/home/r/proj/cortex/tmp/kernel.png"]
    1.29 -    (org.opencv.highgui.Highgui/imwrite output kernel)
    1.30 -    (view (ImagePlus. output))))
    1.31 +  (let [output "/home/r/proj/cortex/tmp/kernel.png"
    1.32 +        size (.size kernel)
    1.33 +        width (int (.width size))
    1.34 +        height (int (.height size))
    1.35 +        tmp-array (float-array (* width height))]
    1.36 +
    1.37 +    ;; read values from matrix.
    1.38 +    (.get kernel 0 0 tmp-array)
    1.39 +
    1.40 +    ;; find overall dynamic range of the filter
    1.41 +    (let [vals (vec tmp-array)
    1.42 +          low (apply min vals)
    1.43 +          high (apply max vals)
    1.44 +          scaled-vals (map #(* 255 (- % low) (/ (- high low))) vals)
    1.45 +          new-mat (Mat. height width CvType/CV_32F)]
    1.46 +      (.put new-mat 0 0 (float-array scaled-vals))
    1.47 +      (org.opencv.highgui.Highgui/imwrite output new-mat)
    1.48 +      (view (ImagePlus. output)))))
    1.49  
    1.50  (defn print-kernel [kernel]
    1.51    (println (.dump kernel)))
    1.52 @@ -91,8 +106,7 @@
    1.53  
    1.54          
    1.55                        
    1.56 -        
    1.57 -        
    1.58 +         
    1.59          
    1.60    
    1.61  
    1.62 @@ -105,13 +119,13 @@
    1.63  
    1.64          i (org.opencv.highgui.Highgui/imread input)
    1.65  
    1.66 -        kernel (make-kernel)
    1.67 +        kernel (gabor-kernel 10 1 (/ Math/PI 2) 10 0)
    1.68  
    1.69          new-mat (Mat.)
    1.70                  
    1.71          ]
    1.72  
    1.73 -    (org.opencv.imgproc.Imgproc/filter2D  i new-mat CvType/CV_32F (make-kernel))
    1.74 +    (org.opencv.imgproc.Imgproc/filter2D  i new-mat CvType/CV_32F kernel)
    1.75      
    1.76      (org.opencv.highgui.Highgui/imwrite "/home/r/ppp.png" new-mat)
    1.77