diff options
Diffstat (limited to 'java/ImageProcessing/filters')
18 files changed, 0 insertions, 2040 deletions
diff --git a/java/ImageProcessing/filters/Assert.java b/java/ImageProcessing/filters/Assert.java deleted file mode 100644 index c83f9ca94c0..00000000000 --- a/java/ImageProcessing/filters/Assert.java +++ /dev/null @@ -1,33 +0,0 @@ -package imaging.filters; - -/** - * A simple assertion mechanism for asserting validity of - * arguments.<p> - * - * @version 1.0, Apr 1 1996 - * @author David Geary - */ -class Assert { - static public void notFalse(boolean b) - throws IllegalArgumentException { - if(b == false) - throw new IllegalArgumentException( - "boolean expression false"); - } - static public void notNull(Object obj) - throws IllegalArgumentException { - if(obj == null) - throw new IllegalArgumentException("null argument"); - } - - static public void notFalse(boolean b, String s) - throws IllegalArgumentException { - if(b == false) - throw new IllegalArgumentException(s); - } - static public void notNull(Object obj, String s) - throws IllegalArgumentException { - if(obj == null) - throw new IllegalArgumentException(s); - } -} diff --git a/java/ImageProcessing/filters/BleachFilter.java b/java/ImageProcessing/filters/BleachFilter.java deleted file mode 100644 index e9d6a0b9e0e..00000000000 --- a/java/ImageProcessing/filters/BleachFilter.java +++ /dev/null @@ -1,65 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -/** - * A derivation of RGBImageFilter that bleaches an image.<p> - * - * Extent of the bleaching effect is controlled by the only - * constructor argument: an integer representing the percentage - * of bleaching. The percentage of bleaching may also be - * controlled after instantiation by invoking the - * void percent(int) method.<p> - * - * @version 1.0, Apr 1 1996 - * @author David Geary - * @see RGBImageFilter - */ -public class BleachFilter extends RGBImageFilter implements MedFilter -{ - private int percent; - - public BleachFilter() - { - this(25); - } - - public BleachFilter(int percent) - { - Assert.notFalse(percent >= 0 && percent <= 100); - this.percent = percent; - canFilterIndexColorModel = true; - } - - public String info () - { - return "Bleaches/Lightens an image"; - } - - public int percent() { return percent; } - public void percent(int percent) { percent = percent; } - - public int filterRGB(int x, int y, int rgb) { - DirectColorModel cm = - (DirectColorModel)ColorModel.getRGBdefault(); - - int alpha = cm.getAlpha(rgb); - int red = cm.getRed (rgb); - int green = cm.getGreen(rgb); - int blue = cm.getBlue (rgb); - double percentMultiplier = (double)percent/100; - - red = Math.min((int) - (red + (red * percentMultiplier)), 255); - green = Math.min((int) - (green + (green * percentMultiplier)), 255); - blue = Math.min((int) - (blue + (blue * percentMultiplier)), 255); - - alpha = alpha << 24; - red = red << 16; - green = green << 8; - - return alpha | red | green | blue; - } -} diff --git a/java/ImageProcessing/filters/BlurFilter.java b/java/ImageProcessing/filters/BlurFilter.java deleted file mode 100644 index e071324e491..00000000000 --- a/java/ImageProcessing/filters/BlurFilter.java +++ /dev/null @@ -1,95 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class BlurFilter extends SpatialFilter -{ - private int[][] mean_filter; - private int degree_ = 3; - - public BlurFilter() - { - } - - public BlurFilter(int degree) - { - degree_ = degree; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Image Error"); - return; - } - - System.gc(); - - int[] pixels = new int[columns_*rows_]; - int pixel = 0, count = 0; - int red, green, blue, index; - int alpha, n2 = degree_/2; - - profile_timer_.start(); - - for (int z = SpatialFilter.iterations_; z-- > 0;) - { - - for (int y = 0, i = 0; y < rows_; y++) - { - for (int x = 0; x < columns_; x++, i++) - { - red = 0; green = 0; blue = 0; count = 0; - alpha = (raster_[i] >> 24) & 0xff; - - for (int y1 = y - n2; y1 < y + n2; y1++) - { - index = y1*columns_; - if (y1 >= 0 && y1 < rows_) - { - for (int x1 = x - n2; x1 < x + n2; x1++) - { - if (x1 >= 0 && x1 < columns_) - { - pixel = raster_[index + x1]; - - red += (pixel >> 16) & 0xff; - green += (pixel >> 8) & 0xff; - blue += (pixel) & 0xff; - count++; - } - } - } - } - - red /= count; - green /= count; - blue /= count; - - if (red < 0) red = 0; - if (green < 0) green = 0; - if (blue < 0) blue = 0 ; - - if (red > 255) red = 255; - if (green > 255) green = 255; - if (blue > 255) blue = 255; - - pixels[i] = (alpha << 24) | (red << 16) | (green << 8) | blue; - } - } - } - - profile_timer_.stop(); - - System.out.println("Finished altering image"); - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - consumer.imageComplete(status); - } - - public String info () - { - return "Blurs an image."; - } -} diff --git a/java/ImageProcessing/filters/DarkenFilter.java b/java/ImageProcessing/filters/DarkenFilter.java deleted file mode 100644 index ea20d15a46b..00000000000 --- a/java/ImageProcessing/filters/DarkenFilter.java +++ /dev/null @@ -1,48 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class DarkenFilter extends RGBImageFilter implements MedFilter -{ - private int percent_; - - public DarkenFilter () - { - percent_ = 50; - canFilterIndexColorModel = true; - } - - public DarkenFilter(int percent) - { - Assert.notFalse(percent >= 0 && percent <= 100); - percent_ = percent; - canFilterIndexColorModel = true; - } - - public String info () - { - return "Darkens an image."; - } - - public int filterRGB(int x, int y, int rgb) - { - DirectColorModel cm = - (DirectColorModel)ColorModel.getRGBdefault(); - - int alpha = cm.getAlpha(rgb); - int red = cm.getRed (rgb); - int green = cm.getGreen(rgb); - int blue = cm.getBlue (rgb); - double percentMultiplier = (double)((double)1.0 - (double)percent_/100); - - red *= percentMultiplier; - blue *= percentMultiplier; - green *= percentMultiplier; - - alpha = alpha << 24; - red = red << 16; - green = green << 8; - - return alpha | red | green | blue; - } -} diff --git a/java/ImageProcessing/filters/DeSpeckleFilter.java b/java/ImageProcessing/filters/DeSpeckleFilter.java deleted file mode 100644 index d9bff1de3b5..00000000000 --- a/java/ImageProcessing/filters/DeSpeckleFilter.java +++ /dev/null @@ -1,123 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class DeSpeckleFilter extends SpatialFilter -{ - private int degree_ = 3; - - public DeSpeckleFilter() - { - } - - public DeSpeckleFilter(int degree) - { - degree_ = degree; - } - - public String info () - { - return "Removes speckles from an image."; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("DeSpeckleFilter Image Error: " + status); - return; - } - - System.gc(); - - int rsum, bsum, gsum, r, g, b, a; - int count, n2, nsq, c2, lcv, lcv2, index; - int[] rtab, gtab, btab; - int[] pixels = new int[columns_*rows_]; - - profile_timer_.start(); - - n2 = degree_/2; - nsq = degree_ * degree_; - - rtab = new int[nsq]; - gtab = new int[nsq]; - btab = new int[nsq]; - - for (int z = SpatialFilter.iterations_; z-- > 0;) - { - for (int y = 0, k = 0; y < rows_; y++) - { - lcv = y + n2; - for (int x = 0; x < columns_; x++, k++) - { - rsum = gsum = bsum = 0; - count = 0; - - lcv2 = x + n2; - for (int y1 = y - n2; y1 < lcv; y1++) - { - index = y1*columns_; - if (y1 >= 0 && y1 < rows_) - { - for (int x1 = x - n2; x1 < lcv2; x1++) - { - if (x1 >= 0 && x1 < columns_) - { - int pixel = raster_[index + x1]; - rtab[count] = (pixel >> 16) & 0xff; - gtab[count] = (pixel >> 8) & 0xff; - btab[count] = (pixel) & 0xff; - count++; - } - } - } - } - - for (int d = count >> 1; d > 0; d >>= 1) - { - for (int i = d; i < count; i++) - { - for (int j = i - d; j >= 0 && rtab[j] > rtab[j+d]; j -= d) - { - int t = rtab[j]; - rtab[j] = rtab[j + d]; - rtab[j + d] = t; - } - - for (int j = i - d; j >= 0 && gtab[j] > gtab[j+d]; j -= d) - { - int t = gtab[j]; - gtab[j] = gtab[j + d]; - gtab[j + d] = t; - } - - for (int j = i - d; j >= 0 && btab[j] > btab[j+d]; j -= d) - { - int t = btab[j]; - btab[j] = btab[j + d]; - btab[j + d] = t; - } - } - } - - c2 = count >> 1; - - a = (raster_[k] >> 24) & 0xff; - r = ( (count % 2 == 0) ? (rtab[c2] + rtab[c2 - 1]) >> 1 : rtab[c2]); - g = ( (count % 2 == 0) ? (gtab[c2] + gtab[c2 - 1]) >> 1 : gtab[c2]); - b = ( (count % 2 == 0) ? (btab[c2] + btab[c2 - 1]) >> 1 : btab[c2]); - - pixels[k] = (a << 24) | (r << 16) | (g << 8) | b; - } - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - consumer.imageComplete(status); - } - -} diff --git a/java/ImageProcessing/filters/DissolveFilter.java b/java/ImageProcessing/filters/DissolveFilter.java deleted file mode 100644 index 0225aad6ad1..00000000000 --- a/java/ImageProcessing/filters/DissolveFilter.java +++ /dev/null @@ -1,52 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -/** - * A derivation of RGBImageFilter that partially or wholly - * dissolves an image.<p> - * - * Extent of dissolving is set by the setOpacity(int) method, - * which is passed an integer between 0 and 255 (inclusive). - * The integer represents the alpha value to be applied to - * every color in the image.<p> - * - * An alpha value of 255 signifies an opaque color, while an - * alpha value of 0 signifies a translucent color.<p> - * - * @version 1.0, Apr 1 1996 - * @author David Geary - * @see RGBImageFilter - */ -public class DissolveFilter extends RGBImageFilter implements MedFilter -{ - private int opacity; - - public DissolveFilter() { - this(0); - } - public DissolveFilter(int opacity) { - canFilterIndexColorModel = true; - setOpacity(opacity); - } - public String info () - { - return "Dissolves an image"; - } - public void setOpacity(int opacity) { - Assert.notFalse(opacity >= 0 && opacity <= 255); - this.opacity = opacity; - } - public int filterRGB(int x, int y, int rgb) { - DirectColorModel cm = - (DirectColorModel)ColorModel.getRGBdefault(); - int alpha = cm.getAlpha(rgb); - int red = cm.getRed (rgb); - int green = cm.getGreen(rgb); - int blue = cm.getBlue (rgb); - - alpha = opacity; - - return alpha << 24 | red << 16 | green << 8 | blue; - } -} diff --git a/java/ImageProcessing/filters/EdgeDetectFilter.java b/java/ImageProcessing/filters/EdgeDetectFilter.java deleted file mode 100644 index 87cc88d475d..00000000000 --- a/java/ImageProcessing/filters/EdgeDetectFilter.java +++ /dev/null @@ -1,250 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class EdgeDetectFilter extends SpatialFilter -{ - public EdgeDetectFilter() - { - } - - public String info () - { - return "Edge detection filter."; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Image Error"); - return; - } - - System.gc(); - - int[] pixels = new int[columns_*rows_]; - int pixel = 0; - int red, green, blue; - int row1, row2, row3; - int new_red1 = 0, new_green1 = 0, new_blue1 = 0, - new_red2 = 0, new_green2 = 0, new_blue2 = 0; - int ul, um, ur, ll, lm, lr, ml, mr; - int alpha, lcv, lcv2; - - profile_timer_.start(); - - for (int z = SpatialFilter.iterations_; z-- > 0;) - { - lcv = rows_ - 1; - lcv2 = columns_ - 1; - for (int x = 1, index = 0; x < lcv; x++, index += columns_) - { - for (int y = 1; y < lcv2; y++) - { - row1 = index + y; - row2 = row1 + columns_; - row3 = row2 + columns_; - - ul = raster_[row1 - 1]; - um = raster_[row1]; - ur = raster_[row1 + 1]; - ml = raster_[row2 - 1]; - mr = raster_[row2 + 1]; - ll = raster_[row3 - 1]; - lm = raster_[row3]; - lr = raster_[row3 + 1]; - - alpha = (raster_[row2] >> 24) & 0xff; - - new_red1 = - (((ul >> 16) & 0xff) - + (((um >> 16) & 0xff) << 1) - + ((ur >> 16) & 0xff) - - ((ll >> 16) & 0xff) - - (((lm >> 16) & 0xff) << 1) - - ((lr >> 16) & 0xff)); - - new_green1 = - (((ul >> 8) & 0xff) - + (((um >> 8) & 0xff) << 1) - + ((ur >> 8) & 0xff) - - ((ll >> 8) & 0xff) - - (((lm >> 8) & 0xff) << 1) - - ((lr >> 8) & 0xff)); - - new_blue1 = - (((ul) & 0xff) - + (((um) & 0xff) << 1) - + ((ur) & 0xff) - - ((ll) & 0xff) - - (((lm) & 0xff) << 1) - - ((lr) & 0xff)); - - new_red2 = - (- ((ul >> 16) & 0xff) - + ((ur >> 16) & 0xff) - - (((ml >> 16) & 0xff) << 1) - + (((mr >> 16) & 0xff) << 1) - - ((ll >> 16) & 0xff) - + ((lr >> 16) & 0xff)); - - new_green2 = - (- ((ul >> 8) & 0xff) - + ((ur >> 8) & 0xff) - - (((ml >> 8) & 0xff) << 1) - + (((mr >> 8) & 0xff) << 1) - - ((ll >> 8) & 0xff) - + ((lr >> 8) & 0xff)); - - new_blue2 = - (- ((ul) & 0xff) - + ((ur) & 0xff) - - (((ml) & 0xff) << 1) - + (((mr) & 0xff) << 1) - - ((ll) & 0xff) - + ((lr) & 0xff)); - - - new_red1 = (int)Math.sqrt(new_red1*new_red1 + new_red2*new_red2); - new_green1 = (int)Math.sqrt(new_green1*new_green1 + new_green2*new_green2); - new_blue1 = (int)Math.sqrt(new_blue1*new_blue1 + new_blue2*new_blue2); - - if (new_red1 < 0) red = 0; - if (new_green1 < 0) green = 0; - if (new_blue1 < 0) blue = 0 ; - - - if (new_red1 > 255) - new_red1 = 255; - - if (new_green1 > 255) - new_green1 = 255; - - if (new_blue1 > 255) - new_blue1 = 255; - - pixels[row2] = (alpha << 24) | (new_red1 << 16) | (new_green1 << 8) | new_blue1; - } - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - consumer.imageComplete(status); - } - - /* - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Image Error"); - return; - } - - int[][] pixels = new int[rows_*columns_]; - int pixel = 0; - int red, green, blue; - int row1, row2, row3, row4, row5; - int a, b, c, d, rsum, gsum, bsum, v, maxv = 0; - int ul, um, ur, ml, mr, ll, lm, lr, lcv, lcv2; - int alpha; - - lcv = rows_ -1; - for (int y = 1; y < lcv; y++) - { - lcv2 = columns_ -1; - for (int x = 1; x < lcv2; x++) - { - row1 = columns_*(y-1) + x; - row2 = row1 + columns_; - row3 = row2 + columns_; - ul = raster_[row1 - 1]; - um = raster_[row1]; - ur = raster_[row1 + 1]; - ml = raster_[row2 - 1]; - mr = raster_[row2 + 1]; - ll = raster_[row3 - 1]; - lm = raster_[row3]; - lr = raster_[row3 + 1]; - - alpha = defaultRGB_.getAlpha(raster_[row2]); - - a = ((lr >> 16) & 0xff) - ((ul >> 16) & 0xff); - b = ((mr >> 16) & 0xff) - ((ml >> 16) & 0xff); - c = ((ur >> 16) & 0xff) - ((ll >> 16) & 0xff); - d = ((um >> 16) & 0xff) - ((lm >> 16) & 0xff); - - rsum = a + b + c; - if (rsum < 0) rsum = -rsum; - a = a - c - d; - if (a < 0) a = -a; - if (rsum > a) rsum = a; - rsum /= 3; - - a = ((lr >> 8) & 0xff) - ((ul >> 8) & 0xff); - b = ((mr >> 8) & 0xff) - ((ml >> 8) & 0xff); - c = ((ur >> 8) & 0xff) - ((ll >> 8) & 0xff); - d = ((um >> 8) & 0xff) - ((lm >> 8) & 0xff); - - gsum = a + b + c; - if (gsum < 0) gsum = -gsum; - a = a - c - d; - if (a < 0) a = -a; - if (gsum > a) gsum = a; - gsum /= 3; - - a = ((lr) & 0xff) - ((ul) & 0xff); - b = ((mr) & 0xff) - ((ml) & 0xff); - c = ((ur) & 0xff) - ((ll) & 0xff); - d = ((um) & 0xff) - ((lm) & 0xff); - - bsum = a + b + c; - if (bsum < 0) bsum = -bsum; - a = a - c - d; - if (a < 0) a = -a; - if (bsum > a) bsum = a; - bsum /= 3; - - pixels[row2] = (alpha << 24) | (rsum << 16) | (gsum << 8) | bsum; - - v = (((int)(rsum)*11 + ((int)(gsum) << 4) + (int)(bsum)*5) >> 5); - - if (maxv < v) - maxv = v; - } - - } - - for (int y = 1; y < rows_ - 1; y++) - { - for (int x = 1; x < columns_ - 1; x++) - { - pixel = pixels[y][x]; - alpha = (pixel >> 24) & 0xff; - red = (((pixel >> 16) & 0xff) * 255) / maxv; - green = (((pixel >> 8) & 0xff) * 255) / maxv; - blue = ((pixel & 0xff) * 255) / maxv; - - if (red < 0) red = 0; - if (green < 0) green = 0; - if (blue < 0) blue = 0 ; - - if (red > 255) red = 255; - if (green > 255) green = 255; - if (blue > 255) blue = 255; - - pixels[y*x] = (alpha << 24) | (red << 16) | (green << 8) | blue; - } - - consumer.setPixels(0, y, columns_, 1, defaultRGB_, pixels[y], 0, columns_); - } - - consumer.imageComplete(status); - } - */ -} diff --git a/java/ImageProcessing/filters/EmbossFilter.java b/java/ImageProcessing/filters/EmbossFilter.java deleted file mode 100644 index e6d5833ee39..00000000000 --- a/java/ImageProcessing/filters/EmbossFilter.java +++ /dev/null @@ -1,86 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class EmbossFilter extends SpatialFilter -{ - - public EmbossFilter() - { - } - - public String info () - { - return "Embosses an image."; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Emboss: Image Error: " + status); - return; - } - - System.out.println("Beginning to emboss an image."); - System.gc(); - - int[] pixels = new int[columns_*rows_]; - int pixel = 0; - int red, green, blue; - int row1, row2, row3, ul, um, ml, mr, lm, lr; - int new_grey = 0, lcv, lcv2; - int alpha; - - profile_timer_.start(); - - for (int z = SpatialFilter.iterations_; z-- > 0;) - { - lcv = rows_ -1; - for (int x = 1, index = 0; x < lcv; x++, index += columns_) - { - lcv2 = columns_ - 1; - for (int y = 1; y < lcv2; y++) - { - - row1 = index + y; - row2 = row1 + columns_; - row3 = row2 + columns_; - - ul = raster_[row1 - 1]; - um = raster_[row1]; - ml = raster_[row2 - 1]; - mr = raster_[row2 + 1]; - lm = raster_[row3]; - lr = raster_[row3 + 1]; - - alpha = (raster_[row2] >> 24) & 0xff; - - red = ((- (((ul >> 16) & 0xff) << 1) - ((um >> 16) & 0xff) - - ((ml >> 16) & 0xff) + ((mr >> 16) & 0xff) + - ((lm >> 16) & 0xff) + (((lr >> 16) & 0xff) << 1)) >> 3) + 128; - - green = ((- (((ul >> 8) & 0xff) << 1) - ((um >> 8) & 0xff) - - ((ml >> 8) & 0xff) + ((mr >> 8) & 0xff) + - ((lm >> 8) & 0xff) + (((lr >> 8) & 0xff) << 1)) >> 3) + 128; - - blue = ((- ((ul & 0xff) << 1) - (um & 0xff) - - (ml & 0xff) + (mr & 0xff) + - (lm & 0xff) + ((lr & 0xff) << 1)) >> 3) + 128; - - new_grey = (((int)(red)*11 + ((int)(green) << 4) + (int)(blue)*5) >> 5); - - pixels[row2] = (alpha << 24) | (new_grey << 16) | (new_grey << 8) | new_grey; - - } - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - // System.out.println(timer); - consumer.imageComplete(status); - } -} diff --git a/java/ImageProcessing/filters/Makefile b/java/ImageProcessing/filters/Makefile deleted file mode 100644 index 253bc9b5c22..00000000000 --- a/java/ImageProcessing/filters/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Makefile - -.SUFFIXES: .java .class - -JACE_WRAPPER = ../.. -CLASSDIR = $(JACE_WRAPPER)/classes -DOCDIR = $(JACE_WRAPPER)/doc - -CLASSPATH := $(CLASSDIR):$(CLASSPATH) - -all: - javac -d ${JACE_WRAPPER}/classes $(files) - -clean: - rm -rf *~ - -realclean: clean - rm -rf $(JACE_WRAPPER)/classes/imaging/filters/*.class - -files = MedFilter.java \ - Assert.java \ - BleachFilter.java \ - BlurFilter.java \ - DarkenFilter.java \ - DeSpeckleFilter.java \ - DissolveFilter.java \ - EdgeDetectFilter.java \ - EmbossFilter.java \ - OilPaintFilter.java \ - PixelizeFilter.java \ - RotateFilter.java \ - SharpenFilter.java \ - SpatialFilter.java \ - SpreadFilter.java \ - Timer.java - diff --git a/java/ImageProcessing/filters/MedFilter.java b/java/ImageProcessing/filters/MedFilter.java deleted file mode 100644 index def0bd2075a..00000000000 --- a/java/ImageProcessing/filters/MedFilter.java +++ /dev/null @@ -1,6 +0,0 @@ -package imaging.filters; - -public interface MedFilter -{ - String info (); -} diff --git a/java/ImageProcessing/filters/OilPaintFilter.java b/java/ImageProcessing/filters/OilPaintFilter.java deleted file mode 100644 index 68bcf79e5c2..00000000000 --- a/java/ImageProcessing/filters/OilPaintFilter.java +++ /dev/null @@ -1,97 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class OilPaintFilter extends SpatialFilter -{ - private int degree_ = 3; - - public OilPaintFilter() - { - } - - public OilPaintFilter(int degree) - { - degree_ = degree; - } - - public String info () - { - return "Converts an image into an oil painting."; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Oil Paint FilterImage Error: " + status); - return; - } - - System.gc(); - - int[] pixels = new int[columns_*rows_]; - int[] nnrect = new int[degree_*degree_]; - int offset = degree_/2, cnt = 0, maxcnt = 0, col = 0, tmp; - int lcv1 = rows_, - lcv2 = columns_, - lcv3 = degree_*degree_; - - profile_timer_.start(); - - for (int z = SpatialFilter.iterations_; z-- > 0;) - { - for (int y = 0, index = 0; y < lcv1; y++) - { - for (int x = 0; x < lcv2; x++, index++) - { - cnt = 0; - for (int i = y - offset; i < y + offset; i++) - { - tmp = i*columns_; - for (int j = x - offset; j < x + offset; j++, cnt++) - { - if (i >= 0 && i < lcv1 && j >= 0 && j < lcv2) - nnrect[cnt] = raster_[tmp + j]; - else - nnrect[cnt] = -1; - } - } - - maxcnt = 0; - col = 0; - cnt = 0; - for (int i = 0; i < lcv3; i++) - { - if (nnrect[i] != -1) - { - cnt = 1; - - for (int j = i+1; j < lcv3; j++) - { - if (nnrect[i] == nnrect[j]) - cnt++; - } - - if (cnt > maxcnt) - { - col = nnrect[i]; - maxcnt = cnt; - } - } - } - - pixels[index] = col; - } - } - } - - System.err.println("Oil Paint should be finished."); - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - consumer.imageComplete(status); - } -} diff --git a/java/ImageProcessing/filters/PixelizeFilter.java b/java/ImageProcessing/filters/PixelizeFilter.java deleted file mode 100644 index cdfe768789a..00000000000 --- a/java/ImageProcessing/filters/PixelizeFilter.java +++ /dev/null @@ -1,117 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class PixelizeFilter extends SpatialFilter -{ - private int pwidth_ = 4; - private int pheight_ = 4; - - public PixelizeFilter() - { - } - - public PixelizeFilter(int pwidth, int pheight) - { - pwidth_ = pwidth; - pheight_ = pheight; - } - - public String info () - { - return "Pixelizes the image."; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Pixelize Image Error: " + status); - return; - } - - System.gc(); - - int pixel; - int nsum, asum, rsum, gsum, bsum, nwide, nhigh, stx, sty, x, y; - int x_offset, y_offset, x_extent, y_extent, lcv, lcv2, lcv3, index; - int[] results = new int[rows_*columns_]; - - profile_timer_.start(); - - for (int z = SpatialFilter.iterations_; z-- > 0;) - { - lcv3 = pwidth_*pheight_; - nwide = (columns_ + pwidth_ - 1) / pwidth_; - nhigh = (rows_ + pheight_ - 1) / pheight_; - - stx = -(nwide*pwidth_ - columns_)/2; - sty = -(nhigh*pheight_ - rows_)/2; - - y = sty; - for (int i = 0; i < nhigh; i++, y += pheight_) - { - x = stx; - for (int j = 0; j < nwide; j++, x += pwidth_) - { - nsum = asum = rsum = bsum = gsum = 0; - - lcv = y + pheight_; - lcv2 = x + pwidth_; - for (int y1 = y; y1 < lcv; y1++) - { - index = y1*columns_; - for (int x1 = x; x1 < lcv2; x1++) - { - if (x1 >= 0 && y1 >= 0 && x1 < columns_ && y1 < rows_) - { - nsum++; - pixel = raster_[index + x1]; - - asum += (pixel >> 24) & 0xff; - rsum += (pixel >> 16) & 0xff; - gsum += (pixel >> 8 ) & 0xff; - bsum += pixel & 0xff; - } - } - } - - if (nsum > 0) - { - rsum /= nsum; - gsum /= nsum; - bsum /= nsum; - - if (asum < 0) asum = 0; - if (rsum < 0) rsum = 0; - if (gsum < 0) gsum = 0; - if (bsum < 0) bsum = 0; - - if (asum > 255) asum = 255; - if (rsum > 255) rsum = 255; - if (gsum > 255) gsum = 255; - if (bsum > 255) bsum = 255; - - } - - for (int y1 = y; y1< lcv; y1++) - { - index = y1*columns_; - for (int x1 = x; x1 < lcv2; x1++) - { - if (x1 >= 0 && y1 >= 0 && x1 < columns_ && y1 < rows_) - results[index + x1] - = (asum << 24) | (rsum << 16) | (gsum << 8) | bsum; - } - } - } - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, results, 0, columns_); - consumer.imageComplete(status); - } -} diff --git a/java/ImageProcessing/filters/RandomizeFilter.java b/java/ImageProcessing/filters/RandomizeFilter.java deleted file mode 100644 index 438f79e01c0..00000000000 --- a/java/ImageProcessing/filters/RandomizeFilter.java +++ /dev/null @@ -1,36 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; -import java.util.Random; - -public class RandomizeFilter extends RGBImageFilter implements MedFilter -{ - private static Random rand = new Random(System.currentTimeMillis()); - - public RandomizeFilter () - { - canFilterIndexColorModel = true; - } - - public String info () - { - return "Randomizes an image."; - } - - public int filterRGB(int x, int y, int rgb) - { - DirectColorModel cm = - (DirectColorModel)ColorModel.getRGBdefault(); - - int alpha = cm.getAlpha(rgb); - int red = rand.nextInt() % 255; - int green = rand.nextInt() % 255; - int blue = rand.nextInt() % 255; - - alpha = alpha << 24; - red = red << 16; - green = green << 8; - - return alpha | red | green | blue; - } -} diff --git a/java/ImageProcessing/filters/RotateFilter.java b/java/ImageProcessing/filters/RotateFilter.java deleted file mode 100644 index 39551017a4b..00000000000 --- a/java/ImageProcessing/filters/RotateFilter.java +++ /dev/null @@ -1,358 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; - -public class RotateFilter extends SpatialFilter -{ - private double angle_; - private int rotx_, roty_; - private int rotheight_, rotwidth_; - - public RotateFilter () - { - this.angle_ = 90.0; - } - - public RotateFilter(double angle) - { - this.angle_ = angle; - } - - public String info () - { - return "Rotates an image"; - } - - public void setDimensions(int width, int height) - { - DoublePoint temp; - - rows_ = height; - columns_ = width; - - // Convert the angle into radians - double rotrad = angle_ * Math.PI / (double)180.0; - - // Compute the corner points after rotation - double center_x = (double)(columns_ - 1) / (double)2.0; - double center_y = (double)(rows_ - 1) / (double)2.0; - - // The new top left corner - temp = rotatePoint(0, 0, center_x, center_y, rotrad); - int rtl_x = (int)(temp.x_ + ((temp.x_ < 0) ? -0.5 : 0.5)); - int rtl_y = (int)(temp.y_ + ((temp.y_ < 0) ? -0.5 : 0.5)); - - // the new top right corner - temp = rotatePoint(0, rows_, center_x, center_y, rotrad); - int rtr_x = (int)(temp.x_ + ((temp.x_ < 0) ? -0.5 : 0.5)); - int rtr_y = (int)(temp.y_ + ((temp.y_ < 0) ? -0.5 : 0.5)); - - // the new bottom left corner - temp = rotatePoint(columns_, 0, center_x, center_y, rotrad); - int rbl_x = (int)(temp.x_ + ((temp.x_ < 0) ? -0.5 : 0.5)); - int rbl_y = (int)(temp.y_ + ((temp.y_ < 0) ? -0.5 : 0.5)); - - // the new bottom right corner - temp = rotatePoint(columns_, rows_, center_x, center_y, rotrad); - int rbr_x = (int)(temp.x_ + ((temp.x_ < 0) ? -0.5 : 0.5)); - int rbr_y = (int)(temp.y_ + ((temp.y_ < 0) ? -0.5 : 0.5)); - - //System.out.println(" ( " + center_x + "," + center_y + " ) "); - //System.out.println(" ( " + rtl_x + "," + rtl_y + " ) "); - //System.out.println(" ( " + rtr_x + "," + rtr_y + " ) "); - //System.out.println(" ( " + rbr_x + "," + rbr_y + " ) "); - //System.out.println(" ( " + rbl_x + "," + rbl_y + " ) "); - - // rotated bounding box - int rbbx1, rbby1; - int rbbx = rbbx1 = rtl_x; - int rbby = rbby1 = rtl_y; - - if (rtr_x < rbbx) rbbx = rtr_x; - if (rtr_x > rbbx1) rbbx1 = rtr_x; - if (rtr_y < rbby) rbby = rtr_y; - if (rtr_y > rbby1) rbby1 = rtr_y; - - if (rbl_x < rbbx) rbbx = rbl_x; - if (rbl_x > rbbx1) rbbx1 = rbl_x; - if (rbl_y < rbby) rbby = rbl_y; - if (rbl_y > rbby1) rbby1 = rbl_y; - - if (rbr_x < rbbx) rbbx = rbr_x; - if (rbr_x > rbbx1) rbbx1 = rbr_x; - if (rbr_y < rbby) rbby = rbr_y; - if (rbr_y > rbby1) rbby1 = rbr_y; - - int rbbw = rbbx1 - rbbx; - int rbbh = rbby1 - rbby; - - //System.out.println("(rbbx, rbby): " + rbbx + " " + rbby); - //System.out.println("(rbbx1, rbby1): " + rbbx1 + " " + rbby1); - //System.out.println("(rbbw, rbbh): " + rbbw + " " + rbbh); - - - //rbbx--; rbby--; rbbw+=2; rbbh+=2; - - - // Ensure we haven't increased the size of the image - - /* - int x = rbbx + rbbw - 1, y = rbby + rbbh - 1; - if (rbbx < 0) rbbx = 0; - if (rbbx > columns_ - 1 ) rbbx = columns_ - 1; - if (rbby < 0) rbby = 0; - if (rbby > rows_ - 1) rbby = rows_ - 1; - */ - - /* - - if (x < 0) x = 0; - if (x > columns_ - 1) x = columns_ - 1; - if (y < 0) y = 0; - if (y > rows_ - 1) y = rows_ - 1; - - if (x < rbbx) x = rbbx; - if (y < rbby) y = rbby; - rbbw = (x - rbbx) + 1; - rbbh = (y - rbby) + 1; - - */ - - rotx_ = rbbx; - roty_ = rbby; - rotheight_ = rbbh; - rotwidth_ = rbbw; - - //System.out.println("(rotx,roty): " + rotx_ + " " + - // roty_); - //System.out.println("(rotwidth,rotheight): " + rotwidth_ + " " + - // rotheight_); - //System.out.println("(columns,rows): " + columns_ + - // " " + rows_); - - - raster_ = new int[columns_*rows_]; - consumer.setDimensions(rotwidth_, rotheight_); - } - - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Image Error: " + status); - return; - } - - // For each pixel in the dimensions of the rotated image, if the - // inverse rotation falls in the bounds of the original image. If - // it does, compute and store an appropriate color, otherwise skip - // it. - - System.gc(); - - double xf, yf, px, py, apx, apy; - int[] pixels = new int[rotwidth_*rotheight_]; - int ox, oy, ox1, oy1, index, pixel; - double cx = (columns_ - 1) / 2; - double cy = (rows_ - 1) / 2; - double rotrad = angle_ * Math.PI / 180.0, ang, d; - int p0r = 0, p0g = 0, p0b = 0, - p1r = 0, p1g = 0,p1b = 0, - p2r = 0, p2g = 0, p2b = 0, - p3r = 0, p3g = 0, p3b = 0, lcv, lcv2; - int rv,gv,bv, alpha; - double rd,gd,bd, p0wgt = 0, - p1wgt = 0, p2wgt = 0, p3wgt = 0, xfrac, yfrac; - - profile_timer_.start(); - - lcv = roty_ + rotheight_; - lcv2 = rotx_ + rotwidth_; - for (int y = roty_, i = 0; y < lcv; y++) - { - for (int x = rotx_; x < lcv2; x++, i++) - { - // Inverse rotate the point (x,y) - // Inlining the call to rotatePoint - xf = (double)x; - yf = (double)y; - d = Math.sqrt((xf - cx) * (xf - cx) + (yf - cy) * (yf - cy)); - - if ((xf - cx) != 0.0) - { - ang = Math.atan((cy-yf)/(xf-cx)); - if ((xf - cx) < 0) - ang += Math.PI; - } - else - { - if ((yf - cy) > 0.0) - ang = (Math.PI * 3.0) / 2; - else - ang = Math.PI / 2; - } - - xf = cx + (d * Math.cos(ang - rotrad)); - yf = cy - (d * Math.sin(ang - rotrad)); - // end inline - - // Cheat a little - if (xf < 0.0 && xf > -0.5) xf = 0.0; - if (yf < 0.0 && yf > -0.5) yf = 0.0; - - ox = (int)Math.floor(xf); - oy = (int)Math.floor(yf); - - if ((ox >= 0) && (oy >= 0) && - (ox < columns_) && (oy < rows_) ) - { - // The color will be a linear combination of the colors of - // the center pixel, its left or right neighbor, its top - // or bottom neighbor, and its corner neighbor. Which - // neighbors are used is determined by the position of - // the fractional part of xf, xy within the 1-unit square - // of the pixel. - - /* compute px,py: fractional offset from center of pixel (x.5,y.5) */ - xfrac = xf - ox; /* 0 - .9999 */ - yfrac = yf - oy; - px = ((xfrac >= .5) ? (xfrac - .5) : (-.5 + xfrac)); - py = ((yfrac >= .5) ? (yfrac - .5) : (-.5 + yfrac)); - apx = ((px < 0) ? -px : px); - apy = ((py < 0) ? -py : py); - - /* get neighbor colors: p0col, p1col, p2col, p3col */ - ox1 = ox + ((px < 0.0) ? -1 : 1); - oy1 = oy + ((py < 0.0) ? -1 : 1); - - index = oy * columns_ + ox; - pixel = raster_[index]; - alpha = (pixel >> 24) & 0xff; - p0r = (pixel >> 16) & 0xff; - p0g = (pixel >> 8) & 0xff; - p0b = pixel & 0xff; - - if (ox1 >= 0 && ox1 < columns_) - { - index = oy*columns_ + ox1; - pixel = raster_[index]; - p1r = (pixel >> 16) & 0xff; - p1g = (pixel >> 8) & 0xff; - p1b = pixel & 0xff; - p1wgt = apx * (1.0 - apy); - } - else { p1r=p1g=p1b=0; p1wgt = 0.0; } - - if (oy1 >= 0 && oy1 < rows_) - { - index = oy1*columns_ + ox; - pixel = raster_[index]; - p2r = (pixel >> 16) & 0xff; - p2g = (pixel >> 8) & 0xff; - p2b = pixel & 0xff; - p2wgt = apx * (1.0 - apy); - } - else { p2r=p2g=p2b=0; p2wgt = 0.0; } - - if (ox1 >= 0 && ox1 < columns_ && - oy1 >= 0 && oy1 < rows_) - { - index = oy1 * columns_ + ox1; - pixel = raster_[index]; - p3r = (pixel >> 16) & 0xff; - p3g = (pixel >> 8) & 0xff; - p3b = pixel & 0xff; - p3wgt = apx * (1.0 - apy); - } - else { p3r=p3g=p3b=0; p3wgt = 0.0; } - - p1wgt = p1wgt * .7; /* black art */ - p2wgt = p2wgt * .7; - p3wgt = p3wgt * .7; - - p0wgt = 1.0 - (p1wgt + p2wgt + p3wgt); - - /* okay, compute and store resulting color */ - rd = p0r * p0wgt + p1r * p1wgt + p2r * p2wgt + p3r * p3wgt; - gd = p0g * p0wgt + p1g * p1wgt + p2g * p2wgt + p3g * p3wgt; - bd = p0b * p0wgt + p1b * p1wgt + p2b * p2wgt + p3b * p3wgt; - - rv = (int) (rd + 0.5); - gv = (int) (gd + 0.5); - bv = (int) (bd + 0.5); - - if (rv < 0) rv = 0; - if (gv < 0) gv = 0; - if (bv < 0) bv = 0 ; - - if (rv > 255) rv = 255; - if (gv > 255) gv = 255; - if (bv > 255) bv = 255; - - pixels[i] = (alpha << 24) | (rv << 16) | (gv << 8) | bv; - } - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, rotwidth_, rotheight_, defaultRGB_, - pixels, 0, rotwidth_); - - consumer.imageComplete(status); - } - - private final static DoublePoint rotatePoint(int x, int y, - double cx, double cy, double rad) - { - /* rotate point x, y 'rad' radians around cx, cy, return rx, ry */ - double d, xf, yf, ang, rx, ry; - - xf = (double)x; - yf = (double)y; - - // d = distance from the point to the center - d = Math.sqrt((xf - cx) * (xf - cx) + (yf - cy) * (yf - cy)); - - if ((xf - cx) != 0.0) - { - // Compute the angle between the axis and the point in radians - // using the inverse tangent function. - ang = Math.atan((cy-yf)/(xf-cx)); - - // If the x value falls below the axis the angle is between - // PI and 2*PI. - if ((xf - cx) < 0) - ang += Math.PI; - } - else - { - // The point is on the positive y-axis so its angle is 3/2*PI - // I'm guessing this the cooridnate system is flipped in - // screen graphics. - if ((yf - cy) > 0.0) - ang = (Math.PI * 3.0) / 2; - else - ang = Math.PI / 2; - } - - rx = cx + (d * Math.cos(ang + rad)); - ry = cy - (d * Math.sin(ang + rad)); - - return new DoublePoint(rx, ry); - } -} - -class DoublePoint -{ - public double x_; - public double y_; - - DoublePoint(double x, double y) - { - x_ = x; - y_ = y; - } -} diff --git a/java/ImageProcessing/filters/SharpenFilter.java b/java/ImageProcessing/filters/SharpenFilter.java deleted file mode 100644 index fcb6f03c7ac..00000000000 --- a/java/ImageProcessing/filters/SharpenFilter.java +++ /dev/null @@ -1,272 +0,0 @@ -package imaging.filters; - -import java.awt.Color; -import java.awt.image.*; -import java.util.*; - -public class SharpenFilter extends SpatialFilter -{ - float percentage_ = (float)75.0; - - public SharpenFilter() - { - } - - public SharpenFilter(float percentage) - { - percentage_ = percentage; - } - - public String info () - { - return "Sharpens an image."; - } - - - public void imageComplete(int status) - { - System.out.println("Image Complete called"); - - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Image Error"); - return; - } - - System.gc(); - - float[] hsv = new float[3]; - int rgb, red, green, blue; - int pixel, alpha, lcv, lcv2, lcv3; - int[] pixels = new int[columns_*rows_]; - float fact, ifact, hue, sat, val, vsum; - float[] line0 = new float[columns_], - linep1 = new float[columns_], - linem1 = new float[columns_], - tmpptr; - - profile_timer_.start(); - - for (int z = 0; z < SpatialFilter.iterations_; z++) - { - fact = percentage_/(float)100.0; - ifact = (float)1.0 - fact; - - for (int x = 0; x < columns_; x++) - { - pixel = raster_[x]; - hsv = getHSV(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), (pixel & 0xff),hsv); - line0[x] = hsv[2]; - } - - lcv = columns_ << 1; - for (int x = columns_, index = 0; x < lcv; x++, index++) - { - pixel = raster_[x]; - hsv = getHSV(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), (pixel & 0xff),hsv); - linep1[index] = hsv[2]; - } - - lcv = columns_ - 1; - lcv2 = rows_ - 1; - for (int y = 1, i = columns_; y < lcv2; y++) - { - tmpptr = linem1; - linem1 = line0; - line0 = linep1; - linep1 = tmpptr; - - lcv3 = columns_*(y+2); - for (int x = columns_*(y+1), index= 0; x < lcv; x++, index++) - { - pixel = raster_[x]; - // Note hsv is only instantiated once - hsv = getHSV(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), (pixel & 0xff), hsv); - linep1[index] = hsv[2]; - } - - i++; - for (int x = 1; x < lcv; x++, i++) - { - vsum = (float)0.0; - vsum = linem1[x-1] + linem1[x] + linem1[x+1] + - line0[x-1] + line0[x] + line0[x + 1] + - linep1[x-1] + linep1[x] + linep1[x + 1]; - - pixel = raster_[i]; - alpha = (pixel >> 24) & 0xff; - hsv = getHSV(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), (pixel & 0xff), hsv); - - val = ((hsv[2] - (fact * vsum) / 9) / ifact); - if (val < 1.0) - { - if (val < 0.0) - val = (float)0.0; - } - else - val = (float)1.0; - - hsv[2] = val; - rgb = getRGB(hsv[0], hsv[1], hsv[2]); - - red = (rgb >> 16) & 0xff; - green = (rgb >> 8) & 0xff; - blue = rgb & 0xff; - - if (red < 0) red = 0; - if (green < 0) green = 0; - if (blue < 0) blue = 0 ; - - if (red > 255) red = 255; - if (green > 255) green = 255; - if (blue > 255) blue = 255; - - pixels[i] = - (alpha << 24) | (red << 16) | (green << 8) | blue; - } - i++; - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - - System.out.println("Finished altering image"); - consumer.imageComplete(status); - } - - - static private float[] getHSV(int red, int green, int blue, float[] hsv) - { - float rd, gd, bd, max, min, del, rc, gc, bc, hue, sat; - if (hsv == null) - hsv = new float[3]; - - /* convert RGB to HSV */ - rd = red / (float)255.0; /* rd,gd,bd range 0-1 instead of 0-255 */ - gd = green / (float)255.0; - bd = blue / (float)255.0; - - /* compute maximum of rd,gd,bd */ - if (rd >= gd) - { - if (rd >= bd) - max = rd; - else - max = bd; - } - else - { - if (gd >= bd) - max = gd; - else - max = bd; - } - - /* compute minimum of rd,gd,bd */ - if (rd<=gd) - { - if (rd<=bd) - min = rd; - else - min = bd; - } - else - { - if (gd<=bd) - min = gd; - else - min = bd; - } - - del = max - min; - hsv[2] = max; - - if (max != 0.0) - sat = (del) / max; - else - sat = (float)0.0; - - hue = -1; - - if (sat != 0.0) - { - rc = (max - rd) / del; - gc = (max - gd) / del; - bc = (max - bd) / del; - - if (rd == max) - hue = bc - gc; - else - if (gd == max) - hue = 2 + rc - bc; - else - if (bd == max) - hue = 4 + gc - rc; - - hue *= 60; - if (hue<0) - hue += 360; - } - - hsv[0] = hue; - hsv[1] = sat; - return hsv; - } - - static private int getRGB(float hue, float sat, float val) - { - int j, r, g, b; - float rd, gd, bd; - float f, p, q, t; - - /* convert HSV back to RGB */ - if (hue == -1 || sat == 0.0) - { - rd = val; gd = val; bd = val; - } - else - { - if (hue==(float)360.0) hue = (float)0.0; - hue = hue / (float)60.0; - j = (int) hue; - if (j<0) j=0; /* either hue or floor seem to go neg on some sys */ - f = hue - j; - p = val * (1-sat); // val - sat* val - q = val * (1 - (sat*f)); // val - val*sat*f - t = val * (1 - (sat*(1 - f))); - - switch (j) { - case 0: rd = val; gd = t; bd = p; break; - case 1: rd = q; gd = val; bd = p; break; - case 2: rd = p; gd = val; bd = t; break; - case 3: rd = p; gd = q; bd = val; break; - case 4: rd = t; gd = p; bd = val; break; - case 5: rd = val; gd = p; bd = q; break; - default: rd = val; gd = t; bd = p; break; /* never happen */ - } - } - r = (int)(rd * 255.0 + 0.5); - g = (int)(gd * 255.0 + 0.5); - b = (int)(bd * 255.0 + 0.5); - - return 0xff000000 | (r << 16) | (g << 8) | b; - } -} - - - - - - - - - - - - - - - diff --git a/java/ImageProcessing/filters/SpatialFilter.java b/java/ImageProcessing/filters/SpatialFilter.java deleted file mode 100644 index ad56164819e..00000000000 --- a/java/ImageProcessing/filters/SpatialFilter.java +++ /dev/null @@ -1,213 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; -import JACE.Timers.ProfileTimer; - -public class SpatialFilter extends ImageFilter implements MedFilter -{ - public SpatialFilter() - { - } - - public SpatialFilter(int[][] matrix, int degree) - { - this(matrix, degree, 1, 0); - } - - public SpatialFilter(int[][] matrix, int degree, int div_factor, int offset) - { - matrix_ = matrix; - div_factor_ = div_factor; - offset_ = offset; - degree_ = degree; - } - - public void setFilter(int[][] matrix, int degree, int div_factor) - { - matrix_ = matrix; - degree_ = degree; - div_factor_ = div_factor; - } - - public String info () - { - return "Base Filter class. Doesn't do much"; - } - - public long filterTime() - { - return profile_timer_.elapsedTime(); - } - - public static void setTimer(int internal_iterations) - { - iterations_ = internal_iterations; - } - - public void setDimensions(int width, int height) - { - rows_ = height; - columns_ = width; - raster_ = new int[width * height]; - consumer.setDimensions(width, height); - } - - public void setPixels(int x, int y, int w, int h, ColorModel model, - byte pixels[], int off, int scansize) - { - int source_offset = off; - int dest_offset = y * columns_ + x; - - for (int y_ind = 0; y_ind < h; y_ind++) - { - for (int x_ind = 0; x_ind < w; x_ind++) - { - raster_[dest_offset] = model.getRGB(pixels[source_offset] & 0xff); - dest_offset++; - source_offset++; - } - - source_offset += (scansize - w); - dest_offset += (columns_ - w); - } - } - - public void setPixels(int x, int y, int w, int h, ColorModel model, - int pixels[], int off, int scansize) - { - int source_offset = off; - int dest_offset = y * columns_ + x; - - if (model == defaultRGB_) - { - for (int yc = 0; yc < h; yc++) - { - System.arraycopy(pixels, source_offset, raster_, dest_offset, w); - source_offset += scansize; - dest_offset += columns_; - } - } - else - { - - for (int yc = 0; yc < h; yc++) - { - for (int xc = 0; xc < w; xc++) - { - raster_[dest_offset] = model.getRGB(pixels[source_offset]); - dest_offset++; - source_offset++; - } - source_offset += (scansize - w); - dest_offset += (columns_ - w); - } - } - } - - public void setColorModel(ColorModel model) - { - consumer.setColorModel(defaultRGB_); - } - - public void setHints(int hintflags) - { - consumer.setHints(TOPDOWNLEFTRIGHT - | COMPLETESCANLINES - | SINGLEPASS - | (hintflags & SINGLEFRAME)); - } - - - public void imageComplete(int status) - { - System.out.println("Image Complete called"); - - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Image Error"); - return; - } - - int[] pixels = new int[columns_]; - int[][] new_raster= expandRaster(); - int pixel = 0; - int red, green, blue; - int new_red = 0, new_green = 0, new_blue = 0; - int alpha; - - for (int x = raster_offset_; x < rows_; x++) - { - for (int y = raster_offset_; y < columns_; y++) - { - new_red = 0; new_green = 0; new_blue = 0; - alpha = defaultRGB_.getAlpha(new_raster[x][y]); - for (int i = 0; i < degree_; i++) - { - for (int j = 0; j < degree_; j++) - { - pixel = new_raster[x + (i - raster_offset_)][y + (j - raster_offset_)]; - - red = defaultRGB_.getRed(pixel) * matrix_[i][j]; - blue = defaultRGB_.getBlue(pixel) * matrix_[i][j]; - green = defaultRGB_.getGreen(pixel) * matrix_[i][j]; - - new_red += red; - new_green += green; - new_blue += blue; - } - } - - new_red /= div_factor_; - new_green /= div_factor_; - new_blue /= div_factor_; - - new_red = Math.min(Math.abs(new_red), 255); - new_green = Math.min(Math.abs(new_green), 255); - new_blue = Math.min(Math.abs(new_blue), 255); - - pixels[y - raster_offset_] = - (alpha << 24) | (new_red << 16) | (new_green << 8) | new_blue; - } - - consumer.setPixels(0, x - raster_offset_, columns_, 1, defaultRGB_, pixels, 0, columns_); - } - - System.out.println("Finished altering image"); - consumer.imageComplete(status); - } - - protected int[][] expandRaster() - { - int[][] new_raster; - int index = 0; - - raster_offset_ = degree_ / 2; - new_raster = new int[rows_ + raster_offset_*2][columns_ + raster_offset_*2]; - - for (int x = 0; x < rows_; x++) - { - for (int y = 0; y < columns_; y++) - { - new_raster[x + raster_offset_][y + raster_offset_] = raster_[index]; - index++; - } - } - - return new_raster; - } - - protected static final int intensity(int rd, int gn, int bl) - { - return (((int)(rd)*11 + (int)(gn)*16 + (int)(bl)*5) >> 5); - } - - protected static int iterations_ = 1; - protected static final ColorModel defaultRGB_ = ColorModel.getRGBdefault(); - protected int[][] matrix_; - protected int[] raster_; - protected int rows_ = 0, columns_ = 0; - protected int div_factor_ = 1, offset_, degree_; - protected int raster_offset_ = 0; - protected final ProfileTimer profile_timer_ = new ProfileTimer(); -} diff --git a/java/ImageProcessing/filters/SpreadFilter.java b/java/ImageProcessing/filters/SpreadFilter.java deleted file mode 100644 index c78790c9235..00000000000 --- a/java/ImageProcessing/filters/SpreadFilter.java +++ /dev/null @@ -1,130 +0,0 @@ -package imaging.filters; - -import java.awt.image.*; -import java.util.Random; - -public class SpreadFilter extends SpatialFilter -{ - private int pwidth_ = 5; - private int pheight_ = 5; - - public SpreadFilter() - { - } - - public SpreadFilter(int pwidth, int pheight) - { - pwidth_ = pwidth; - pheight_ = pheight; - } - - public String info () - { - return "Spreads an image (an effect of being under water)."; - } - - public void imageComplete(int status) - { - if (status == IMAGEERROR || status == IMAGEABORTED) - { - consumer.imageComplete(status); - System.out.println("Spread Image Error: " + status); - return; - } - - System.gc(); - - Random rand = new Random(); - int[] pixels = new int[columns_*rows_]; - int d, dx, dy, x1, y1, xrng, xoff, yrng, yoff; - int minx, maxx, miny, maxy, rdist, tmp; - - profile_timer_.start(); - - for (int z = 0; z < SpatialFilter.iterations_; z++) - { - for (int y = 0, i=0; y < rows_; y++) - { - for (int x = 0; x < columns_; x++, i++) - { - if (pwidth_ < 0) - { - d = (pwidth_ < 0 ? -pwidth_ : pwidth_); - - minx = x - d; - if (minx < 0) - minx = 0; - - maxx = x + d; - if (maxx >= columns_) - maxx = columns_ - 1; - - tmp = rand.nextInt(); - tmp = (tmp < 0 ? -tmp : tmp); - x1 = minx + tmp % ((maxx - minx) + 1); - - miny = y - d; - if (miny < 0) - miny = 0; - - maxy = y + d; - if (maxy >= rows_) - maxy = rows_ - 1; - - rdist = d - (x1 < x ? -(x1 - x) : x1 - x); - if (y - miny > rdist) - miny = (y - rdist); - if (maxy - y > rdist) - maxy = (y + rdist); - - tmp = rand.nextInt(); - tmp = (tmp < 0 ? -tmp : tmp); - y1 = miny + tmp % ((maxy - miny) + 1); - } - else - { - minx = x - pwidth_; - if (minx < 0) - minx = 0; - - maxx = x + pwidth_; - if (maxx >= columns_) - maxx = columns_ - 1; - - tmp = rand.nextInt(); - tmp = (tmp < 0 ? -tmp : tmp); - x1 = minx + tmp % ((maxx - minx) + 1); - - miny = y - pheight_; - if (miny < 0) - miny = 0; - - maxy = y + pheight_; - if (maxx >= columns_) - maxx = columns_ - 1; - - tmp = rand.nextInt(); - tmp = (tmp < 0 ? -tmp : tmp); - y1 = miny + tmp % ((maxy - miny) + 1); - } - - if (x1 >= 0 && y1 >= 0 && x1 < columns_ && y1 < rows_) - { - int pixel = raster_[i]; - int alpha = (pixel >> 24) & 0xff; - int red = (pixel >> 16) & 0xff; - int green = (pixel >> 8) & 0xff; - int blue = pixel & 0xff; - - pixels[i] = (alpha << 24) | (red << 16) | (green << 8) | blue; - } - } - } - } - - profile_timer_.stop(); - - consumer.setPixels(0, 0, columns_, rows_, defaultRGB_, pixels, 0, columns_); - consumer.imageComplete(status); - } -} diff --git a/java/ImageProcessing/filters/Timer.java b/java/ImageProcessing/filters/Timer.java deleted file mode 100644 index 609ec8aa366..00000000000 --- a/java/ImageProcessing/filters/Timer.java +++ /dev/null @@ -1,23 +0,0 @@ -package imaging.filters; - -public class Timer -{ - long start_time_; - long stop_time_; - - public void start() - { - start_time_ = System.currentTimeMillis(); - } - - public void stop() - { - stop_time_ = System.currentTimeMillis(); - } - - public String toString() - { - long total = stop_time_ - start_time_; - return "Total Time:" + total + " ms"; - } -} |