Frequently Asked Questions
How to use ImageBuffer mode.
#5400-0437 Version 1.0.1.1

Information contained in this document is subject to change without prior notice.

FAQ: How to use ImageBuffer mode.
Document in Japanese
このドキュメントは ImageBuffer モードを使用して画像を取得する方法について記述したドキュメントです。日本語ドキュメントは英語ドキュメントの後にあります。
End of document in JapaneseThis document shows how to acquire images from camera using ImageBuffer mode.

1. What is ImageBuffer mode?
ImageBuffer mode is a kind of image acquisition mode implemented in cameras. In ImageBuffermode, camera temporary stores acquired images in image buffer on the camera without sending
them to PC. Application in PC can read out images in camera image buffer in arbitrary timing.
In ImageBuffer mode, it is possible to start exposure of the next frame without waiting completion oftransferring current image data to PC.
When application is running on a PC whose CPU is not powerful, application can read out images
stored in camera image buffer and process them at its own timing. When application processes highload image processing, application can read out images stored in camera image buffer and process
them at its own timing, too.
When using SequentialShutter, BulkTrigger (TriggerSequence6), and ImageBuffer features together,application can store multiple images in camera image buffer by sending one trigger signal.

2. Camera registers relating to ImageBuffer mode.
The following table shows camera registers relation ImageBuffer mode.
Register nameImageBufferMode0x20307C

Description
Enables / disables ImageBuffer mode.
1: On (Enabled), 0: Off (Disabled).

ImageBufferFrameCount
0x20309C

Number of frames currently kept in camera frame buffer.
This register is read-only register.

ImageBufferFrameCountMax
0x203098

The maximum frame count that camera can store in its framebuffer.
This register is read-only register.

AcquisitionCommand0x20303C

Command register for image acquisition.
Value
nam e
Des c r i pt i o n0 Abort
Stops image acquisition immediately.
1 StopStops image acquisition after
completed transferring current frame.
8 Continuous
Starts image acquisition.
9 MultiFrame
Starts image acquisition.
Acquisition stops when acquired frame
count reached to theAcqusitionFrameCount register value.
10 ImageBufferRea Starts transferring images in cameradimage buffer.
Number of frames sent from camera for an ImageBufferReadcommand.

RegMapBU::ADR_ACQ_IMGBUF_MODE_I
RegMapBU::ADR_ACQ_IMGBUF_FRM_COUNT_I

RegMapBU::ADR_ACQ_ACQUISITION_INT32B+ RegMapBU:: OFS_FCSR_INT32_MAX_I

RegMapBU::ADR_ACQ_ACQUISITION_I

AcquisitionFrameCount0x200309C
RegMapBU::ADR_ACQ_ACQUIS_FRM_COUNT_I.

2#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.
The following tables show functions, methods, and node name for accessing registers in the abovetable.
<Camera streaming functions, Controlling camera feature functions> (native C++)
Camera streaming functions
Target register
Remarks
Controlling camera feature functions
GetCamImageBufferMode()
ImageBufferMode
SetCamImageBufferMode()
GetCamImageBufferFrameCount() ImageBufferFrameCount
GetCamAcquisitionFrameCount()
AcquisitionFrameCount
SetCamAcquisitionFrameCount()
ImageBufferFrameCountMax
Strm_Start()
AcquisitionCommand
Strm_Stop()
ExecuteCamImageBufferRead()

Use Cam_ReadReg() to read register value.
Writes Continuous value in default.
Application can write MultiFrame, orImageBufferRead value, too.
Writes Stop.
Writes ImageBufferRead.

<CameraStream class, CameraControl class> (.NET framework)
Methods

Target register

CameraControl.
GetImageBufferMode()
CameraControl.
SetImageBufferMode()
CameraControl.
GetAcquisitionFrameCount()
CameraControl.
GetAcquisitionFrameCount()
CameraControl.
SetAcquisitionFrameCount()

ImageBufferMode

CameraStream.Start()

AcquisitionCommand

Remarks

ImageBufferFrameCount
AcquisitionFrameCount

ImageBufferFrameCountMax

CameraStream.Stop()
CameraControl.
ExecuteImageBufferRead()

Use CameraDevice.ReadRegister() to readregister value.
Writes Continuous, MultiFrame, orImageBufferRead.
Default value is Continuous.
Writes Stop.
Writes ImageBufferRead.

<GenICam functions and methods>
Node name

Node type

