Proceedings of the 20th Annual Meeting of Particle Accelerator Society of Japan
August 29 - September 1, 2023, Funabashi

PASJ2023 TUP05

Aravis 及び macOS を使用した GigE カメラによるスクリーンモニタ
画像データ取得解析システムの開発
DEVELOPMENT OF GigE CAMERA IMAGE DATA ACQUISITION AND ANALYZINGSYSTEM FOR SCREEN MONITOR USING Aravis AND macOS柳田謙一 ∗,A,B) , 清道明男 A,B)
Kenichi Yanagida ∗,A,B) , Akio Kiyomichi A,B)
A)
Japan Synchrotron Radiation Research Institute (JASRI)
B)
National Institutes for Quantum Science and Technology (QST)

Abstract
A GigE (Gigabit Ethernet) camera image data acquisition and analyzing system was developed using Aravis and macOS tocreate a customized beam-size-measurement program with least resources. Major elements of the system are GigE cameras, acomputer running macOS, gnuplot software, Aravis and GLib libraries. Because Aravis and GLib enabled us to communicate
with camera and to obtain image data from camera, we only created image data processing, analyzing, displaying and saving
programs. Executable programs were written in C language and compiled, linked in macOS. The programs were initiallydeveloped by macOS 10.14 (Mojave) on Intel-based Mac in 2019, but now in 2023 they are also used by macOS 13 (Ventura)
on Arm-based Mac.
ンピュータ（PC）に直接繋いで、画像データを取り込む
手法を計画した。GigE カメラ画像データを直接 PC へ
SPring-8 サイト内、兵庫県立大学高度産業科学技術研 取り込む場合、カメラベンダーが配布するソフトウェ
究所 NewSUBARU 蓄積リングへ電子ビームを供給する アを使用するのが簡易であり、ビューアとして画像確
1GeV 線型加速器が 2020 年度に完成し [1]、それ以降、 認のみ行うか、API を使用してデータ転送後に PC で画
NewSUBARU 蓄積リングの入射器として運転されてい 像データ解析を行う事となる。カメラベンダーから配る。また、東北大学キャンパス内に建設中の NanoTerasu 布されるソフトウェアを使用する問題点は、使用可能
蓄積リングへ電子ビームを供給する 3GeV 線型加速器 なカメラが限定されたり、PC のオペレーティングシス
テム（OS）が限定（バージョンを含む）されたりするのコミッショニングも順調に進んでいる [2, 3]。
双方の線型加速器に使用される電子銃は規格化エ 為、画像システム構築の負担が大きな割りに、他へのミッタンスが 10mm·mrad 以下の新型低エミッタンス電 移植性が悪い事等である。
一方で macOS は UNIX 系の OS であり、Aravis も簡子銃である [4]。この新型電子銃の性能評価を行うた
易に導入出来る為、macOS 上の Aravis を活用し、リソー
め、2019 年度に SPring-8 サイト内マシン実験棟と呼ばス負担を最小にした、一時的・独立した実験環境で使れる建屋に於いて、NewSUBARU 線型加速器用の電子銃、238MHz 空洞及び 476MHz 空洞を含む電子入射部 用可能な、且つ移植性の高いスクリーンモニタ用の画が一時的に設置され、ビーム試験が行われた。エミッ 像データ取得・解析システムを構築した。
タンス測定にはスクリーンモニタ（SCM）を使用した
Q スキャン法を採用した為、カメラからの画像データ 2 . システム構成を取り込んで画像解析する必要が有った。
2.1 ハードウェア
マシン実験棟は SPring-8 加速器コンポーネント制御用の制御 LAN から切り離された、独立（孤立）した建屋 2.1.1 パーソナルコンピュータである。SPring-8 では 2018 年頃より Linux 上のオープ使用する PC は macOS が動作する Apple 製の Mac に
ンソースライブラリである Aravis [5] を使用して、様々 限られる。CPU は Intel 製若しくは ARM アーキテク
なカメラベンダーに対応した Gigabit Ethernet（GigE）カ チャのものとなる。今回開発したソフトウェアは並行
メラ制御システムを構築している [6–9]。しかしながら、 するスレッドをいくつも立ち上げる事が可能なため、当該制御システムは SPring-8 のデータベース（DB）を CPU やメモリ等のリソースが許す限り、カメラの台数ベースとしたデータ収集系と密に連携しているため、 を増やす事が可能である。
一時的且つ独立した実験環境で使用しようとした場合、複数の GigE カメラからのデータ取得にはカメラ台数
ハードウェア準備やセッティングの為のリソースが過 分の Ethernet 入出力ポートが必要となる。その場合、PC大となる。それ故、マシン実験棟に制御 LAN を引き込 標準で備わっている RJ45 コネクタ以外のポートを使用
み、SPring-8DB へ画像データを取り込むと云う確立さ する事となる。具体的には、USB3 若しくは Thunderbolt
れた既存カメラ制御システムを採用する事は困難と判 のポートをアダプタを介して Ethernet 入出力ポートと断し断念した。
して使用する事となる。Figure 1 は PC に 4 つの Ethernet
そこで、実機で使用する GigE カメラをパーソナルコ 入出力ポートを設け、4 台のカメラから画像データを取得する際の接続構成例である。
∗ ken@spring8.or.jp
IP ア ド レ ス は プ ラ イ ベ ー ト ア ド レ ス の

