From mail from Rich LeGrand, Jul 27, 2005 11:17 AM:
--Add ability to turn off gamma correction so we can
select from video
memory and create models (teach mode). Window select?
Or maybe some kind
of frame interleave scheme? If we interleave frames,
would this look
decent?
From mail from Anne Wright, Jul 27, 2005 2:16 PM:
I was thinking of this as capture of the actual value
of pixels coming
off the camera within a certain window into somewhere
other than video
memory. It didn't occur to me that being able to turn
off gamma on
the display could potentially serve the same goal of
being able to
query the actual pixel values and fix the problem that
prevented
auto-training from being possible before.
Here's the question: I ideally want to know the real
HSV values that
correspond to the pixels coming off the camera in a
given region so I
can decide how to modify the model. The HSV value you
get based on a
truncated 15-bit value is going to be different than
the value you
would get operating on the full 24-bit pixel value.
Can it be
different enough to screw things up? The LUT which
classifies pixels
according to which model(s) they match is based on the
pixel's 15-bit
RGB value, but I'm not sure that that really means that
we don't need
the extra bits for deciding how to modify the model
properly based on
including the sampled pixels.
If 15-bit is good enough, then just having the option
to turn off
gamma on the display doesn't solve the problem. If
15-bit isn't good
enough, then this doesn't solve the problem because the
display
doesn't have enough bit depth to do what we need.
Unlike my original thought of having another buffer
somewhere, being
able to turn off gamma isn't going to have a limit of
a number of a
maximum number of pixels in the turn-gamma-off window.
Therefore it
would make sense to me to have an enable bit for
turning off gamma or
not, and be able to define a (top,left) and
(bottom,right) within
which it's turned off. If you want a small window you
can set it to
that. If you want to turn gamma off on the whole
screen you just set
it to (0,0), (height, width). I don't think
alternating frames would
be desirable, but if it were we could always alternate
the enable in
vblank interrupt like we currently do for seizure mode,
so I don't
think specific support for that operation mode would be
required.
From mail from Rich LeGrand, Jul 27, 2005 3:15 PM:
There are some constraints -- I haven't been able to
DMA video into anything
except video RAM (96K) or internal working ram (32K),
which is a bummer.
Some unknown portion of the internal working ram is
being used by the
stacks.
I should try to DMA into external working ram again --
I vaguely remember
being able to do this a long long time ago. This would
be ideal -- we could
then do all sorts of cool stuff off the screen with
captured video --
perhaps capture 24 bit video? (unlikely, but I'll try).
If we can't do this (which I suspect), we'll have to
come up with a
windowing scheme or alternating frames. Another idea
is to use Mode 2 and
use one of the back buffers for anti-gamma video. I'm
a little hesitant to
implement the anti-gamma window. This would add a
significant chunk of
logic in the path of timing critical logic (the FPGA is
filling up and
adding a chunk of logic can blow up the timing in a
nonlinear way.) Not
ruling it out, but I'd like to explore the other
options first.
From mail from Anne Wright, Jul 27, 2005 2:16 PM:
How about just a "turn off gamma altogether" control bit?