Enumeration value“ImageBufferMode”
Enumeration“On”( XmlFeatures::XF_ID_IMAGEBUFFER_MODE)“Off”“ImageBufferFrameCount”
Integer( XmlFeatures::
XF_ID_IMAGEBUFFER_FRAMECOUNT)“ImageBufferFrameCountMax”
Integer( XmlFeatures::
XF_ID_IMAGEBUFFER_FRAMECOUNT_MAX)“AcquisitionFrameCount”
Integer( XmlFeatures::XF_ID_ACQ_FRAME_COUNT)“ImageBufferRead”
Command( XmlFeatures::XF_ID_IMAGEBUFFER_READ)“AcquisitionMode”
Enumeration “Continuous”( XmlFeatures::XF_ID_ACQ_MODE)“MultiFrame”“ImageBufferRead”“AcquisitionStart”
Command( XmlFeatures::XF_ID_ACQ_START)

3

Target register

ImageBufferMode

ImageBufferFrameCount
ImageBufferFrameCountMax
AcquisitionFrameCount
AcquisitionCommand
Writes ImageBufferRead.
AcquisitionCommand
AcquisitionCommand
Writes AcquisitionMode node value.

#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.
Node name

Node type“AcquisitionStop”( XmlFeatures::XF_ID_ACQ_STOP)“AcquisitionAbort”( XmlFeatures::XF_ID_ACQ_ABORT)

Command

Enumeration value

Command

Target register

AcquisitionCommand
Writes Stop
AcquisitionCommand
Writes Abort.

3. Image acquisition in ImageBuffer mode.
ImageBuffer mode is usually used with random trigger shutter mode.

3.1. Sequence of acquiring 3 images in ImageBuffer mode.
The following figure shows sequence of acquiring 3 images in ImageBuffer mode.
CameraExposure
Data transfer
Image buffer

StartsReading out

Trigger Trigger Trigger

Check
imagecountSets
Startsparameters acquisition

Transfer
image#1

Application

Sets parameters-Sets TriggerMode On-Sets TriggerSource-Sets TriggerSequence-Sets ImageBufferMode On-(Sets AcquisitionFrameCount)Starts acquisition-Opens stream-Starts stream

Transfer
image#2

Transfer
image
#3

Stops
acquisition

Stops acquisition
Checks stored
image count

GetCamImageBufferFrameCount()

Starts Reading out-(Sets AcquisitionFrameCount)-ExecuteCamImageBufferReadd()-Stops stream-Closes stream
RaisesRaisesRaisesImageAcquired ImageAcquired ImageAcquired
EventEvent
Event(TeliCamAPI) (TeliCamAPI) (TeliCamAPI)
Receiving Receiving Receiving
ImageImageImage
#3
#1
#2

The image acquisition sequence is almost same as normal mode image acquisition sequence except thefollowing points.

ImageBufferMode value is set to On.

On sending streaming start command (Strm_Start() function or CameraStream.Start() method)
to the camera, camera will start saving acquired images to its internal image buffer instead ofsending acquired images to the application.

The camera will start sending images in its internal image buffer on sending ImageBufferReadcommand.

The camera will send multiple images for one ImageBufferRead command. Application can set
number of images to send by writing the number to AcquisitionFrameCount register.

4#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.

3.2. Sent ImageBufferRead during buffer does not have enough images.
If image count in camera image buffer was less than AcquisitionFrameCount register value at thetiming that application sent ImageBufferRead command, camera will send images in image buffer
immediately, then send the rest images as soon as they are stored in camera image buffer.
The following figure shows sequence of acquiring 3 images in ImageBuffer mode.
CameraExposure
Data transfer
Image buffer

Trigger Trigger

Setsparameters

Startsacquisition

Application

Sets parameters-Sets TriggerMode On-Sets TriggerSource-Sets TriggerSequence-Sets ImageBufferMode On-(Sets AcquisitionFrameCount)Starts acquisition-Opens stream-Starts stream

TriggerStarts Transfer Transfer
image
Reading image#1#2outTransfer
image
#3

RaisesRaisesRaisesImageAcquiredImageAcquired ImageAcquired
Event
Event
Event
(TeliCamAPI) (TeliCamAPI) (TeliCamAPI)
Receiving Receiving
Image
Image
#1
#2

Stops
acquisition

Stops acquisition-Stops stream-Closes stream

Receiving
Image#3

Starts Reading out-(Sets AcquisitionFrameCount)-ExecuteCamImageBufferRead()5#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.

3.3. Sent ImageBufferRead during buffer has no images.
If no images are stored in camera image buffer at the timing that application sent ImageBufferRead
command, camera will accept ImageBufferRead command and send images as soon as they are
stored in camera image buffer.
The following figure shows sequence of acquiring 3 images in ImageBuffer mode.
CameraExposure
Data transfer
Image buffer