1.

はじめに

- 270 -

Proceedings of the 20th Annual Meeting of Particle Accelerator Society of Japan
August 29 - September 1, 2023, Funabashi

PASJ2023 TUP05

Camera 4
Camera 3
Camera 2
Camera 1
JAI
JAI
JAI
JAI
GO-2400M-PGE GO-2400M-PGE GO-2400M-PGE GO-2400M-PGE
192.168.40.41 192.168.30.31 192.168.20.21 192.168.10.11

VLAN Plus Switch
with PoE
NETGEARGS108PEている。電源はどちらのポートから供給しても良いが、本システムでは SPring-8 と同様に PoE 給電方式を採用した。

PoE インジェクターとしてのネットワークス
イッチ
Category 6A LAN Cable
カメラ電源として PoE 給電方式を採用した場合、PC（Mac）には PoE 給電対応の Ethernet ポートが存在せず、また一部機種を除き PCIe の Ethernet ボードも実装でき
Tunderbolt Port 2
192.168.40.7
Adapter
ない為、PC とカメラの間に PoE インジェクターを設け
Tunderbolt Port 1
192.168.30.7
PCる必要がある。本システムでは PoE インジェクターとAdapterApple
Mac Pro192.168.20.7
Ethernet Port 2
してネットワークスイッチの GS108PE（NETGEAR）を
Late 2013
GigE Port採用した。
192.168.10.7
Ethernet Port 1
GS108PE は合計 8 ポートを有しており、第 1 ポート
Figure 1: Hardware configuration of a GigE camera image から第 4 ポートまでが PoE に対応し、第 5 ポートから
data acquisition and analyzing system which uses four cam- 第 8 ポートまでが PoE 非対応である。さらに、GS108PE
eras.
はポートベースの Virtual LAN（VLAN）が付加されたレイヤー 2 スイッチであるため、Fig. 1 の様にポート毎の仮想的 LAN セグメントを 4 つ作り、カメラと PC の192.168.***.xxx を用い、設定は macOS システム（環境） ポートを 1 対 1 に対応させた。
2.1.3

GigE PoE Port

設定のネットワークパネルから手入力で行う（Fig. 2 参照）。注意として PC 側各ポートの IP アドレスは第 1 オ
クテット及び第 2 オクテットを 192.168 と共通とし、第3 オクテットを例えば 10, 20, 30 or 40 と云う様に異なる数字にして、サブネットマスクを 255.255.255.0 とする事でポート毎にサブネットを分け、特定のポートと特定のカメラを 1 対 1 で通信させる。

2.2

PC にインストールしたライブラリ・ソフトウェア

細々としたツールや設定に関する記述は省くが、本システムの動作に必要なライブラリ及びソフトウェアに就いて述べる。
Table 1 は現状で動作を確認した PC、ライブラリ及びソフトウェアのバージョンである。Aravis、GLib [11]及び gnuplot [12] の PC へのインストールはパッケージ
マネージャー Homebrew [13] を使用した。Aravis 及びGLib のライブラリに関して、Intel 製と ARM アーキテ
クチャ Mac では Homebrew によるライブラリの格納先が異なる為、インストール・リンク・実行時に正しいパスを指定する必要が有る。
Table 1: Versions of Softwares

