ランダムなOLOAのボッチャソフトボール

先週AmazonでOLOAのソフトボール、赤・青単品を購入しました。安くて使いやすいソフトボールを探していましたが、予想外の商品が届きました。

本革と人工皮革

基本、ボッチャボールは同じ材質、同じ硬さを赤・青対で購入すると思います。

OLOAのソフトボールを注文すると、材質と硬さが違うものが届きました。

青いボールは本革、おそらく羊。
赤いボールは日本製(帝人コードレ製)の人工皮革を使っているようです。

赤の方は「Soft」と印字されていますが、ガチガチの硬さでした。

上の写真のように青と赤のボールを強くぶつけてみると、青はへこみ、赤はいっさい変形しません。赤の方はスーパーハードくらいの硬さです。

改めてAmazonのOLOAのソフトボール単品を見直してみると、注文フォームが変わっていました。(2022/1/12現在)

素材と硬さを選択できるになっています。

【帝人コードレ製(高級人工皮革)】ソフト
【帝人コードレ製(高級人工皮革)】ミディアム
【羊の本革製(レザー)】ミディアム

少なくとも素材はランダムではなく、選べるように改善されました。

ただ、私に届いた青ボールは、羊の本革製ソフトと思われるので、同じものは注文できないようです。

ボール性能は値段相応

手元にあるOLOAボールの重さを測ってみます。

青が274g、赤が276gで、規格的には問題ありません。

どちらもきれいな球形にするのが難しく、直進させることは困難です。当たり前ですが、ビクトリーやハンディライフと比べると、性能は劣ります。

1つ2,200円という値段で、ボッチャボールとしては格安なので、性能も値段相応にはなってしまいます。

安いボールで本革は珍しいので、新たな肌触りを体験できたことについては価値を感じます。

ボールの解説が勉強になる日本ボッチャ選手権

第23回日本ボッチャ選手権大会がYouTubeで配信されました。1日目2日目あわせて17時間の動画。面白くて見てしまいました。特に村上監督のボールの解説が勉強になります。

ボッチャボールの解説があると面白い

日本ボッチャ選手権大会の配信で各選手の持ち球について詳しい解説がありました。個人的にボールの話は好きで、興味深かったです。

杉村選手はミックス。型押し(合皮)、牛皮、羊皮など様々なボールを使い分け、廣瀬選手はビクトリーの羊皮ソフトに統一。

廣瀬選手のパワーボールは、ソフトボールで繰り出していたのですね。

パワーがあり、ソフトで「プッシュ」「ヒット」ができるなら、確かに統一球が良いと思えました。6球オールマイティに使えます。

ランプはハードボールを使うタイミング

ボールの解説で、より面白かったのがBC3の試合です。

どのタイミングで自分のハードボールを使うか、相手に使わせるかなど、ボールの解説があると、戦術の面白さが倍増します。

今まで、BC3の観戦は退屈になりやすい印象がありました。

投球精度が高すぎて、成功するかどうかのドキドキがない。
「ロビング」「バウンド」といった三次元の戦いが見られない。
ランプを使うと一投までの時間が長い。

しかし、今回はランプを使った制約が、逆に楽しさを増すメリットにもなると感じました。

転がすしかできないので、同じ硬さの統一球というわけにはいきません。

事前に用意するボールの硬さの配分から、投球で使う順番といった、制約から生まれる楽しさに気づかされました。

村上監督の解説が非常に良かったです。

JavaScriptとcanvasで自動色域調整

JavaScriptとcanvasのみで、特定の色域のボールを抽出するWebアプリを作っています。前回、手動で色域調整していたものを、自動調整できるように改修します。コードはデモサイトをご確認ください。

色抽出のための色域自動調整

赤いボールを抽出する場合、影などの暗い部分を誤って抽出してしまいます。

ボール以外で不要な部分の抽出がなくなるまで、自動で色域許容範囲を絞るようにしました。

抽出できない画像の対処

やたらと赤黒いボール(アポワテック・コネクト)の場合、識別が難しくなります。赤の彩度が低く、赤と識別しにくくなるからです。

