[Bluej-discuss] Chapter 11 - Imageviewer Smooth Filter
Cecilia Vargas
C.A.Vargas at kent.ac.uk
Thu Jul 19 21:01:23 BST 2007
Hello Mark,
The bluej-discuss list is *not* for textbook questions. There is another
list for that. See http://www.bluej.org/objects-first/discussion.html
Cecilia
Mark Wallsgrove wrote:
> Afternoon everyone,
>
> I am just reading through chapter 11 on page 343 and I have become stuck on
> a task. The idea is to create a smooth filter for an image. My filter
> doesn't smooth lol.. I have programmed what they asked for, get the average
> of 9 pixels and set the middle pixel to that average. This creates a very
> distasteful image.
>
> Here is my code for the filter:
>
> [CODE]
> import java.awt.Color;
> import java.util.ArrayList;
> /**
> * Write a description of class SmoothFilter here.
> *
> * @author (your name)
> * @version (a version number or a date)
> */
> public class SmoothFilter extends Filter
> {
> /**
> * Constructor for objects of class SmoothFilter
> */
> public SmoothFilter(String name)
> {
> super(name);
> }
>
> /**
> * Apply this filter to an image
> * @param image The image to apply the filter to
> */
> public OFImage apply(OFImage image){
> //Create new image
> OFImage newImage = new OFImage(image);
> //Get height and width
> int w = image.getWidth();
> int h = image.getHeight();
> //Loops
> for(int y = 0; y < h; y++){
> for(int x = 0; x < w; x++){
> newImage.setPixel(x, y, getNewPixel(image, x, y));
>
> }
> }
> return newImage;
> }
> /**
> * return the modified pixel
> * @param image Image to take a sample from
> * @return the new pixel
> */
> private Color getNewPixel(OFImage image, int x, int y){
> //Create new list
> int averagePix = 0;
> int counter = 0;
> for(int cy = 0; cy < 3; cy++){
> for(int cx = 0; cx < 3; cx++){
> if(((x-1)+cx > -1) && ((x-1)+cx < image.getWidth())){
> if(((y-1)+cy > -1) && ((y-1)+cy < image.getHeight())){
> averagePix +=
> image.getPixel(x-1+cx,y-1+cy).getRGB();
> counter++;
> //System.out.println("Coords: "+ (y-1+cy) +" :: y=
> "+ y +" cy= "+ cy +" \n "+ (x-1+cx));
> //System.exit(0);
> }
> }
> }
> }
> return (new Color(averagePix / counter));
> }
> }
> [/CODE]
>
>
> Could anyone else give me a clue for what I am meant to be programming..
> ie.. whats the sudo code. I think I might have got the wrong idea. The txt
> for that question isn't worded correctly I don't think.
>
> Thanks for any help given..
> All the best
> Mark
>
> _______________________________________________
> mailing list bluej-discuss at bluej.org
> To unsubscribe or change your preferences, go to
> http://lists.bluej.org/mailman/listinfo/bluej-discuss
>
More information about the bluej-discuss
mailing list