[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
The contrast function
From: |
David Bateman |
Subject: |
The contrast function |
Date: |
Tue, 25 Mar 2008 16:01:48 +0100 |
User-agent: |
Thunderbird 2.0.0.12 (X11/20080306) |
The contrast function should be easy to implement.. It just comes down
to normalizing the data to the number of elements in the colormap and
counting the number of elements in the data between each integer value..
I've implemented a function that basically does this, this being
function map = contrast (x, n)
if (nargin == 1)
n = rows (colormap);
elseif (nargin == 2)
if (! isscalar (n))
error ("contrast: n must be a scalar");
endif
else
print_usage ();
endif
x = x (:);
minx = min (x);
map = find (diff (sort ([round(n * ((x - minx) ./ (max(x) - minx)));
[0:n]']))) - [1:n]';
minm = min (map);
map = (map - minm) ./ (max (map) - minm);
map = [map , map, map];
endfunction
though I see a difference with the matlab behavior for the same
function.. It appears that matlab doesn't define the first term of the
colormap as [0,0,0] and so the maximum contrast can't be achieved as
pure black is excluded from the colormap. This can be seen with
imagesc(reshape(1:100,10,10))
map = contrast (1:100,10)
colormap(map)
It seems to me better to use both [0,0,0] and [1,1,1] as the limits of
the colormap for contrast. Does it make sense to have this inconsistency
with matlab? If so I'll propose a patch to add contrast based on the above
D.
--
David Bateman address@hidden
Motorola Labs - Paris +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de St Aubin +33 6 72 01 06 33 (Mob)
91193 Gif-Sur-Yvette FRANCE +33 1 69 35 77 01 (Fax)
The information contained in this communication has been classified as:
[x] General Business Information
[ ] Motorola Internal Use Only
[ ] Motorola Confidential Proprietary
- The contrast function,
David Bateman <=