影の部分がなくなるまで色域許容範囲を絞ると、ボールが欠けてしまいました。

この場合はボールが欠ける直前の抽出に戻すことにします。(このあたりの処理については、利用目的によって変わると思います。)

様々な状況でテスト

過去に撮ったボール画像を使って、色域自動調整がうまく機能するか試します。

野外の緑コートで赤ボール抽出

緑のコートで赤いボールは識別しやすいです。

野外だったため、イチョウの葉が少し入っていましたが、黄色は認識されません。モミジだと認識されてしまいます。

少し反射する黒床で赤ボール抽出

黒い床に、赤いボールが少し反射している状態で抽出します。

反射の赤を除外でき、きれいに抽出できました。彩度の高い赤ボールで、識別しやすかった影響もあると思います。

解像度が低い赤ボール抽出

解像度の低いボールは、陰影がつぶれて抽出しやすい場合があるようです。にじみが激しい画像だと抽出が難しくなるので、必ずしも解像度が低い方が良いとは言えません。

カオスな場所での赤ボール抽出

モルモット、ペットボトル、赤い鉄棒があるカオスな画像で抽出します。(子供がボッチャボールでモルモットの小屋を作っていました。)

色抽出だと赤い鉄棒は除外できません。がんばって色域を絞ろうと動作するため、ボールの下の暗い部分が欠けてしまいました。

ボッチャでこんなところにボールを投げることはありません。ただ、体育館にある赤いラインテープを認識する場面はあるかもしれず、その場合はボールの抽出率が下がります。

フローリングの青ボール抽出

続いて青いボールの抽出です。右下のロゴの部分が識別できず欠けていますが、青色でもおおむね抽出の問題はありません。

緑コートの青ボール抽出

緑コートで青いボールの抽出は、最初問題がありました。緑と青を誤認します。抽出条件を改修し、青だけが抽出されるように調整しました。

最難関アポワテック・コネクトの抽出

認識したいボールの中で、最難関のボールがあります。

アポワテック・コネクトというボッチャボールなのですが、青ではなく黒に近いボールです。なぜこの色なのか・・・。

このボールの識別は、既存のコードでは無理でした。色の識別パターンを、赤・青・コネクトブルーと3種類に分類して、処理を変えることにしました。

アポワテック・コネクト用の特別処理で、ある程度識別できるようになりました。

キャリブレーションとして使えるレベルに

ここまで作ってきたのは、ボール認識のキャリブレーションを行うプログラムです。

ボールの色、床の色、照明条件、カメラ解像度など、様々な変数が想定される環境では、その環境に合わせた調整、キャリブレーションが必要になります。

今回は、JavaScriptとcanvasを使い、最低限のコードで軽量にキャリブレーションを行うことを目指していました。

使えるレベルのキャリブレーションになったので、実際に使いたいWebアプリに移設しようと思います。

色抽出で床の茶色を除外する

JavaScriptとcanvasを使って、軽量な色抽出方法を探る続きです。前回、抽出がうまくいかなかったボールの影の部分を調整しました。RGBの値について配分も評価すると、より抽出精度が上がります。

影の色抽出は難しい

赤いボールを色で抽出するとき、影の部分の抽出は難しいです。

色は暗くなるほど彩度が低くなり、R、G、Bの値に差がなくなります。

前回の色抽出では、赤ボールの影を抽出できず、逆にほかのボールの影が反応してしまいました。

赤みの強い床で、暖色の光を当てた画像で検証しているので、難易度が高い気もします。ただ、このような環境でも、赤ボールを抽出するようにはしたいです。

木材にはG成分が含まれる

誤認している木材の色は茶色やベージュです。この色はRとGの成分が多く、対してボールの影はR成分だけが多いです。

つまり、G成分を判断すれば、フローリングなどの木材の誤認を防げるかと思います。

抽出精度がかなり上がる

仮に、R成分の半分以上G成分を含む場合は茶色とみなし、除外して抽出します。

この条件を加えると、かなりの精度で抽出できるようになりました。

さすがにロゴの部分は欠けてしまいますが、色のみでの抽出としては、これくらいで十分だと思います。