Trigger Trigger

TriggerStartsacquisitionSets
parameters

StartsReadingout

Application

Sets parameters-Sets TriggerMode On-Sets TriggerSource-Sets TriggerSequence-Sets ImageBufferMode On-(Sets AcquisitionFrameCount)Starts acquisition-Opens stream-Starts stream

Transferimage#1

Transfer
image#2

Transfer
image#3

RaisesRaisesImageAcquired ImageAcquired
Event
Event(TeliCamAPI) (TeliCamAPI)

RaisesImageAcquired
Event(TeliCamAPI)

ReceivingImage#1

ReceivingImage#3

Receiving
Image
#2

Stops
acquisition

Stops acquisition-Stops stream-Closes stream

Starts Reading out-(Sets AcquisitionFrameCount)-ExecuteCamImageBufferRead()

3.4. Sent ImageBufferRead command during executing ImageBufferRead.
Camera will accept ImageBufferRead command (ExecuteCamImageBufferRead() function or
CameraControl.ExecuteImageBufferRead() method) even if no images are stored in its internal
image buffer, during the camera is executing image acquisition in ImageBuffer mode and the camera
is not executing ImageBufferRead command.
Note that if application sends ImageBufferRead command to a camera during the camera is
executing ImageBufferRead command (sending images to host application), the camera does not
accept the additional ImageBufferRead command even though the ImageBufferRead command
retuns success status.

6#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.
Document in Japanese

1. ImageBuffer モードとはImageBuffer モードはカメラの撮像モードのひとつです。カメラで撮像した画像は PC へ転送することなくカメラ内のイメージバッファに保存されていきます。PC 上のアプリはカメラ内のイメージバッファに保存されている画像を任意のタイミングで読み出すことができます。
ImageBuffer モードを使用すると、PC への画像転送完了を待つことなく次のフレームの露光を開始できるので、非力な CPU が搭載された PC を使用している場合でもカメラ本来のフレームレートで、数枚の画像を撮影し、PC の処理速度にあわせてカメラ内のイメージバッファに保存されている画像をゆっくり読み出すことができます。処理負荷が高い画像処理を行う場合も同様です。
SequentialShutter と BulkTrigger(TriggerSequence6)を ImageBuffer と併用すると、トリガー信号を１回送るだけで、撮像条件を変えた複数枚の画像をカメラのイメージバッファに高速に保存してから、アプリケーションの処理速度にあわせたタイミングで画像を読み出すことも可能になります。

2. ImageBuffer モードに関連するカメラレジスタ
ImageBuffer モードに関連するカメラレジスタは以下の表のとおりです。
レジスタ名
ImageBufferMode0x20307C

ImageBufferFrameCount
0x20309C

内容
ImageBuffer モードの有効無効を設定するレジスタです。
値が１のとき ImageBuffer モード有効、０のとき無効になります。
カメラ内のイメージバッファに現在保存されているフレーム数が読み出しできます。

ImageBufferFrameCountMax
0x203098

カメラ内のイメージバッファに保存可能な最大フレーム数が読み出しできます。

AcquisitionCommand
0x20303C

撮像コマンドレジスタです。このレジスタは撮像開始、停止などを指示するレジスタで、通常の撮像にも使用します。
以下の値が設定できます。
値
名 称
内 容
0 Abort
撮像を即座に終了します。
1 Stop
処理中の画像の転送を完了させてから撮像を終了します。
8 Continuous
Stop または Abort が書き込まれるまで撮像を行います。
9 MultiFrame
AcqusitionFrameCount レジス
タに設定された枚数の撮像が完了するまで撮像を行います。
10 ImageBufferRead カメラ内イメージバッファの画像の転送を開始します。

AcquisitionFrameCount0x200309C
RegMapBU::ADR_ACQ_ACQUIS_FRM_COUNT_I

1 回の ImageBufferRead コマンド送信でカメラから送信される画像のフレーム数を設定するレジスタです。

RegMapBU::ADR_ACQ_IMGBUF_MODE_I

RegMapBU::ADR_ACQ_IMGBUF_FRM_COUNT_I

RegMapBU::ADR_ACQ_ACQUISITION_INT32B+ RegMapBU:: OFS_FCSR_INT32_MAX_I

RegMapBU::ADR_ACQ_ACQUISITION_I

7#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.
TeliCamSDK のカメラ制御関数、GenICam 関数では以下の関数で上記レジスタの読み書きを行うことができます。
【カメラストリーム関数、カメラ制御関数】(native C++)
カメラストリーム関数
読み書き対象レジスタ
カメラ制御関数
GetCamImageBufferMode()
ImageBufferMode
SetCamImageBufferMode()
GetCamImageBufferFrameCount() ImageBufferFrameCount
GetCamAcquisitionFrameCount()
SetCamAcquisitionFrameCount()

