comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » distribution of colors for an image
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: distribution of colors for an image [message #41488 is a reply to message #41366] Wed, 27 October 2004 10:27 Go to previous messageGo to previous message
JD Smith is currently offline  JD Smith
Messages: 850
Registered: December 1999
Senior Member
On Wed, 27 Oct 2004 15:57:00 +0200, Reimar Bauer wrote:

> David Fanning wrote:
>> Reimar Bauer writes:
>>
>>
>>> fine, I have seen a lot of instruction on your marvellous web page.
>>>
>>> But I don't understand the result I got. Lets show an example.
>>>
>>> a=dist(20)
>>> h=histogram(a)
>>> print,max(a),max(h)
>>> 14.1421 56
>>>
>>>
>>> u=uniq(a,sort(a))
>>> help,u,h
>>> U LONG = Array[61]
>>> H LONG = Array[15]
>>>
>>> Why could be h higher as a?
>>> Why doesn't I got a vector length of 61 as uniq tells?
>>
>>
>> You asked about color distribution in an image. A histogram
>> will tell you (with a byte scaled image, of course) how many
>> pixels in the image have a particular color. It will even
>> tell you which pixels those are, but that is another story,
>> best explained with JD's Histogram Tutorial.
>>
>> In your case H is fifteen elements long, because your data
>> had values between 0 and 15, and you used a bin size of 1,
>> by default. The *numbers* returned from histogram, told you
>> the pixel distribution of those 15 "colors". In one bin, for
>> example, you had 56 pixels values that fell into that bin.
>>
>> You had 61 unique numbers in your data, but all 61 of them fell
>> into one of the 15 bins you set up.
>>
>> To see your color distribution, you want to plot the histogram
>> of your data:
>>
>> data = dist(200)
>> Plot, Histogram(data), XStyle=1, $
>> XTitle='Color Distribution', YTitle='Number of Pixels'
>>
>> Does that help?
>>
>
> Yes, this is very good explained.
>
> Now it is clear and I know why I was so irritated of the result I got.
>
>
> I have used a circular clipping of an image and have missed that's
> histogram uses always rectangular input. The background color which
> clips the data to invisible is count highest. If I don't use max_value I
> see nothing on the plot.


Another way to recover all 61 of your input values, illustrating how bin
size has everything to do with the number of non-zero histogram elements:

IDL> a=dist(20)
IDL> h=histogram(a,BINSIZE=.05)
IDL> wh=where(h gt 0,cnt)
IDL> print,cnt
61

But beware of using HISTOGRAM on floating point data in cases where you
care whether a given value falls in one bin or another (see the "razor's
edge" article http://www.dfanning.com/math_tips/razoredge.html).

JD
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: IDL 6.1 EPS error
Next Topic: CSMI of a region

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sun Oct 12 02:37:57 PDT 2025

Total time taken to generate the page: 1.20031 seconds