Figure 2: Setting IP addresses with Network panel in System
Preferences of macOS.

2.1.2

GigE カメラ

GigE カメラはインターフェースとして、Ethernet 入出力ポートを有している必要があるが、Aravis を使うためには GenICam（Generic Interface for Camera）規格 [10] に準拠している必要がある。今回使用したのは SPring-8、SACLA、NewSUBARU 及び NanoTerasu で使用されている GO-2400M-PGE（JAI 製）である。他のカメラを使用する場合、GenICam 規格に準拠している GigE カメラ
であれば関数およびコマンドは本プログラムと共通となるが、ピクセル数設定（GO-2400M-PGE は 1936×1216ピクセル）を変更する必要がある。
GO-2400M-PGE は 入 出 力 ポ ー ト と し て Power over
Ethernet（PoE）用のポート（RJ45 コネクタ）及び電源・外部トリガ供給用のポート（丸形コネクタ）を有し

PC

macOS

GLib

Aravisgnuplot

Mac Pro 2019 (Intel)

13.5

2.76.40.8.275.4.8

Mac mini 2023 (Arm)

13.5

2.76.40.8.275.4.8

システムの動作に関して、セキュリティソフトウェ
アその他のプロセスが正常動作を妨げる可能性があるため、上記のインストールに関して、一旦 macOS を PCにクリーンインストールした後、これらのライブラリ・
ソフトウェアをインストールすることを勧める。
2.2.1 OSPC の OS として macOS を採用した。本システム開発
当初の OS は macOS 10.14（Mojave）であったが、現在は最新の macOS 13（Ventura）でも動作している。本シ
ステムのプログラムは C 言語で書かれ、macOS 標準のコンパイラでコンパイル及びリンクが行われ、実行形
式ファイルが作成される。
動作に必要なライブラリは全て動的ライブラリとなっている。すなわち、コンパイル・リンク時に参照先
フォルダ等の情報を保管し、実行時に結合するするタイプである。従って、使用する PC に全てのライブラリ- 271 -

Proceedings of the 20th Annual Meeting of Particle Accelerator Society of Japan
August 29 - September 1, 2023, Funabashi

PASJ2023 TUP05