Strm_Start()
Strm_Stop()
ExecuteCamImageBufferRead()

備考

AcquisitionFrameCount

ImageBufferFrameCountMax Cam_ReadReg()で読み込み可。
AcquisitionCommand
Continuous を書込。
Stop を書込。
ImageBufferRead を書込。

【CameraStream クラス、CameraControl クラス】(.NET framework)
メソッド
読み書き対象レジスタ
備考
CameraControl.
ImageBufferMode
GetImageBufferMode()
CameraControl.
SetImageBufferMode()
CameraControl.
ImageBufferFrameCount
GetImageBufferFrameCount()
CameraControl.
AcquisitionFrameCount
GetAcquisitionFrameCount()
CameraControl.
SetAcquisitionFrameCount()
ImageBufferFrameCountMax CameraDevice.ReadRegister()
メソッドで読み込み可。
CameraStream.Start()
AcquisitionCommand
Continuous を書込。
CameraStream.Stop()
Stop を書込。
CameraControl.
ImageBufferRead を書込。
ExecuteImageBufferRead()【GenICam 関数】
ノード名

Enum 値

ノード型“ImageBufferMode”
Enumeration“On”( XmlFeatures::XF_ID_IMAGEBUFFER_MODE)“Off”“ImageBufferFrameCount”
Integer( XmlFeatures::XF_ID_IMAGEBUFFER_FRAMECOUNT)“ImageBufferFrameCountMax”
Integer( XmlFeatures::XF_ID_IMAGEBUFFER_FRAMECOUNT_MAX)“AcquisitionFrameCount”
Integer( XmlFeatures::XF_ID_ACQ_FRAME_COUNT)“ImageBufferRead”
Command( XmlFeatures::XF_ID_IMAGEBUFFER_READ)“AcquisitionMode”
Enumeration “Continuous”( XmlFeatures::XF_ID_ACQ_MODE)“MultiFrame”“ImageBufferRead”“AcquisitionStart”
Command( XmlFeatures::XF_ID_ACQ_START)“AcquisitionStop”
Command( XmlFeatures::XF_ID_ACQ_STOP)“AcquisitionAbort”
Command( XmlFeatures::XF_ID_ACQ_ABORT)

8

読み書き対象レジスタ
ImageBufferMode
ImageBufferFrameCount
ImageBufferFrameCountMax
AcquisitionFrameCount
AcquisitionCommand
ImageBufferRead 値を書込。
AcquisitionCommand
AcquisitionCommand
AcquisitionMode ノード値を書込。.
AcquisitionCommand
Stop 値を書込。
AcquisitionCommand
Abort 値を書込。.

#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.

3. ImageBuffer モードでの撮像手順
ImageBuffer モードは通常ランダムトリガーシャッターモードで使用されます。

3.1. ImageBuffer モードで 3 枚撮像する場合の処理の流れ
下図に画像を３枚ずつ取得するときの大まかな撮像の流れを記載します。
カメラ

露光
イメージバッファへの画像データ転送
イメージバッファ

画像読出
開始指示
画像#1 画像#2 画像#3
蓄積枚数
転送
転送
転送
確認

トリガー トリガー トリガー
撮像条件 撮像開始
指示
設定
アプリケーション
撮像条件設定・TriggerMode オン
・TriggerSource 設定
・TriggerSequence 設定
・ImageBufferMode オン・(AcquisitionFrameCount 設定)（蓄積枚数確認）

GetCamImageBufferFrameCount()

撮像終了
指示

画像受信完了 画像受信完了 画像受信完了
イベント発生 イベント発生 イベント発生(TeliCamAPI) (TeliCamAPI) (TeliCamAPI)

撮像終了指示・ストリーム停止・ストリームクローズ

画像読出開始指示
撮像開始指示・ストリームオープン ・(AcquisitionFrameCount 設定)
・ストリームスタート ・ExecuteCamImageBufferRead()

画像受信 画像受信 画像受信
処理#3
処理#2
処理#1

ImageBuffer モードの画像取得処理は以下の点以外は通常の画像取得処理と同じです。
・ImageBufferMode レジスタの値が On になっている。
・ストリームスタートコマンド（Strm_Start()関数または CameraStream.Start()メソッドでカメラは撮像を開始するが、撮像した画像は PC へは転送されず、カメラ内のイメージバッファに保存される。
・ImageBufferRead コマンドをカメラに送るとカメラのイメージバッファ内の画像が PC に送信開始される。
・１回の ImageBufferRead コマンド送信に対し、AcquisitionFrameCount レジスタに設定した枚数の画像が送信される。

