package pl.wroc.pwr.image.converter; import pl.wroc.pwr.IOperator; import pl.wroc.pwr.image.IGSImage; import pl.wroc.pwr.image.IRGBImage; import pl.wroc.pwr.image.model.GSImage; import pl.wroc.pwr.imagechannel.IImageChannel; public class RGBtoGSConverter implements IOperator< IGSImage > { public IRGBImage inputImage; public RGBtoGSConverter( IRGBImage image ) { this.inputImage = image; } public void setImage( IRGBImage image ) { this.inputImage = image; } public IGSImage apply( ) { IGSImage outputImage = new GSImage( this.inputImage.getSize( ) ); IImageChannel grayChannel = outputImage.getGrayChannel( ); for ( int i = 0; i < this.inputImage.getRedChannel( ).getMaxIndex( ); i++ ) { grayChannel.setValue( i, ( this.inputImage.getRedChannel( ).getValue( i ) + this.inputImage.getGreenChannel( ).getValue( i ) + this.inputImage.getBlueChannel( ).getValue( i ) ) / 3.0f ); } return outputImage; } }