等をインストールした後、コンパイル・リンクを行い、 してプログラム中で文字列を 1 行ずつ直接 gnuplot へ
本プログラムを実行すると云った手続きを踏む。
渡すか、一時的にディスクへ保存して gnuplot にディ
スクから読み込ませるかのどちらかである。現状では2.2.2 Aravis
Ramdisk を介してデータを渡す方法が一番速い。
GLib を介してカメラとの通信を行うライブラリであgnuplot での表示画素サイズは Full（1936×1216 ピクる。開発当初 Aravis のバージョンは 0.6 であったが、現 セル）、Half（968×608 ピクセル）及び Quarter（484×304
在は 0.8 である。バージョン 0.8 への変更で使用する関 ピクセル）とした。PC の処理能力によって表示画素数
数の引数が変化したため、作成したブロブラムの改修 を変える。
（引数の変更）を一度行った。
disp は Aravis の Web サイトに掲載されているサンプ
ルコード [15] をベースに、画像表示に必要なプロセス
2.2.3 GLibPC の Ethernet ポ ー ト を ハ ン ド リ ン グ す る GIO を付加して作成された。disp の画像データ取得スキー
ムは GigE Vision Streaming Protocol（GVSP）[16] に依っ（Gnome Input/Output）他を含むライブラリである。
ている。画像データはトリガに同期してカメラで取得
2.2.4 gnuplot
され、PC 側のリングバッファへプッシュされる。我々取得されたカメラ画像データを PC ディスプレイへ が行うべき処理（書くべきコード）はリングバッファか表示させる為に使用する。gnuplot の起動及び操作は ら画像データを取り出し、取得したデータを加工、表作成したプログラムの中でパイプを通し、gnuplot を呼 示、解析、保存する事である。
び出して実行させる。gnuplot での出力形式（Terminal
disp プログラム動作中、PC とカメラ間の通信はス
Type）は Qt [14] とした。Qt のライブラリは gnuplot を トリーミングプロセスのみとなる。disp 動作中（画像インストールする際に一緒にインストールされる。Qt データ表示中）にゲイン（感度）や露光時間が変更ででの表示は実行形式ファイルである gnuplot_qt が担う。 きないと不便なため、この二つのカメラパラメータに
開発当初、処理速度の考慮して直接 Qt で表示させる 限って disp 動作中でも変更可能な仕様とした。具体的ことを考えたが、gnuplot を試験し 1Hz 程度の画像更新 にはディスクにパラメータファイル（parameters.txt）をは可能だと判明し、gnuplot を使用した画像データ表示 置き、disp の周期タスク毎にパラメータファイル中のを採用した。若し恒久的なシステムを構築するのであ 数値を読み出す事とした。
れば、SPring-8 と同様 [8] に直接 Qt で表示させるのがパラメータファイル 1 及び 2 番目数値は disp の停止
良いと思われる。
及びデータ保存に関するパラメータである。1 番目数値
が 0 → 1 と変化した場合に disp を終了する手続きを進2.3 開発したプログラム
め、2 番目数値が 0 → 1 と変化した場合に画像データ保作成されたプログラムはターミナルを開き、コマン 存を行う。画像データ保存後に disp は 2 番目数値を元
ドライン入力を行なって実行する。Table 2 及び Fig. 3 に戻す（1 → 0）処理を行う。
は作成したプログラム一覧及びプログラムと画像・制
パラメータファイル 3 及び 4 番目数値はカメラゲイ
御データのやり取りを示すダイアグラムである。以下 ン及び露光時間に関するパラメータである。3 及び 4 番にそれらの機能に就いて述べる。
目数値が disp が保持している数値と異なった場合に、パラメータファイル数値をカメラへ転送する処理を行う。尚、カメラ設定値の変更は GVSP とは異なる GigE
Table 2: Developed Programs and Their Functions
Vision Control Protocol（GVCP）[16] を通じて行われる。
disp Process, display and save image data
さらに disp は取得した画像データや加工したデータ
stop Terminate disp program
をディスクへ保存する機能を持つ。disp は ROI（Regionacqui Save raw image data
gain Change gain value in cameraof Interest）が指定する二次元範囲内の発光強度を画面
expo Change exposure time value in cameraの水平軸方向と垂直軸方向に積算した一次元投影ファ
init Initialize parameters in camera
イルを作成し、ディスクへ保存する。投影形状のグラフ
internal_trig Make trigger mode internal in camera
external_trig Make trigger mode external in camera
表示や重心位置、重心位置からの標準偏差計算は prjh
prjh Display horizontally projected data
及び prjv が担う。
prjv
prjh_stop
prjv_stop

Display vertically projected data
Terminate prjh program
Terminate prjv program

2.3.2 stop, acquistop は disp を停止（Stop）させるために作成された。
2.3.1 disp
disp 立ち上げ時、パラメータファイル 1 番目数値は 0
disp は開発したプログラムの本体部分で、カメラか （＝周期タスク）に初期化される。stop は disp を終了しら取得したデータを gnuplot が読み出せるような形式へ たい時にパラメータファイル 1 番目数値を 1（＝停止）
変換し（含む縮小）、表示（Display）させたり、残すべ に書き換えるプログラムである。
acqui はストリーミングで得られた画像データを取きデータをディスク（HDD, SSD または Ramdisk）へ保得（Acquisition）し、ディスクへ保存するために作成さ存するプログラムである。
disp はパイプライン経由で gnuplot を起動し、gnuplot れた。acqui は画像データをディスクへ保存したい時にへデータを渡して表示させる。データを渡す方法は 2 パラメータファイル 2 番目数値を 1（＝保存実行）に書種類あり、gnuplot のインラインデータ入力機能を使用 き換えるプログラムである。

- 272 -

Proceedings of the 20th Annual Meeting of Particle Accelerator Society of Japan
August 29 - September 1, 2023, Funabashi

PASJ2023 TUP05

2D raw
image data

init program

DISPLAY

internal̲trig
programexternal̲trig
program
GVCP

PushVideo Stream (GVSP)CAMERA

Image
Data

gnuplot 2D image process

2D processed
image data

gnuplot 1D graph process

1D verticallyprojected data

prjv program

Parameter Filegnuplot 1D graph process

1D horizontally
projected data

prjh program

Parameter Filedisp program

