[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