Re: [micro-manager-general] How does micromanager set up buffer and display images in live mode
Status: Beta
Brought to you by:
nicost
|
From: Mark T. <mar...@gm...> - 2014-07-15 21:08:55
|
Hi soljiang,
On Mon, Jul 14, 2014 at 07:17:26PM -0700, soljiang wrote:
> Hi, I'm trying to program a Qimaing Rolera Bolt camera. I'd like to learn
> how to set up buffer and queue images to make acquisition faster. When I
> click Live mode in micromanager, I can get ~30fps acquisition rate, but when
> I programmed that camera in C, I used grab frame one at a time function in
> API from Qimaing, and I can only get 2fps rate. I wonder if such buffer
> management is in the MM core, or are they device specific and programmed in
> adapters? If it's in the MM core, are there open source functions that I
> can look up? Thank you very much!
I don't know if buffering alone is the reason for the speed difference;
you might want to look at the implementations of sequence acquisition
(as opposed to snap) in the device adapter.
As for buffering, MMCore has a circular buffer that temporarily holds
images, allowing the device adapters to quickly hand off the image and
continue with the acquisition. This allows continuous acquisition to
work even if there is some jitter in the latency with which the
application processes the acquired image (in the long run, of course,
the application must retrieve the images with sufficient throughput in
order to prevent the buffer from overflowing).
The size of the buffer can be set in Tools > Options (Sequence buffer
size), and in the current nightly builds there is a Sequence Buffer
Monitor plugin that you can use to see how the buffer is utilized during
an acquisition.
The code for the circular buffer is in MMCore/CircularBuffer.{h,cpp}.
Best,
Mark
--
Mark Tsuchida
Micro-Manager Team (UCSF Vale Lab)
|