色の抽出は当初、RGBをHSV(色相、彩度、明度)に変換してから評価した方が簡単だと思っていましたが、canvasがRGBの配列なので、変換にパワーを使ってしまいます。

RGBのまま色の抽出精度を上げられたことで、軽量化できました。

引き続き、自動で色域を判断する機能を追加しようと思います。

色域の許容範囲は足し算・引き算で広げる

JavaScriptとcanvasを使った軽量な色抽出方法を研究しています。色域の許容範囲の計算については、単純に基準のRGBそれぞれの値に、同じ数を足し算、引き算して広げていくのが良いようです。

特定の色だけを抽出したい

赤、青のボールを検出するWebアプリを作っています。しかし、検出精度が非常に悪いです。

検出する色域の許容範囲計算が適切でないのだと思います。

どうやって許容範囲を計算した方がよいのか、検証用のWebアプリを別途作って調べました。

掛け算で許容範囲を計算

前回出した赤ボールの色の平均を基準にして、サンプル画像から赤ボールのみを抽出してみます。

まず色の抽出の許容範囲を、基準から掛け算で算出しました。

例えば基準がR:100 G:20 B:20の色であれば、以下のように掛け算で許容範囲を出します。

下限(基準×0.5)~上限(基準×1.5)
R: 50~150
G: 10~30
B: 10~30

作っているWebアプリもこの掛け算で許容範囲を計算していたのですが、改めてみると、これでは明るい色が抽出できません。

赤の明るい部分はG、Bの値も高くなるので、抽出できなくなります。

意味もなく掛け算を使ったのですが、この方法は誤りです。

足し算・引き算で許容範囲を計算

単純に基準に同じ数を足し算、引き算した方がよいです。

例えば基準をR:100 G:20 B:20の色として、プラスマイナス50で許容範囲を出します。

下限(基準-50)~上限(基準+50)
R: 50~150
G: -30~70 ※実際は0~70
B: -30~70

こちらの方が赤色のボールを抽出できます。

地味に時間をかけて調査しましたが、単純な結論でした。

暗い赤色の抽出は一工夫必要

色抽出はまだ改善の余地があります。

色抽出の許容範囲を広げていくと、赤いボールの暗い部分より先に、ほかの部分の影を検出してしまいます。

ここも色成分の違いを判断すれば、である程度精度を上げられるでしょう。次回試します。

JavaScriptとcanvasで色の平均値を取得する

画像に映っているボールの色の平均値を取得したくなりました。ボールの場所が決まっているなら、JavaScriptとcanvasで色の平均を出すことができます。

色の平均値が欲しくなる場面

Webアプリでボールの色を覚えさえるプログラムを作っています。

当初は、ボールの中心の色をピックアップしていました。しかし、意図しない色が取得される場合があります。

ボールのツヤ、描かれているロゴ、縫い目などの色を誤認するようです。特にツヤは照明環境に左右され、どうにもできない場合もありました。

ピンポイントでの色取得は難しいため、ボール全体の色の平均値を取得することにします。

JavaScriptとcanvasで色の平均値取得

画像からボールを切り抜いて、1pxずつ色を調べます。

R,G,Bの値をそれぞれ合算していき、最後にpx数で割れば色の平均が出せます。

実際にテストしたコードです。

利用したimg/ball.jpgも合わせて掲載します。テストコードを実行する場合にご利用ください。

ライブラリなしで軽量に計算できる

JavaScriptで画像解析をしようとすると、OpenCV.jsのような重たいライブラリを読み込まないといけないかと思っていました。

しかし、JavaScriptとcanvasだけで、すべてのピクセルを色の配列に変換して取得できます。

これにより、簡単な画像処理ならライブラリなしで軽量に処理できることが分かりました。

ボッチャ・アプローチ練習アプリ(開発中)

ボッチャ・アプローチ練習アプリを開発中です。先日、超音波センサーで作ったものを、スマホだけで実現できないか試行錯誤しています。試作アプリは採点精度が低く、引き続き改善を行います。

カメラでボールを認識

ジャックボールの目の前にボールを投げる練習。それをスマホのカメラを使って採点し、結果を記録していきます。