Loop•terminate the program•data save•camera gain value transfer•camera exposure timevalue transfer•acquired data•processed data
2D imagevert. proj.
hor. proj.

PC

prjv̲stop
programprjh̲stop
programParameter File
•1st value•2nd value•3rd value•4th value

stop program
acqui program
gain program
expo program

DISK

Ring Buffer

Figure 3: Software diagram.

2.3.5 prjh, prjv
prjh は 表 示 画 面 の 水 平 軸、 prjv は 垂 直 軸 へ 投 影gain はカメラのゲイン（Gain）を変更する為に作成さ（Projection）された一次元輝度分布をディスク中のファれた。引数としてカメラが指定するゲイン値が整数値
イルから読み出して表示し、重心位置及び重心位置かで入力される。GO-2400M-PGE の場合、1〜200 の値がらの標準偏差を計算する為のプログラムである。
設定可能である。gain はパラメータファイル 3 番目数
値を希望するゲイン値に書き換えるプログラムである。 2.3.6 prjh_stop, prjv_stop
expo はカメラの露光時間（Exposure Time）を変更す
prjh_stop 及び prjv_stop は stop と同様な手法で prjh
る為に作成された。引数としてカメラが指定する露光 及び prjv を停止させるプログラムである。
時間値が整数値で入力される。GO-2400M-PGE の場合、露光時間の単位は 1µs で 38〜8,000,000（38µs〜8s）の 3 . システムの動作値が設定可能である。expo はパラメータファイル 4 番
Figure 4 は PC 画面のスクリーンショットである。右目数値を希望する露光時間値に書き換えるプログラム
上のターミナル（緑）で disp プログラム、右下のターである。
ミナル（ベージュ）で prjv プログラム、左下のターミ
ナル（黒）で prjh プログラムを起動している。右上側
2.3.4 init, internal_trig, external_trigにデータ受け渡し用の Ramdisk が生成されている。
init はカメラを初期化する（Initialize）為に作成された。GO-2400M-PGE の場合、停止状態から電源が入ると、約 50Hz の内部トリガ状態となる。その状態で dispを動作させるとプログラムがビジーとなり制御不能になるため、それを回避するための初期化を行うプログラムである。
internal_trig は外部トリガモードから内部トリガ（Internal Trigger）モードへ切り替える際に使用するプログラムである。同時に内部トリガのトリガレートをカメラへ転送する。
external_trig は内部ト リガモ ードか ら外部 ト リ ガ（External Trigger）モードへ切り替える際に使用するプログラムである。
Figure 4: A screenshot of PC display.
これら 3 つのプログラムはカメラと直接通信するものであり、disp が動作していない、すなわち通信が無負荷の状態で使用する。
prjh 及び prjv は輝度分布データをディスクから読み
2.3.3 gain %d, expo %d- 273 -

Proceedings of the 20th Annual Meeting of Particle Accelerator Society of Japan
August 29 - September 1, 2023, Funabashi

PASJ2023 TUP05

出し、重心位置及び重心位置からの標準偏差等をフィッティング（最小二乗法）で計算する。計算された数値
データは各ターミナルにてテキスト出力される。二次
元画像データ表示の左側及び下側に gnuplot のグラフ表
示があるが、黒線で描かれたグラフはディスクから読みこまれた輝度分布データを示しており、赤線で描かれたグラフはフィッティングの結果を表示したものである。
Figure 5 は 1 台の PC で 4 台のカメラから画像デー
タを取り込む試験を行った際の写真である。右上は 4
つの Ethernet 入出力ポートを取り付けられた PC（MacPro Late 2013）、左上はテーブルに置かれた 4 台の GigE
カメラ（GO-2400M-PGE）、左下は PoE インジェクタとして使用されるネットワークスイッチ（GS108PE）、右下が 4 つの画像データ表示中の PC 画面である。10 年
前の PC（4CPU·8 スレッド）ではあるが、4 つの Half
（968×608 ピクセル）画像データ表示を行っても 1Hz 程度の画像更新は問題なく行えている（但し、フッティ
ング等のプロセスは立ち上げてない）。

Figure 5: Examination of image data acquisition from fourcameras.
また、ARM アーキテクチャ CPU を搭載する PC（Macmini 2023）に於いても試験を行い、問題無く動作する
ことが確認された。

4.

まとめ

