自宅内の見守りカメラをアップデートした:②お試し動作で課題にぶつかった編


はじめに

本記事はこちらのパート②にあたります。
もし内容に興味を持たれましたら、他のパートもご覧頂けると幸いです。(順次執筆中…)

要約

  • 前回(ハードウェア準備編)、ついに念願のRasberryPiを使って見守りカメラを起動に成功!
  • しかし課題が発覚。さてどうしよう
  • 改修ポイントを整理してみよう。

何が課題だったか

カメラ画像を取得しきれない時がある

数秒に一度画像を取得する仕様としたのですが、時折画像がブラックアウトしたり、画角の一部だけが引き延ばされたような画像が取得されることがありました。
Python3のOpencv-pythonライブラリを使ってカメラ映像のキャプチャを行っていたのですが、その動作が所望の更新間隔内で収まっていないのかもしれません。
試しにノートPC上でシステムを稼働させた際は現象を再現しなかったため、ハードウェア要因→パフォーマンスの問題だと考えました。
(要因検証をこれ以上深くは行いませんでした)

HTTPサーバーの応答が遅い

システム構成としては、ラズパイ上でHTTPサーバーを稼働させ、手持ちのスマートフォン等からアクセスすることで、カメラ画像を閲覧する仕様にしたのですが、スマートフォンからアクセスした際に、ページが読み込まれるまでのレスポンスが異常に遅いです。(10秒~20秒程度)

こちらも試しにノートPC上でシステムを稼働させた際は現象を再現しなかったため、ハードウェア要因→パフォーマンスの問題だと考えました。
現状はカメラから静止画を取得するためだけにOpenCVを使ったりしているので、改善ポイントは多々あるだろうな…とは思いつつ、うわぁ、そこに手を付けないかんのか…という気持ちになりました

画像の明るさが不適切

2つの問題がありました。

  • 画像を取得するたびに明るさやホワイトバランスが再調整されるため、無駄に毎フレーム間の画像の変化が多い。結果的に、本当に着目したい子どもの動きが見づらい。
  • 画像の更新レートを固定(1秒)にしているが、特に暗い場合、その時間では明るさやホワイトバランス調整が適切に終わらず、暗い画像しか取れない。(例えば同じ環境でラズパイの標準コマンドであるraspistillを使って静止画を取得すると、明るさが適切な画像が取得できた)

前者に対しては画像取得設定の固定化(都度キャリブレーションをしない)、後者に対してはキャリブレーションモードの実装という手段で乗り切れそうです。

おわりに:課題と対応手段のまとめ

項目 対応
パフォーマンス改善 やりたいのは静止画の取得とHTTPサーバだけなので、ミニマム仕様で実装する
画像の明るさ適当化 画像取得設定の固定化と、キャリブレーションモードの実装

前者についてはもはや一から作り直しです…!
どうせ作り直すなら、新しい学びが得られるように勉強中の別言語で作っちまうか…?と考えた私は、Go言語によるリファインを心に決めたのでした(つづく)。