最初に投球するボールの色を認識させ、練習開始です。

初球、0点・・・。

10球投げてみます。(早送りです。)

ボールの認識が悪く、採点が不正確になってしまいました。

だいたい成功、失敗くらいなら判定できますが、外光、照明、カメラ性能で採点の精度がだいぶ変わりそうです。

通信せずに認識精度を上げられるか?

Googleなどが公開している画像認識技術を使えば、精度の高い採点は可能でしょう。

ただ、投球画像を大量にサーバーに送る必要があり、通信量やセキュリティが気になります。

採点以外にも、ボールを投げたか?投げ終わってボールを回収したか?も映像を元に識別しており、練習時間が長いと膨大な通信になりそうです。

そのため、スマホのローカルで完結し、しかもスマホバッテリーの消費が少ない認識方法を模索しています。

引き続きアプローチ練習アプリの改善を行います。

金運を切り捨てたカレンダー

新年、カレンダーを用意してなく、取り急ぎホームセンターに買いにいきました。サイズ感がちょうどよかった「金運カレンダー」を購入。そしてカレンダーを壁に掛けると同時に、妻が金運を切り捨てました。

さよなら金運

パッケージングされていて、開封まで中身がよくわからなかった金運カレンダー。パッケージだけではなく、カレンダーの紙も黄金(だいだい?)色です。

書き込む文字が見えにくそうと、私がカレンダーを眺めていると、妻がハサミを持ってきて、カレンダーを切りはじめました。

カレンダー下の「金運上昇 社運隆昌 一粒万倍 大吉招福ごよみ 金運」と書かれた、ありがたい部分を、ちゅうちょなく切り捨てました。

「この部分、邪魔だよね?」

妻の言う通り、たしかに色が強いカレンダーだから、切って小さくした方が、インテリアとしては落ち着きます。しかし、商品の意図としては、かなり重要なところを切り捨てました。

私も縁起を担ぐ方ではありません。ただ、今回の件で、金運を捨てた影響に興味が出てしまいました。

このカレンダーが役目を終える2022年末に、家計にどう変化があったか、振り返ろうと思います。

PCディスプレイに出たピンクのノイズ対処

いつからかノートPCのディスプレイにピンク色のノイズが発生するようになりました。明るい白がピンクに置き換わります。カラープロファイル変更でとりあえず解消しました。

ピンクのノイズ

トラブルの多い私のノートPCで、今度はディスプレイの表示がおかしくなりました。

明るい白(真っ白の一歩手前の色)が、ピンク色に置き換わります。再起動しても問題は解決しません。

Webサイト閲覧でも、動画閲覧でも、ピンクのノイズが邪魔になります。

カラープロファイル変更で解消

ディスプレイの色をいじれば、解消するかもしれません。

Windows11のシステム > ディスプレイでカラープロファイルを変更します。

「Default」から「Native」に変えると、画面全体が少し赤みがかり、ピンクのノイズが消えました。

おかしくなった発色の色域が使われなくなったのでしょう。

色味の変更は、すぐに慣れます。

ピンクのノイズが消えて、ストレスなく使えるようになりました。

補足:掲載画像について

今回掲載したデスクトップのスクリーンショット画像は、フォトショップで再現したものです。

ディスプレイトラブル時に撮ったスクリーンショットは、問題解消後に見ると、全部正常な画像でした。

ディスプレイ側の問題なので、当然ですが・・・。

透明ポリ袋で感染対策シールド自作

大みそかに三男が風邪をひきました。長男がすぐに三男の布団を隔離するシールドを設営します。コロナ時代に育った子供たちは、衛生意識が高いです。

透明ポリ袋で作ったシールド

長男が「フェイスシールドを作った!」と、私(親)に見せてくれました。

いや、それはフェイスではない。

しかし、想像以上に本格的なシールドです。感染対策できそうです。

透明ポリ袋と、ビニールテープ、マスキングテープを駆使してシールドを設営したようです。

三男の布団をしっかり隔離されています。

家族内感染は、けっこうな確率で起こるので、衛生意識が高いのはありがたいです。

・・・でも、本日、長男が風邪をひきました。うつったのか?