9#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.

3.2. バッファ画像数不足時に ImageBufferRead を送信したとき
AcquisitionFrameCount レジスタに設定されている枚数に満たない画像しかカメラのイメージバッ
ファに蓄積されていないときに ImageBufferRead コマンドを送信すると、カメラはイメージバッファにある画像を全て PC へ転送し、その後は不足している枚数の画像を送り終えるまでイメージバッフ
ァに画像が保存され次第 PC へ転送を行います。
以下に３枚画像を送信するときの例を記載します。

カメラ

蓄積済み画像を転送

露光

不足画像は取得し次第転送

イメージバッファ

Trigger
撮像条件
設定

撮像開始
指示

アプリケーション
撮像条件設定・TriggerMode オン
・TriggerSource 設定
・TriggerSequence 設定
・ImageBufferMode オン・(AcquisitionFrameCount 設定)

Trigger
画像読出開始指示

Trigger
画像#1
転送

画像#2
転送

画像#3転送画像受信完了 画像受信完了
イベント発生 イベント発生

画像受信完了
イベント発生画像受信 画像受信

画像受信

処理#2

処理#3

(TeliCamAPI) (TeliCamAPI)

処理#1

画像読出開始指示
撮像開始指示・ストリームオープン ・(AcquisitionFrameCount 設定)
・ストリームスタート ・ExecuteCamImageBufferRead()

10

撮像終了
指示

(TeliCamAPI)

撮像終了指示・ストリーム停止
・ストリームクローズ#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.

3.3. バッファが空のときに ImageBufferRead を送信したとき撮像開始指示後カメラのイメージバッファに画像が全く蓄積されていないときに ImageBufferRead
コマンドを送信すると、カメラはコマンドを受理し、指定された枚数の画像を送り終えるまでイメージバッファに画像が保存され次第 PC へ転送を行います。
以下に３枚画像を送信するときの例を記載します。
ImageBufferRead
コマンドは受理
カメラ

画像は取得し次第転送

露光
イメージバッファ

撮像開始
指示
撮像条件
設定
アプリケーション
撮像条件設定・TriggerMode オン
・TriggerSource 設定
・TriggerSequence 設定
・ImageBufferMode オン・(AcquisitionFrameCount 設定)

Trigger

画像読出
開始指示

Trigger
画像#1
転送

Trigger
画像#2
転送

画像#3
転送

画像受信完了 画像受信完了
イベント発生 イベント発生

画像受信完了
イベント発生画像受信 画像受信

画像受信

処理#2

処理#3

(TeliCamAPI) (TeliCamAPI)

処理#1

画像読出開始指示
撮像開始指示・ストリームオープン ・(AcquisitionFrameCount 設定)
・ストリームスタート ・ExecuteCamImageBufferRead()

撮像終了
指示

(TeliCamAPI)

撮像終了指示・ストリーム停止
・ストリームクローズ

3.4. ImageBufferRead 実行中に ImageBufferRead コマンドを再送信したとき
ImageBuffer モードで撮像中のカメラは、ImageBufferRead 動作（ホストアプリケーションへの画像転送動作。バッファ内の画像数が不足しているときの画像取得待ち機関を含む）実行中以外の機関であれば、バッファ内に画像が保存されていないときでも ImageBufferRead コマンドを受け付けます。
ImageBufferRead コマンド（CameraStream.ExecuteImageBufferRead()または ExecuteCamImageBufferRead()）
送信後、カメラが指定枚数の画像を PC に転送し終えるまでの期間に別の ImageBufferRead コマンドを 送 る と 、 ImageBufferRead コ マ ン ド は 正 常 終 了 の ス テ ー タ ス を 返 し ま す が 、 カ メ ラ はImageBufferRead コマンドを受け付けませんのでご注意ください。
End of document in Japanese11#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp

FAQ: How to use ImageBuffer mode.

4. Others
4.1. Revision History
Date
2016/05/24
2018/11/9

Version
1.0.0
1.0.1

Description
Created the initial version
Revised capter 1

4.2. Disclaimer
The disclaimer of this document including example code is described in “License Agreement
TeliCamSDK Eng.pdf” in TeliCamSDK installation folder.
Make sure to read this Agreement carefully before using it.
Refer to TeliCamSDK installation folder/Documents/License folder12#5400-0437

Copyright © 2016-2018 TOSHIBA TELI CORPORATION, All rights reserved. www.toshiba-teli.co.jp