001 /* 002 * MaximumFilter 003 * 004 * Copyright (c) 2001, 2002, 2003 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 maximum value of itself 014 * and its neighbor samples. 015 * <p> 016 * Note that this is not the maximum operation that takes two input images 017 * and, for each position, takes the maximum sample value and writes it 018 * to output. 019 * 020 * <h3>Usage example</h3> 021 * <pre> 022 * MaximumFilter filter = new MaximumFilter(); 023 * filter.setArea(7, 5); 024 * filter.setInputImage(image); 025 * filter.process(); 026 * PixelImage filteredImage = filter.getOutputImage(); 027 * </pre> 028 * @author Marco Schmidt 029 * @since 0.9.0 030 * @see MinimumFilter 031 */ 032 public class MaximumFilter extends AreaFilterOperation 033 { 034 public final int computeSample(int[] samples, int numSamples) 035 { 036 int max = samples[0]; 037 int index = 1; 038 while (index < numSamples) 039 { 040 int value = samples[index++]; 041 if (value > max) 042 { 043 max = value; 044 } 045 } 046 return max; 047 } 048 }