001    /*
002     * MinimumFilter
003     * 
004     * Copyright (c) 2001, 2002 Marco Schmidt.
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.filters;
009    
010    import net.sourceforge.jiu.filters.AreaFilterOperation;
011    
012    /**
013     * Filter operation that replaces each sample by the minimum value of itself
014     * and its neighbors.
015     * See {@link MaximumFilter} for a usage example.
016     * @author Marco Schmidt
017     * @since 0.9.0
018     */
019    public class MinimumFilter extends AreaFilterOperation
020    {
021            public final int computeSample(int[] samples, int numSamples)
022            {
023                    int min = samples[--numSamples];
024                    while (numSamples != 0)
025                    {
026                            int value = samples[--numSamples];
027                            if (value < min)
028                            {
029                                    min = value;
030                            }
031                    }
032                    return min;
033            }
034    }