GigE カメラから画像データを取り込んで、解析するシステムを macOS 上で構築した。Aravis は GigE カメラから画像データ取得を行う関数を提供するのみであり、PC 画面表示やデータ解析その他の処理は各自がプ
ログラムを作成して行う事となる。
Apple 製 PC 及び macOS は毎年アップデートされ、システム・ライブラリ構成が大きく変化する場合がある。そのような場合でもタイムラグがあるが、最新のPC 及び macOS に対応した新バージョンのソフトウェ
ア（Aravis 等）がリリースされるので、その部分（新バージョン等）の修正を適宜行えば持続的に本システ
ムを使い続けられる。

参考文献[1] T. Inagaki et al., “Commissioning of The New 1.0 GeV
Electron Linac For NewSUBARU Storage Ring”,
Proc. of the 18th Annual Meeting of Particle Accel. Soc. of Japan, Online, Aug. 2021, pp. 102-105.
https://www.pasj.jp/web_publish/pasj2021/
proceedings/PDF/TUOB/TUOB03.pdf[2] T. Asaka et al., “Installation and Beam Commissioning of
3 GeV Linear Accelerator in NanoTerasu”, Proc. of the 20th
Annual Meeting of Particle Accel. Soc. of Japan, Funabashi,Aug. 2023, WEOA7, this meeting.
[3] T. Asaka et al., “Beam Performance of Injector System in
NanoTerasu”, Proc. of the 20th Annual Meeting of Particle
Accel. Soc. of Japan, Funabashi, Aug. 2023, THP49, thismeeting.
[4] T. Asaka et al., “Low-Emittance Radio-Frequency
Electron Gun Using a Gridded Thermionic Cathode”,
Phys. Rev. Accel. Beams 23, 063401, June 2020.
https://journals.aps.org/prab/abstract/10.
1103/PhysRevAccelBeams.23.063401[5] Aravis - A Vision Library for GenICam Based Cameras,
https://github.com/AravisProject/aravis[6] A. Kiyomichi and T. Fukui, “Decelopment of GigE Vision Camera Control for Upgrading Screen Monitor ofSPring-8/SACLA”, Proc. of the 16th Annual Meeting ofParticle Accel. Soc. of Japan, Kyoto, July 2019, pp. 873876. https://www.pasj.jp/web_publish/pasj2019/
proceedings/PDF/FRPH/FRPH005.pdf[7] A. Kiyomichi et al., “Application of GigE Vision Camera
to New Screen Monitor Control System for Beam Transport
from SACLA to SPring-8”, Proc. of the 17th Annual Meeting of Particle Accel. Soc. of Japan, Online, Sept. 2020,
pp. 731-734. https://www.pasj.jp/web_publish/pasj2020/proceedings/PDF/FRPP/FRPP24.pdf[8] A. Kiyomichi et al., “Application of GigE Vision Camera Control System for Screen Monitors of SACLABL1 (SCSS+) and NewSUBARU Injector Linac”,
Proc. of the 19th Annual Meeting of Particle Accel. Soc. of Japan, Online, Oct. 2022, pp. 535-539.
https://www.pasj.jp/web_publish/pasj2022/
proceedings/PDF/WEP0/WEP012.pdf[9] A. Kiyomichi et al., “Upgrade of GigE Vision Camera Control System and Applied to Screen Monitors of SACLA and
NanoTerasu”, Proc. of the 20th Annual Meeting of Particle
Accel. Soc. of Japan, Funabashi, Aug. 2023, WEP09, thismeeting.
[10] The Generic Interface for Cameras standard, https://www.emva.org/standards-technology/genicam[11] GLib Is a General-Purpose, Portable Utility Library, https://docs.gtk.org/glib[12] Gnuplot Is a Portable Command-Line Driven Graphing Utility for Linux, OS/2, MS Windows, OSX, VMS, and Many
Other Platforms, http://www.gnuplot.info[13] The Missing Package Manager for macOS (or Linux),
https://brew.sh/index[14] The Future of Digital Experiences, https://www.qt.io/[15] Aravis/arvexample.c,https://github.com/
AravisProject/aravis/blob/main/tests/
arvexample.c[16] Ethernet Protocol (GV), https://aravisproject.
github.io/docs/aravis-0.8/aravis-gv.html- 274 -