Re: distribution of colors for an image [message #41495 is a reply to message #41349] |
Wed, 27 October 2004 05:58   |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
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?
Cheers,
David
--
David W. Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http:/www.dfanning.com/
Phone: 970-221-0438, IDL Book Orders: 1-888-461-0155
|
|
|