[Bluej-discuss] exercise 11.37 page 331

Michael Kölling M.Kolling at kent.ac.uk
Thu May 11 14:38:26 BST 2006


You could take the average of the pixel and all its neighbouring  
pixels. That should do it.

mik

On 9 May 2006, at 13:28, Luis Moreira wrote:

> Hi Guys,
> I sorted the greyscale filter and it is now working, thanks  
> Michael. I am now looking at the smooth filter, and I can see what  
> I need to do but the algorithm that I can come up with seems very  
> complicated. Is there a simple way to decide which values to get?
> Best regards
> 		Luis
>
>
>
> -----Original Message-----
> From: bluej-discuss-bounces at bluej.org [mailto:bluej-discuss- 
> bounces at bluej.org] On Behalf Of Michael Kölling
> Sent: 09 May 2006 11:09
> To: General discussion for users of BlueJ
> Subject: Re: [Bluej-discuss] exercise 11.37 page 331
>
> In your current implementation, 'value' will never be more than 255
> (because you get the values, and divide the sum by three).
>
> So you can safely do
>
> 	image.setPixel(x, y, new Color(value, value, value));
>
> mik
>
> On 9 May 2006, at 10:19, Luis Moreira wrote:
>
>> Hi Michael,
>> I have tried your solution but the problem is that if I give the
>> value to each component the final RGB value is more than 255 I
>> tried to limit the value to 255 but then all the pixels have the
>> same color.
>> best regards
>>                  Luis
>>
>>
>>> From: Michael Kölling <M.Kolling at kent.ac.uk>
>>> Reply-To: General discussion for users of BlueJ <bluej-
>>> discuss at bluej.org>
>>> To: General discussion for users of BlueJ <bluej-discuss at bluej.org>
>>> Subject: Re: [Bluej-discuss] exercise 11.37 page 331
>>> Date: Mon, 8 May 2006 20:57:23 +0100
>>>
>>> Your code looks very good until the very last line. That's where the
>>> bug creeps in.
>>>
>>> When you use
>>>
>>> 	image.setPixel(x, y, value);
>>>
>>> (that is, the setPixel method with one int as the color value) the
>>> system takes all three colors out of selected bits of that int
>>> variable. You should use the setPixel method that uses a Color
>>> argument instead.
>>>
>>> You 'value' variable now holds the value you want to use for each of
>>> the color channels, so you should create a Color using
>>>
>>> 	new Color(value, value, value)
>>>
>>> and pass that one to setPixel. Since the three color channels have
>>> the same value, the color will be a shade of grey.
>>>
>>> Michael
>>>
>>>
>>> On 8 May 2006, at 17:51, Luis Moreira wrote:
>>>
>>>> Hi Michael,
>>>> this is what I have done, based on what I got from your email, but
>>>> the problem is that all pixels go blue. Is this what you mean or am
>>>> I missing something?
>>>>
>>>> public void apply(OFImage image)
>>>>    {
>>>>        int height = image.getHeight();
>>>>        int width = image.getWidth();
>>>>        for(int y = 0; y < height; y++) {
>>>>            for(int x = 0; x < width; x++) {
>>>>                Color pixel = image.getPixel(x, y);
>>>>                int red = pixel.getRed();
>>>>                int green = pixel.getGreen();
>>>>                int blue = pixel.getBlue();
>>>>                int value = (red + green + blue)/ 3;
>>>>                image.setPixel(x, y, value);
>>>>            }
>>>>        }
>>>>    }
>>>>
>>>>
>>>>> From: Michael Kölling <M.Kolling at kent.ac.uk>
>>>>> Reply-To: General discussion for users of BlueJ <bluej-
>>>>> discuss at bluej.org>
>>>>> To: General discussion for users of BlueJ <bluej-
>>> discuss at bluej.org>
>>>>> Subject: Re: [Bluej-discuss] exercise 11.37 page 331
>>>>> Date: Mon, 8 May 2006 16:17:20 +0100
>>>>>
>>>>> On 8 May 2006, at 16:12, Luis Moreira wrote:
>>>>>
>>>>>> Hi Guys,
>>>>>> on exercise 11.37, I manage to add the filter no problem, but
>>> the
>>>>>> functionality I could not work out.
>>>>>> the exercise states that to make a pixel any shade of gray we
>>> give
>>>>>> the same
>>>>>> value to red,green and blue. that is fine but what value do I
>>> need
>>>>>> to give
>>>>>> the three components?
>>>>>
>>>>> You can preserve the brightness (roughly) by leaving the sum of
>>>>> the R/
>>>>> G/B channels the same.
>>>>>
>>>>> That is, compute the average of the R, G and B values, and use
>>> that
>>>>> average for all three channels.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Michael
>>>>>
>>>>> _______________________________________________
>>>>> mailing list bluej-discuss at bluej.org
>>>>> To unsubscribe or change your preferences, go to
>>>>> http://lists.bluej.org/mailman/listinfo/bluej-discuss
>>>>
>>>> _________________________________________________________________
>>>> The new MSN Search Toolbar now includes Desktop search! http://
>>>> join.msn.com/toolbar/overview
>>>>
>>>> _______________________________________________
>>>> mailing list bluej-discuss at bluej.org
>>>> To unsubscribe or change your preferences, go to
>>>> http://lists.bluej.org/mailman/listinfo/bluej-discuss
>>>
>>> _______________________________________________
>>> mailing list bluej-discuss at bluej.org
>>> To unsubscribe or change your preferences, go to
>>> http://lists.bluej.org/mailman/listinfo/bluej-discuss
>>
>> _________________________________________________________________
>> Are you using the latest version of MSN Messenger? Download MSN
>> Messenger 7.5 today! http://join.msn.com/messenger/overview
>>
>> _______________________________________________
>> mailing list bluej-discuss at bluej.org
>> To unsubscribe or change your preferences, go to
>> http://lists.bluej.org/mailman/listinfo/bluej-discuss
>
> _______________________________________________
> mailing list bluej-discuss at bluej.org
> To unsubscribe or change your preferences, go to
> http://lists.bluej.org/mailman/listinfo/bluej-discuss
> _______________________________________________
> 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