スーパーカミオカンデをインテリアにする3Dライブモニター

なぜこれを作ったのか

スーパーカミオカンデが素粒子を検出する様子をリアルタイムモニターで誰でも見ることができます。
https://www-sk.icrr.u-tokyo.ac.jp/realtimemonitor/

モニター画像は円柱の展開図で、10~20秒ごとに画像が更新されます。
(実際は1秒間に何回も検出をしていますが配信用にレートを落としています)

PCからブラウザでアクセスすればいつでも見れますが、こういう”ライブモノ”はPCを使わずにサイネージ表示のように常時表示させておくとステキです。それをかたちにしたいと考えました。

課題設定 これが解決したら面白い

  1. PCを使わずにスタンドアロンで表示させる
  2. 部屋に置けるインテリアにしたい
  3. 平面の展開図より3Dで表示したい
  4. 座標と数値のデータは配信されていないので、平面画像から読み出す必要がある
     4-1 しかも、平面画像のサイズが日によって変わるので、座標が一意的に定まらない

解決手段 試作の概要

ボードコンピュータ Raspberry Pi 4 と 5インチモニタの構成としました。ボードはモニタの裏に隠れるように固定できて見た目もスマートです。(1,2 の解決)

開発言語はPython。Windows + VSCodeで開発しRaspberry Piに移植しました。

画像からPMTの座標とカラー情報を抽出できれば、3D表示はmatplotlibで実施できます。(3)
座標系は直径=1、高さ=1の円筒を設定して、
側面エリアはxをθに変換して円筒座標系に変換しました。
天井と底面エリアはz=1, z=0 の平面に配置しました。

配信された画像(skev.gif)をImageJで手動作業で座標を全部抽出してリスト化しました。面倒ですが1度きりの作業です。
10~20秒ごとに画像を取得して、リストに記載された座標のカラーを読み取って3D表示を実現できました。(4)

ところが、数日するとプロットが一部表示されなくなってしまいました。数日ごとに配信画像サイズが、1691×975、1706×1001、1665×981、、、と変わっていくのです(これは一体!?)

不規則な変化で座標位置が定まらないため一意的な座標リストは役に立ちません。
そこで、プログラムの冒頭で opencv-python ライブラリを用いて、画像認識してPMT座標を抽出してリストを作るというモジュールを追加することで対応しました。
計測範囲を定めて(下図緑線)、particleの重心位置を抽出、光っていない座標もunique算出で、その都度csvリストを作るという結構ややこしい対応をしました。(4-1)

開発品

1日中見ていられる5インチのスーパーカミオカンデ3Dライブモニターが完成しました。
あ、ニュートリノ、、、いや今のはミューオンでした。

関連リンク