Revision 22393 trunk/libraries/libRaster/src/org/gvsig/raster/grid/filter/correction/MedianDoubleFilter.java

View differences:

MedianDoubleFilter.java
29 29
 * @author Diego Guerrero Sevilla <diego.guerrero@uclm.es>
30 30
 */
31 31
public class MedianDoubleFilter extends MedianFilter {
32

  
32
	private double[] window = null;
33
	
33 34
	public MedianDoubleFilter(){
34 35
		super();
35 36
	}
......
40 41
	 */
41 42
	public void pre() {
42 43
		super.pre();
44
		window = new double[sizeWindow];
43 45
		rasterResult = RasterBuffer.getBuffer(IBuffer.TYPE_DOUBLE, raster.getWidth(), raster.getHeight(), raster.getBandCount(), true);
44 46
	}
45 47

  
......
48 50
	 * @see org.gvsig.raster.grid.filter.correction.MedianFilter#process(int, int)
49 51
	 */
50 52
	public void process(int col, int line) {
51
//	 El lado de la ventana debe ser positivo e impar.
52
		ladoVentana = Math.abs(ladoVentana);
53
		if (ladoVentana % 2 == 0)
54
			ladoVentana++;
55
		int tamVentana = ladoVentana * ladoVentana;
56
		int semiLado = (ladoVentana - 1) >> 1;
57

  
58
		double[] ventana = new double[tamVentana];
59

  
60 53
		// Obtener el vector con la ventanas de muestras
61 54
		for (int band = 0; band < raster.getBandCount(); band++) {
62 55
			int k = 0;
63
			for (int i = -semiLado; i <= semiLado; i++)
64
				for (int j = -semiLado; j <= semiLado; j++) {
56
			for (int i = -halfSide; i <= halfSide; i++)
57
				for (int j = -halfSide; j <= halfSide; j++) {
65 58
					if ((col + i >= 0) && (line + j >= 0) && (col + i < width) && (line + j < height)) {
66
						ventana[k] = raster.getElemDouble(line + j, col + i, band);
59
						window[k] = raster.getElemDouble(line + j, col + i, band);
67 60
						k++;
68 61
					}
69 62
				}
70 63
			// Ordenar los valores de las ventanas, se supone que usa quickSort.
71
			Arrays.sort(ventana, 0, k);
64
			Arrays.sort(window, 0, k);
72 65

  
73 66
			// Extraer los elementos centrales y asignarselos al pixel (x,y)
74
			rasterResult.setElem(line, col, band, ventana[k >> 1]);
67
			rasterResult.setElem(line, col, band, window[k >> 1]);
75 68
		}
76 69
	}
77 70

  

Also available in: Unified diff