1 /* Copyright (C) 2005-2011 Fabio Riccardi */ 2 3 package com.lightcrafts.jai.utils; 4 5 import com.lightcrafts.mediax.jai.ImageFunction; 6 7 /** 8 * Created by IntelliJ IDEA. 9 * User: fabio 10 * Date: Jun 2, 2005 11 * Time: 4:58:10 PM 12 * To change this template use File | Settings | File Templates. 13 */ 14 15 public class GaussianImageFunction implements ImageFunction { 16 final double s; 17 GaussianImageFunction(double s)18 public GaussianImageFunction(double s) { 19 this.s = s; 20 } 21 gauss(double x, double y, double s)22 static double gauss(double x, double y, double s) { 23 return (1/ (s * s * 2 * Math.PI)) * Math.exp(-(x * x + y * y) / (2 * s * s)); 24 } 25 getElements(double startX, double startY, double deltaX, double deltaY, int countX, int countY, int element, double[] real, double[] imag)26 public void getElements(double startX, double startY, 27 double deltaX, double deltaY, 28 int countX, int countY, 29 int element, double[] real, double[] imag) { 30 for (int i = 0; i < countX; i++) { 31 double x = startX + deltaX * i; 32 for (int j = 0; j < countY; j++) { 33 double y = startY + deltaY * j; 34 35 real[i + countX * j] = (float) gauss(x, y, s); 36 } 37 } 38 } 39 getElements(float startX, float startY, float deltaX, float deltaY, int countX, int countY, int element, float[] real, float[] imag)40 public void getElements(float startX, float startY, 41 float deltaX, float deltaY, 42 int countX, int countY, 43 int element, float[] real, float[] imag) { 44 for (int i = 0; i < countX; i++) { 45 double x = startX + deltaX * i; 46 for (int j = 0; j < countY; j++) { 47 double y = startY + deltaY * j; 48 49 real[i + countX * j] = (float) gauss(x, y, s); 50 } 51 } 52 } 53 getNumElements()54 public int getNumElements() { 55 return 1; 56 } 57 isComplex()58 public boolean isComplex() { 59 return false; 60 } 61 } 62