ほしぞloveログ

天体観測始めました。

カテゴリ: 計算機

一連の皆既月食記事の8本目。いい加減にそろそろ終わりにするつもりです。前回の記事はこちらから。



Hough変換

今回はHough変換を使ったサークル抽出で、月食中の月の位置合わせに挑戦です。FS-60CBで撮影した4時間分の広角の画像から月が画面中心に来るように位置変換をします。その後、タイムラプス映像にしてみます。

Hough変換は画像の中から特徴的な形を抽出するアルゴリズムで、その中に円を抽出する関数があります。Hough変換は色々な環境で使えますが、今回はOpenCVで用意されている関数をPythonで使うことにしました。検索するとサンプルプログラムなどたくさん出てくるのと、今回は対処療法で組んでいったのの積み重ねなので、あまりに汚いコードで人様に見せれるようなものではないです。なので、どうパラメータを取ったかだけの説明にとどめることにします。

基本的にはあるフォルダにある、月が映っているたくさんのファイルを順次読み込み、カラー画像をグレースケールに変換して、HoughCircles関数を呼び出すだけです。Hough関数は以下のようにしました。

HoughCircles(gray, cv2.HOUGH_GRADIENT, dp=1, minDist=1500, param1=30, param2=2, minRadius=350, maxRadius=400)

パラメータがいくつかありますが、少しだけコツを書いておきます。
  • HOUGH_GRADIENTとHOUGH_GRADIENT_ALTは両方試しましたが、ALT付きの方が誤検出が多かったのでALT無しの方にしました。
  • dpは1以下も試しましたが、位置精度に違いはあまりなかったです。大きな値にすると精度が悪くなりました。
  • 円を複数検出するわけではないので、minDistは1000とかの相当大きな値にしておきます。
  • param1は最終的に50程度にしました。大きすぎたり小さすぎたり値では検出できなかったりしますが、位置精度にはあまり影響ないようです。
  • param2は位置精度に影響があるようです。大きすぎると精度が悪くなりますが、5以下くらいだと精度はこれ以上変わらないようです。
  • minRadiusとmaxRadiusは、月の大きさは一定なのでその半径を挟むような値を取ると効率が良いでしょう。

とりあえず結果を示します。


結局出た精度はこれくらいです。もうちょっとビシーっと止まってくれればいいのですが、まだちょこちょこズレています。

実は精度を出そうとして色々試してみてます。Hough変換のパラメータをいじるのはもちろんなのですが、大きなものは
  • グレー化後に、あらためて画像の2値化
  • グレー化後に、あらためて輝度やコントラストをいじる
  • Adobe Premiereのブレ補正
  • 一旦Hough変換でラフに位置合わせして、少し大きめに切り抜いて、再度Hough変換
くらいでしょうか。でも結局どの方法も精度を劇的に上げることはできませんでした。Hough変換で目で見てもおかしいズレがあるので、そこだけでもずれが直ったらと思ったのですが、やはりダメなものはダメで、どうも苦手な画像があるようです。

今回はFS-60CBで広角で撮ったものから抜き出しているので、解像度が良くないこと。さらに動画の中から最初の1枚だけを抜き出しているので、大気揺らぎなどで多少のブレがあります。もしかしたらスタックをすると平均化されるので、細かいブレは少なくなるのかもしれません。スタックしてから、Hough変換ではなく、特徴点を抜き出して合わせるとかいう処理をした方が精度が出るかも知れませんが、ちょっと力尽きたので、今回はここまでにします。

ついでに同じ位置合わせの手法で、いくつか画像を抜き出して天王星の潜入画像をつくってみました。位置合わせ後、比較明合成しただけです。これくらいの精度ではそこそこ合って見えるんですけど、やはり長時間のタイムラプスだときついかもです。

uraus_in

まとめ

今回の皆既月食に関する記事はこれで一旦終わりにします。

撮影後、1ヶ月以上にわたって楽しむことができてかなり満足しました。その一方、そろそろ月も飽きてきました。ただ、まだ未処理ファイルが大量にあるので、気が向いたらもう少し追加で書くかもしれません。

先の記事でも書きましたが、今回は月食に関してはかなり満足して撮影できました。大きな課題は地球本影を位置補正することなく撮影することですが、次回月食ではこれ一本に絞ることにするかもしれません。

ここ数日、BlurXTerminatorがすごいことになっています。次は少しこちらの方に時間を費やそうかと思います。












手持ちのStick PC、MiNISFORUM S41ですが、値段と性能の良さから天文界隈でも使っている方が意外なほど多いのかと思います。その小ささにもかかわらず、スピードも十分。なかなか微妙な立ち位置のStick PCの中で、久しぶりに出た高評価の実用的なものです。



これまでの状況

その中で唯一の弱点が電源。特にバッテリー駆動だとどうも不安定です。

これまで3種類のUSBバッテリーを使用して、そのうち2種は起動不可だったり、途中で落ちることが多かったです。唯一少しまともだったのがLess is moreというところの100Wまで出せるというバッテリーです。起動不可という経験はしたことがなく、テストでは不安定なことはありませんでした。

その後、Less is moreを実戦投入したのですが、撮影中に落ちてしまうということが何度かありました。いずれもSharpCapのPolar alignやファイルをまとめて触ったりするような高負荷なときです。今のところ、純粋に撮影だけしていた時に落ちたことはありません。それでも撮影が止まるのが怖いため、何度か落ちるのを経験した以降は使うのを諦めて、結局今はAC100V出力がある大容量バッテリーに、S41に付属のACアダプターを使って電源供給をしています。

もう少し汎用的にならないかと思うので、いったいどれくらいの電流になると落ちるのか調べてみようと思い、少し測定してみました。


まずは分解

測定に先駆けて、S41を分解して少し中を見てみました。

0C1E94C5-25EF-4A15-8756-6DE269383143

電源部をもう少し見てみます。

77FEA294-B834-48A1-83A3-BD1C40F7E5F0

付属のACアダプターのType Cコネクタの出力をStick PCにつないで、テスターで少し測定してみました。USB Type Cコネクタを使ってますが、形だけ使っているみたいで信号のやりとりはなく、電源とグランドピンだけしか使っていないみたいです。確かにこれだとUSB出力のバッテリーでは、大きな電流は流せないはずです。元々USB2.0は5Vで0.5Aまでしか流せない規格で、USB3.0でも5V、0.9Aです。その後USB PDなど色々拡張して20V x 5A =100Wとかまで使えますが、これはあくまで規格にのっとた信号のやり取りをした場合のはずです。なので、今回のように電圧ピンだけ使っているような場合では電圧が出ないはずなので、落ちる可能性が高いのは理解できます。


Ankerのバッテリー

では実際にどれくらいの電流が流れているの測定してみましょう。使ったのはUSBチェッカーです。

AD518BA4-027C-471F-880D-53551A8DD390

写真ではAnkerの13000mAのバッテリーをつなげています。上の写真は起動前の状態です。

5回くらい起動テストして、起動さえしなかったことが2回ありました。その場合は再起動を繰り返した場合と、止まってしまった場合がありました。それでも起動することもあり、起動した後は特に操作しなければ安定です。

ここの状態からソフトを立ち上げ負荷をかけますが、Ankerの場合SharpCapとStellariumを立ち上げたくらいで落ちることが多いです。落ちた後は0.87Aでほとんど動かなくまります。

FA243E68-C84E-4137-A450-8B6A433B4977

落ちる前にその負荷の高い時の電流を見ると、なぜか1A-1.5Aくらい普通にでてるんですよね。しかも大きな電流でも落ちない時もあり、さらにプレートソルブとかもかけてやります。すると一瞬ですが2Aを超えることもあります。

851C51F3-3F88-403A-9A2F-14EFEFD4CF86

これはどういうことなのでしょうか?そもそも規格で0.9Aしか出ないと思ってましたが、2A出すこともできるみたいです。

このAnkerバッテリー、負荷が低い時は安定する時もありますが、高負荷にしていくと必ず毎回最後は落ちました


Less is moreのバッテリー

Ankerの結果はあまりよくわからないですが、気を取り直してこれまで落ちにくかったLess is moreの100W出せるというバッテリーにつなぎ変えてみます。このバッテリー、Amazonで買ったのですが既にリンク先が切れていました。60Wのものは見つかりましたが、100Wの代替のものは無いみたいです。

61B75800-D386-44BA-BC86-8C128655AD80

ほとんど落ちることはなかったので、思いっきり負荷をかけます。CPUパワーは100%です。見ることができた最大電流は2.5A越え。

BB616BEE-BBD2-4DAD-8AC4-19BA7627BC76

ただし電圧が4.8V台全半まで落ちてます。2A位までは5Vを保ってますが、2Aを超えると供給電圧が落ちていくようです。StellariumにSharpCapでPolar align、プレートソルブをかけながらStellariumをグリグリ動かすととうとう落ちました。でも落ちる瞬間に電流がものすごく高いかというと、そうでもありません。フラフラしてますがCPUパワーが100%で頭打ちなので、平均では2A切ってます。

ここで言えることは、Ankerのものよりは確実に落ちにくいということくらいで、それでも高い負荷だと落ちることは落ちます。5回くらい試しましたが、ただ1度どう負荷をかけても落ちない時があって、その時は諦めて自分で電源を落としました。


付属のACアダプター

次に試したことが、ではACアダプターに繋げた時にどれくらいの電流が流れるか確認することです。でもこれも不思議なことに、2.3A位までは見ましたが2.5Aとかを見ることはできませんでした。CPUパワーが100%で頭打ちで、それ以上電力を使うことができないからかなと思ってますが、はっきりした理由は不明です。

一つだけ言えることは、どれだけ高負荷にしても落ちることは一度もなかったことです。


まとめ?と言えるのか...

結局今回試したことで定量的にはほとんど何も言えませんでした。定性的には
  • バッテリーを使う限りは、多少の違いはあるが、負荷がかかると落ちることを避けることは出来なさそう。
  • 付属のACアダプターが唯一まともな電源で、少なくとも高負荷などで落ちることは確認できなかった。
ということくらいです。逆に疑問点の方が多く
  • USBバッテリーで何の規格のやりとりもなしで2A以上も出せるのか?
  • 逆にいうと、ここまで電流出せるのになぜ落ちることがあるのか?
  • 落ちる理由は何か?もしかして電圧降下が直接の理由なのか?
など、わからないことだらけです。

今回はUSBチェッカーの表示だけを見たので、もっと速い速度で応答を見れば何か分かるかもしれません。もう少し原因がわかれば、何か手を打つこともできるかもしれませんが、USBの範囲でやろうとすると規格外のことになるので、無難に付属のACアダプターを使った方がいい気がしています。

あと、今考えてるのがラジコン用とかのもっとシンプルなバッテリーを使うことです。これをType Cの端子だけ100円ショップで見つけてきて変換アダプターを作るとかだとうまくいく気がします。もちろん自己責任になります。

 

少し前にカラーマネージメントができるBenQのモニターSW270Cを手に入れたことを書きましたが、ただ既存のMacBook Proのモニターとの見た目の比較をしただけで、キャリブレーションまではしていませんでした。

一方、前回の記事でフジプリに頼んで天体画像の印刷を試してみました。せっかく手元にきちんとしたプリンタで印刷されて画像があるので、今回モニターをキャリブレーションしてみて、印刷画像と比べてみました。さてさて、実際どれくらい色が一致するのでしょうか?


使用機器

今回使ったキャリブレーターはX-Rite社のi1DISPLAY PROです。ソフトは付属(実際にはダウンロード)のi1Profilerを使いました。BenQのモニターにはPalette Master Elementというキャリブレーションソフトがあるのですが、MacBook Proのモニターもキャリブレーションして見たかったので、ソフトはより一般的なi1Profileを選びました。

USBでキャリブレーターを繋いであれば、自動でi1Profileのライセンスが認証されるようです。これは毎回立ち上げるたびにライセンス認証しているみたいで、うまくライセンスが認証されないように思っても、Macにキャリブレーターを繋いでありさえすれば、しばらく待てば認証されます。


実際にBenQ SW270をキャリブレーションしてみる

キャリブレーターとi1Profilerの細かい使い方はマニュアルや他のページに譲るとして、気づいたことを書いておきます。

1. 何はともあれ「ディスプレイのプロファイル作成」を選んでキャリブレーションを始めます。「簡易モード」と「詳細モード」がありますが、今回モードは「詳細モード」しか試していません。

IMG_1158


2. 光源タイプはBenQ、Macともに「白色LED」が自動で選択されたのでそのまま進めます。

IMG_1161


3. 最初は一般のモニターで見る場合の標準と言われている6500Kに合わせてみます。選んだところは3カ所だけ。
  • 白色点は「D65」というのが6500Kを意味し
  • 輝度は「120cd/m^2」
  • ガンマを「2.2」
とします。その他は全部デフォルト設定です。

IMG_1163

IMG_1166


4. モニターが対応している場合は調整を全部もしくは一部を自動でやってくれます。今回使ったBenQ SW207Sは自動調整に対応しているようなので「自動ディスプレイコントロール(ADC)」を選びました。

IMG_1170

手動は「ブライトネス、コントラスト、RGBゲイン」が調整できるようで、こちらも試しましたが、ブライトネスは調整でき、コントラストは調整そのものが出てこなくて、RGBゲインは調整してもなにも反応がなかったといった状況だったので、SW207Sの場合はこれ以降全て自動で調整するようにしています。(後で気付くのですが、ここが「トラブル2」のポイントでした。最後の方に解説してあります。)

IMG_1172


5. 結果は、元々見ていた設定に比べて多少赤側により、結構暗くなりました。最初は違和感がありましたが、でも不思議な物でものの数分も見ていると慣れてしまって、これが普通だと思えます。

6. 同じi1Profileの「品質検証」でキャリブレーション の結果を検証してみても(もちろんエラーバーによりますが、何度か試しても変な失敗をしない限り普通に平均ΔEが1以下、最大ΔEが2以下もしくは3以下になります)合格と出ますし、何度か繰り返してもかなり再現性がありそうです。ここまででとりあえず、目的のパラメーターにすることは可能だということは分かりました。

その後、大きなトラブルにあたり何日も悩むのですが、これについてはこの記事の最後のほうに「トラブル1」として書いておきます。興味がある方(特にMacな方)は読んでみてください。


MacBook Proのモニターをキャリブレーション

次に同じことをMacBookProのモニターでやってみます。同様にD65、120cd/m^2、ガンマ2.2です。

特筆すべきはMacBook Proの応答の線形性です。ほぼ一直線です。

IMG_1190


BenQ SW207Sは少なくとも真っ直ぐにはなりませんでした。

IMG_1174

キャリブレーションした2つの画面を比べて見ても、非常によく似た色合いになっています。一応写真に撮ったので載せておきます。iPhoneでの撮影なので、かなり色調補正され強調されてしまって元の色の再現性はできていないですが、相対的な違いはわかるかと思います。

IMG_1177

IMG_1181

ちなみに、MacBook Proで以前好みだったプロファイルだと、以下の右の画面のようになります。写真だと分かりにくいですが目で見ると相当違っていて、かなり青みがかった画面で普段作業していたことがわかります。

IMG_1193


IMG_1195


印刷用のプロファイル

次に、印刷用のプロファイルとしてD50、90cd/m^2、ガンマ2.2というのでSW270Cをキャリブレーションしてみました。輝度は議論があるところですが、「星の牧場2」のよっちゃんさんによると、90cd/m^2くらいがよく印刷結果と合うとのことなので、とりあえずこの値で試します。

と、ここでまた深刻なトラブルが。複数のプロファイルがうまく切り替えられません。こちらも最後の方に「トラブル2」として、解決策とともにまとめておきます。

同様に、MacBook Proのモニターにも同じD50、90cd/m^2、ガンマ2.2を適用します。この時点でBenQ SW207SもMacBook Proも、6500Kでも5000Kでも、目的の色になることは確認できました。i1Profileの「品質検証」で検査してもかなり再現性があります。両方のモニターを目で見比べても、どちらの色温度でもよく似た色になっています。



実際に印刷したものと比べてみる

これらの結果を、前回フジプリで印刷した結果と比べて見ます。印刷物を見るときは、本当は印字をした設定のはずのD50用のライトというのが売っていて、この光の元で比較すべきです。でもこのライトが高い!なので今回は天井の電球色と、机の位置や傾きを調節できるスタンドライトの昼光色(FHC22ED)を適当に混ぜて3つの色が同じように見えるようにして見ました。

IMG_1213

3つを比べた結果が下になります。繰り返しますが、iPhoneで撮っているので、多少画像処理が入るため、絶対的な色は派手目に出てしまっています。相対的な違いを見てください。

IMG_1200

見ている限りはそこそこ色は合っている気がします。むしろ3枚モニターがあるみたいで、印刷とモニターがここまで合うものなのかと、ちょっとびっくりなレベルです。あえて言うなら、Macが少しずれているでしょうか。でもズレ具合は6500Kの時に示した写真程度で、まあ私的には許容範囲内かと。モニター同士の色の違いは写真で撮った方が顕著になるようです。逆に印刷は目で見ると光の当たり具合の影響(見ている位置も含めて)なかなか違いが判断できなくて、むしろ写真に写した方がどれくらい合っているかわかりやすいです。

印刷した色がどれに一番近いか、モニターの元の色と6500Kと5000Kをじっくり目で見て比べると、やはり5000Kでした。もちろん環境光の影響をものすごく受けるのですが、例えば背景の色が比較的わかりやすく、明らかに5000Kが一番近いです。それでも本当に一緒の色かと言うとやはり違って見えて、印刷されたものの方が一番赤く、また色温度にあまり左右されない緑が印刷されたもののほうが一番濃かったのです。

比較のために、MacのモニターだけD65 (6500K)、120cd/m^2、ガンマ2.2に戻したのが下の写真になります。

IMG_1203

写真でもMacのモニターだけ明らかに青みがかっているのがわかります。こちらは目で見た方がもっとよくわかります。

見慣れると6500Kが一番自然な色に見えてきます。以前好きだった色はかなり青によって見えてしまいます。5000Kはやはり黄色っぽく見えてしまいますし、暗いです。なので普段使いでは6500Kにして、輝度をもう少し明るくして使うことにします。


Macの「補正」で色合わせとか...

あと、Macについている「補正」機能も試しましたが、温度とガンマを合わせてもどうも全然違う色になるようです。なのでこの機能はこれ以上使うことはないと思います。

というより、キャリブレーターを一つ持っていれば、Macでもカラープロファイルで調整できる範囲内(ADC(自動調整)を使わないソフト的なと言う意味)で十分に色合わせができます。他のハードウェアキャリブレーションがない、一般のモニターではどうなのでしょうか?結局今回はSW270Cのハードウェアの調整はしていないことになる(下の方の「トラブル2」を参照)と思うので、もしかしたら色域とかの問題はあるものの、安いモニターでもそこそこの(私くらいの素人が、印刷したものと比較するくらいのレベルでの)色合わせくらいはできるのかもしれません。


トラブル1: HDRの罠

やっている途中に大きな問題が起きました。

一旦キャリブレーションが終わって、比較しようとして以前のプロファイルにしても全然元の色には戻らず、明るすぎになってしまいます。

ところが一旦Macと接続を外したり、BenQの電源を切ったりして、再びMacBook ProとAW270Cを接続すると、明るすぎだった元の設定が、以前のようにまともに見えるようになります。そうすると今度は、キャリブレーションした設定が暗く見え過ぎてしまいます。こうなるとせっかくキャリブレーションしたプロファイルも意味がなくなってしまうので、一からやり直しです。

ここはかなり悩みました。その後、何日かいじってやっと原因がわかりました。
  • MacBook  ProをUSB-Cで繋ぐと、SW270のHDR(ハイパーダイナミックレンジ)モードが自動でオンになっていたのです。この場合、SW270Cの「カラー調整」が「輝度」「コントラスト」「シャープネス」「彩度」「色のリセット」以外は全て無効になります。SW270C上では他のカラーモードを選ぶことさえできません。
  • ところが、キャリブレーションを進める過程で、「測定を開始」を押した後にすぐ、強制的にカラーモードはHDRオフになり、その状態でキャリブレーション が進み、カラープロファイルが作成されます。キャリブレーション 後確認してみると「ユーザー1」が選ばるようです。その選ばれたモードは何かモニターを操作するまでは持続します。
  • i1Profileを立ち上げたままBenQの電源を一度切ると、i1Profileが(誤動作で)落ちる。その後、自動でHDRモードに戻ってしまい、キャリブレートしたプロファイルで見ると画面が暗く見えるなどの問題がある。
  • 一旦Macと接続を外して再度接続すると、モニターが認識されないとう問題がある。BenQの電源を一度切ったりするとモニターが認識されるが、自動でHDRモードに戻ってしまい、キャリブレートしたプロファイルで見ると画面が暗く見える。
とまあ、バグ検証のように色々やってみたのですが、結局のところHDRオンの状態でキャリブレーションをすると上記のカラーモードの強制変更の問題をどうやっても回避できませんでした。

結局どうしたかというと、HDRモードをオフにしました。でもこのHDRモードをオフにするやり方がBenQのマニュアルとかサポートなど検索しても全く出てこなくて「条件を満たせば自動でHDRモードが選択されます」とあるだけです。逆に言えば条件を満たさないようにすればHDRをオフにできるはずなので、色々探してやっと見つかりました。Macの方のの設定にそれがあります。

「システム環境設定」の「ディスプレイ」を選んで、「BenQ SW270C」の「ディスプレイ」を選ぶと「ハイダイナミックレンジ」オプションが見つかりました。これをオフにすると色々うまくいくようです。

HDRをオフにした後、カラーモードを「Adobe RGB」にして、キャリブレーションを一からやり直しました。キャリブレーションが終了するとカラーモードは「ユーザー1」になりますが、今度はUSB-Cケーブルを抜き差ししても色はキャリブレーション されたままの色で、変なことにはなりません。

でもこれ、まだ問題を抱えていることに後で気付くのですが、詳しくは次の「トラブル2」を見てください。


トラブル2: ADC(自動調整)と複数のカラープロファイル

ここでまたトラブルです。SW270Cで2種以上のカラープロファイルはほとんど意味をなさないことがわかりました。とにかくキャリブレーションするとSW270Cの中のカラーモードの「ユーザー1」にその設定が保存されます。次に別のキャリブレーションでカラープロファイルを作っても「ユーザー1」が上書きされてしまい、元のプロファイルに戻すことができなくなるのです。なのでキャリブレーション 前後の比較がうまくできません。

そこで「カラー調整」から「色設定を保存」にして、設定を「ユーザー2」にコピーします。その上で新たにキャリブレーションします。新しいキャリブレーション の設定は「ユーザー1」に入るので、元に戻したい場合には「ユーザー2」を選べばいいというわけです。でもこれ、Macの環境設定の「ディスプレイ」から行ける「カラー」のところにそれぞれのキャリブレーションで保存されたプロファイルが、全く意味をなさなくなります。どうも設定内容を全てSW270Cの設定に押し付けてしまうようです。ここら辺はもう少しやり方がありそうなので、引き続き試してみました。

解決策としては「自動ディスプレイコントロール(ADC)」も手動調整「ブライトネス、コントラスト、RGBゲイン」も両方とも選択しないことです。そうすると、調整結果が.iccのカラープロファイルの中に反映されるようです。検証しても最大許容エラーで2以下でも合格しますので、再現性もあるようです。

さらにこのことから、もう強制的に「ユーザー1」に設定が保存されることもなくなるので、最初からAdobe RGBにしておけば、色範囲が広いカラーモードでキャリブレーションができて、その設定がファイルという意味でのカラープロファイルに反映させるのかと思い試しました。狙いはバッチリで、Adobe RGBのまま、D65、120cd/m^2、ガンマ2.2もD50、90cd/m^2、ガンマ2.2も、再現性込みでカラープロファイルを選ぶだけで切り替えができるようになりました。

これでやっとまともなやり方にたどり着いたことになります(多分)。でもHDRとADCの適用範囲、ものすごくわかりにくいです。もう少し改善して欲しい気がします。


その他、細かいトラブル

もう一つ気づいたトラブルですが、キャリブレーション 最後にカラープロファイルを保存するときののファイル名を変えられない時がありました。わかりにくかったのですが、日本語入力モードになっているときでした。入力はできるのですが、保存されたファイル名は入力を無視してデフォルトのものとなってしまいます。一番の問題は日本語モードになっていても半角でファイル名がきちんと表示だけされているので、気付きにくいことです。英字入力モードにすれば普通にファイル名を任意のものにできます。

ボタンや選択が全くできなくなる時があります。多分これはバグかと思います。i1Profile、もう少しきちんと検証して欲しいと思います。

ところで、色温度を簡単に測定する方法はないのでしょうか?キャリブレーションの時に、マニュアル調整を選ぶと、調整時にその時の色温度を測定してくれて表示してくれます。それを設定値に合わせろと言うのですが、調整時でなくてただ単に測定だけしてくれるモードがあればいいのですが。今のところ測定だけという方法は見つかってません。


まとめ

長かったのですが、まとめると
  • 今回、設定を変える前の元の色、6500K、5000Kと比較しました。SW270Cでも、MacBook Proのモニターでも、設定を変えるとはっきり違いがわかります。
  • BenQ SW207SもMacBook Proもそれぞれ同じ設定でキャリブレーション すると、目で見ても見分けがつかないくらいのレベルでかなり近い色になります。
  • 自分が好きな色(元々使っていた色)はかなり青より(高い温度)だと言うことがわかりました。また、かなり明るい画面でも全く気になってなかったこともわかりました。

比較的新しいMacと、一部のBenQモニターの組み合わせの場合、気をつけることとして、
  • HDRモードにはしない、もしHDRモードになっていたらMacの環境設定のディスプレイからオフにする。
  • カラーモードはAdobe RGBを選んでおく。
  • ADC(自動調整)はオフ、マニュアル調整もオフ。
  • 一度キャリブレートしたらSW270Cの設定は弄らず、カラープロファイルのみで設定を切り替える。
というのが重要です。でもよく考えたらHDRモードが使えないというのは、ある意味惜しいことなのでしょうか?ここら辺はまだ私には謎です。

今回、トラブル記事など冗長で長くなっているだけの気もしますが、私自身後から見てもわかるようにと、他にも悩んでいる人もいるかもと思い、そのまま残しておきます。誰かの役に立ったら嬉しいな。


Stick PCの小ネタです。

先日AmazonでPCのHDMI出力をUSBに変換するアダプターを注文しました。



私が買った時は700円以下。安いですが9月20日頃に発注し、つい何日かまえに届いたので一ヶ月位かかりました。 開けてみるとコネクタのことろがカタカタします。ネジを外すと、基板とコネクタが一体で、ケースにはコネクタ用に開けた穴のみで固定されてました。基板の長さがケース内部より少しだけ短いためにカタカタしてたので、基板にパーマせるテープを重ね貼りして少しだけ長さを増したらいい具合にカタカタが収まりました。

もともと電視観望用に一眼レフカメラのHDMI出力をPCに取り込み、SharpCapでスタックできないかと思って試験用に買いました。でもそちらの用途はSharpCap自身が対応してくれたので既にあまり動機はなく、それよりも長年探していたPCをモニターがわりにする機材そのものであることに気づきました。というのは、Stick PCを使うときに遠征先でトラブルがあることを考えるとどうしても小さいながらもモニターを余分に持って行かざるを得ないのです。でもこれがあるとPCの大きなが画面をモニターとして使えるはずで、余分なモニターを持っていかなくて良くなります。

さて実際のテストですが、ごく普通に使えます。PCからはWebカメラとして認識されます。Windowsだと標準のカメラアプリから、MacだとQuick Timeで新規ムービー収録を選べば共に標準ソフトで画面が見えてしまいます。下は、Stick PCの画面をHDMI出力から今回のアダプターでMacのQuick Timeで出しているところです。

IMG_1039

IMG_1042

マウスの反応は少し遅れますが、遠征先で緊急事態に使う分には実用の範囲でしょう。普通はマウスの遅れとか無いリモートデスクトップで使えばいいのです。

今回は一番安い小さいタイプを買いましたが、もう少し高いものでUSB端子がケーブルでつながっているフレキシブルなタイプがありますが、こちらの方がいいかもしれません。理由は特にTypeCなどに変換するアダプタを使っていると、万が一StickPCを引っ張り上げたりしてしまうとコネクタ部分が曲がってしまうからです。ここにケーブルの柔らかい部分があるとコネクタの破損を防ぐことができます。

これで余分なモニターをいつも持っておく必要がなくなりますし、モニターの破損とかに気を使わなくて済むようになります。
 

最近、少しいいモニターを手に入れました。といってもBenQのものでサイズも27インチと、最近の大型モニターから見たらまだ控えめの大きさなので、多少安価で、少なくとも最高級品というわけではないです。キャリブレーションもまだ試していません。パッと見の印象は色むらもなさそうで、悪くなさそうです。


事務用に使っていたモニターの色は全然おかしい

まだまだ使い始めのテスト段階のですが、たまたまそのBenQモニターと、昔(2009年発売開始)から使っている一般クラスのMitubishiのモニター(画像処理に使ったことはなかった)で、自分の撮影した星雲を何気なく比べてみたんです。ところが全然写りが違うのに気づきました。Mitsubishiの方は自分が持っている印象と全く違って写ります。暗い、コントラストが悪く霞みがかったみたい、黒が黒でない、鮮やかさがない、色が違うと、もう雲泥の差です。普段画像処理はMacBook Proだけでやっています。外部モニターに映したこともなかったのですが、今回初めてBenQのモニターに映してみたので、ついでにこれまでの物でも見てみようと思ったわけです。


おかしいモニターを調整してみる

一見MacBook ProとBenQモニターの色はかなり似通って見えます。まだキャリブレーション前なので、よくみると多少は違いますが、それでも印象が違うほど違っては見えません。一方、Mitsubishiモニターは一見して印象が違います。そこでMitsubishiモニターを改めて同じように見えるように調整してみました。といっても調整できるパラメータはそう多くはありません。大まかにはコントラストを上げれるだけ上げ、ブラックレベルをかなり落とすとかで、あとは色温度に相当する部分をRGBでマニュアルでバランスをとるくらいです。高度な機能(ダイナミックコントラストとか、黒白伸長とか、超解像設定など)はどれもオンにするとかけ離れていったので全てオフです。結果としては多少BenQと似た色になりましたが、同じと言えるほどにはまだ遠いと感じます。あー、これくらいしか表現できないのかと実感できました。

一番違いのあったMitsubishiiモニターの設定のビフォーアフターを、画面をiPhoneで直接撮影することで伝えようとしたのですが、撮った写真を見てもほとんど違いがわからなかったです。まあ、デフォルトそのままのダメだったパラメータと、多少はマシななったものを比較できるかもしれないので、一応載せておきます。

IMG_0515
こちらがBefore。パラメータも初期のままです。

IMG_0513
こちらがAfter。明るさもコントラストも精一杯ですが、まだ不足と感じました。
まあ、古い機種なのである意味仕方ないです。 

iPhoneで撮ったものを比べると、Beforeの方が一見階調が良く、Afterの方がサチっているようにみえますが、電視観望画面の撮影でもそうなのですが、iPhoneで写すと多少鮮やかに見えてしまいます。実際の画面はBeforeが暗く迫力がなく、Afterの方が階調豊かで自然に見えます。


さらに比べてみると違いが

しかしさらにここで改めて比べてみると、設定し直したMitsubishiの画面は、BenQからは遠いですが、MacBook Proに結構近いです。最初、近いと思っていたBenQとMacBook PRoもまだまだ違いがあったのです。Mitsubishiモニター古いですが、もしかしたら意外にいいのかもと思ってしまいました。それでも目一杯増やした輝度とコントラストが不足しているのは明らかなので、まあ仕方ないですね。

色の違いを写真で表すのはどうやら不可能なようなので、言葉で説明することにします。
  • 最初のMitsubishiモニターの設定は先に書いたとおり初期設定そのままの酷いものです。実際の見え具合も全く意図したものと違っていました。
  • 合わせ直したMitsubishiモニターの設定では、MacBook Proにかなり近くなりました。それでも輝度が足りていないように、全体的に暗く見えます。コントラスト不足でもあり、背景部が霞がかって見えます。
  • MacBook Proはこれで最終調整までして画像処理したので、自分が思っているような色です。もちろん私の腕にも欠点が多々あるので、まだまだ不満なところもありますが、それでも自分なりの納得の色というのは3つのモニターを比べてもぶれてません。
  • BenQモニターはそれに比べると、赤がのっぺり出てます。彩度が高く見え、赤の階調が出ていないように見えます。ギラギラ見えるのに、諧調の豊かさはMacBook Proに劣るといったとことでしょうか。また、背景が暗く(黒く?)でるので、暗くて淡い諧調の違いがわかりにくくなります。WindowsとMacの違いかとも思いましたが、実際にWindowsからの出力とMacからの出力両方で比べてみて、少なくとも表示しているPCでの違いはほとんど感じられなくて、モニターの違いのほうが大きいと思いました。
  • 見比べたら違いははっきりわかりますが、一台だけパッと見せられたら見分けられるか?一度見て特徴を覚えておけば見分けはつきそうです。でも新たな画像を見せられて、このモニターは3つのうちどれかと聞かれたら、多分無理です。

IMG_0520
左からMitsubishi、BenQ、MacBook Pro。
でもこんな写真では全く違いを表すことができません。

Mitsubishiモニターは今回目で見て調整しました。MacBook ProはTrueToneはオプションを外して、あとはデフォルトの設定。BenQモニターもまだ何も調整していません。これが調整次第で今後どうなるのか、少なくともキャリブレーションで目で見て同じと思えるようなレベルまでにはなって欲しいです。

とこんなふうに言葉で伝えましたが、多分実際に画面を見てないと10分の1も伝わらないと思います。モニターの写り具合の違いをうまく伝える方法ってないのでしょうか?統一したものはキャリブレーションすれば伝えることは原理的にできるんですよね。キャリブレーションした後に、違いがわかるか?言葉でその違いを説明できるのか?ここら辺もきちんと検証したいです。


他の人は違って見えるのでは?

さて、機器の差があるので、上のように違いが出ること自体は仕方ないので特に問題にはしてません。でもこのとき思ったのが「自分がいいと思って処理した画像も、他の人が他の環境で見ると多分違った印象で見えるのだろう」ということです。

今まで自分自身でも、モニターの色に関しては気を使ってこなかったので、いまさらあまり大きなことは言えません。最近少し派手目の色使いに傾いていることもあり、もしかしたら他の人には全然変なふうに見えているのかもと心配になってきました。少なくとも同じ画像を自分のMitsubishiのモニターで見たら最初あからさまに変でした。

画像処理の最後は微調整になってきます。ここら辺の作業が一番時間がかかる割に、その調整が全部吹っ飛んで伝わってしまうかもしれないのは、なんとも惜しいと感じました。MacBook Proも自分ではキャリブレーションはしていませんが、これは最初からある程度キャリブレーションされているらしいです。何も考えてなかったのですが、ずっとこれで画像処理をやってきたのはある意味ラッキーだったのかもしれません。


今後

今回、新しいモニターを手に入れて少しだけ比べてみたのですが、今までいかに色に気を使ってこなかったがよくわかりました。それでもMacBook Proの中で画像処理が閉じていたのがせめてもの救いです。

でもまだやっとモニターだけで、キャリブレーションまで行っていません。入り口に立つ準備を始めた程度です。これからもう少し時間をかけてきちんと色のことを理解しようと思います。

3年半以上前に購入したドスパラのStick PC。撮影やリモートPCとしてずいぶん活躍してくれました。最近は非力でトラブルも多くなってきて余り使ってなかったのですが、ここにきてやっと買い替えとなりました。

梅雨でずっと雨で、いまいち気合いが入らないです。ブログもなかなか書く気になりません。昨日やっと少し晴れてくれたので、Stick PCのテストも兼ねて電視観望をしてみました。


手持ちのStick PC

私がStick PCに手を出したのは2017年です。ここからの連番記事を見ていただければわかると思いますが、その非力さから設定にはかなり苦労しました。その甲斐もあって寒い冬にもお部屋でぬくぬく状態でリモートで撮影をすることができたので、かなり重宝していました。しかしその後、特にSharpCapのアップデートともに計算量が増え、途中で止まるなどのトラブルが頻発してきたために、徐々に使用を控えるようになってしまいました。これまで使った経験から、少しStick PCについてまとめます。

Stick PCの長所
  • コンパクトで軽量。
  • 外部バッテリーで駆動するので、大きなバッテリーを使えば相当な長時間駆動が可能。バッテリーがないので、へたることがない。外部のバッテリーはへたれば交換すればいいだけ。
  • 基本リモート接続なので、リモートデスクトップさえできればどのPCからでも操作できる。特に寒い冬は自宅の部屋や車の中で状況を確認できる。

Stick PCの欠点
  • モニターがないので、トラブルがあると外部モニターに繋がなければならない。遠征時の使用では念のため小型のモニターとキーボードマウスを持っていく必要がある。
  • 基本的にCPUパワーやメモリがあまりないので、重い操作はあまりできない。

手持ちのStick PCの問題点
  • Windows 10 home editionなのでリモートデスクトップの実現に相当苦労をする。
  • メモリが4GBで、撮影に支障がない最低レベルだが、もう少し欲しい。
  • CPUがAtom x5-Z8550でちょと非力。
  • 付属の記憶領域が32GBで既にWindowsシステムでほとんど消費されていて、Proにさえアップデートするのがはばかられる。->リモートデスクトップを必ず別途用意する必要がある。
  • Carte du CielとPHD2、BackYard EOSでのディザー撮影は可能。SharpCapでの撮影も可能だが、転送レートが遅くとりこぼしや落ちることがある。Stellariumは遅すぎて実用的でない。
  • SharpCapのあるバージョンのころから、Polar Alignで止まるようになってしまった。ビニングして画素数を減らしたり、ROIで画素数を減らすと動くこともあるが、めんどう。そのためPolar Alignだけ別のノートPCでやってから撮影時にはStick PCに繋ぎ直すとかしていた。
とまあ、いろいろ不都合もあるのですが、Stick PC自体はそのコンパクトさとリモート操作から、かなり撮影に向いていると思っているので完全に捨てることができません。それより問題は、このStick PC世間的にはあまり人気がないらしく、なかなか新機種が出ないのです。年何回かStick PCについて調べるのですが、あまり手持ちのと差がないのでイマイチ買い換える気にならなかったのです。なので古くて非力でも使い続けざるを得ませんでした。


新しいStick PCが結構よさそう

Twitterでのnabeさん情報で、新しいStick PCを買ってずいぶん快適になったとのこと。しかもたまたまAmazonのタイムセールで安く出てるのを知りました。メモリが4GBのままだったので、ここだけは8GB欲しかったですが、Celeronのn4120 (AmazonではN4100ともN4120とも表記、実際に来たものは箱にはN4120と表記、でもN4100の偽装の疑いあり、Winodows上ではN4120 1.10GHzと出ている) でストレージは64GBで、性能的には相当の改善です。

20台のセールで私が見た時には既に残り4台だったので、早速ポチりました。もしかしたら天文マニアで買い占めてるかもとの噂です。


セットアップと電源トラブル

何日かして到着。早速セットアップです。

電源はType Cで供給です。Type C端子がついたACアダプターも付いています。出力は5V、3Aとなっています。モニター端子はHDMIとMINI DPがついていて、それぞれ接続用のケーブルもついています。USB3.0が2つ、Micro SDを一枚挿すことができます。

IMG_0398

WindowsはHomeが入っていると思い込んでいて、手持ちのProライセンスがあったのでアップデートしてしまいましたが、そもそも入っていたのはHomeでなくProだったようです。リモートデスクトップの使用だけならアップデートの必要がありませんでした。でもProがはいっているだけでもお得です。

一つだけ気になったことがありました。どうも電源を選ぶようです。付属のACアダプターはもちろんいいのですが、USB端子からの給電だと最初動いてもWindows起動直前で止まってしまうことが何度かありました。

一度も問題なかった電源
  • 付属のACアダプター
  • Macbook Pro用のACアダプター
  • Macbook Pro用と思って買ったLess is moreの「100W IN/OUT」端子

一度でもダメだった電源

ところが、一度ダメだったものも改めて試したりすると、全部きちんと立ち上がるんですよね。イマイチ再現性がありません。

Amazonのレビューに書かれていましたが、「このStick PCのTypeCコネクタはホスト機能がないようで、情報のやり取りをしていない。なので1.5A以上流電流を流せないため、使用することができない。」というような意見です。ところが、少なくとも2度目以降、一番非力と思われるMac本体のType Cから(Mac本体にACアダプター接続なし)でもきちんと起動しているので、上のコメントが間違っているか、もしくは1.5Aまで流れていないかのどちらかです。

使っていて思ったのは、このStick PCものすごい省電力です。バッテリーの持ち時間からの判断ですが、以前のドスパラのStick PCよりバッテリー長く持ちます。Macbook Proに繋いでも、Stick PCを接続する場合と接続しない場合でも、体感的にはMac本体のバッテリーの持ち時間にほとんど違いを感じられません。

USBの電力チェッカーがあれば良かったのですが、持っていないので私も推測と手持ちの電源での検証しかできていません。

安価なバッテリーでも大丈夫そうなのですが、遠征に行く時だけは一番確実なLess is moreを使うことにするかもしれません。


撮影用天文関連ソフトのインストール

さて、一通りの天文関連のソフトをインストールします。最初からあるストレージ領域も64GBとかなり余裕があるので、いくつかのアプリは直接Cドライブにインストールしました。追加で128GBのmicro SDを挿しているので、Plate solveのデータなどのGBクラスのものは追加のストレージの方にインストールしました。インストールしたのは
  • ASCOM platform、ASCOM用にCelestron driverとSynScanドライバー
  • ZWO カメラドライバー
  • Stellarium
  • SharpCap
  • ASIStudio
  • PHD2
  • NINA
  • All Sky Plate Solver
  • PlateSolve2
  • ASTAP
  • EOS Utility
  • BackYard EOS
  • Zoom
くらいでしょうか。画像処理関連はまだ何もインストールしていませんが、撮影までなら十分だと思います。

一つだけ、FireCaptureはまだインストールしていません。理由は取り込み速度が出ないからではないかと思っているからです。FireCaptureは惑星と太陽用途のみ。両方とも取り込み速度が重要なので、そのばあいは相当早いノートPCを使うので、おそらくこのStick PCで使うことはないだろうと思うからです。


簡単な稼働テスト

その後、実際に稼働テストをしてみました。この時のバッテリーは一度もトラブっていないLess is moreでした。

とりあえずやったことは、SharpCapでの電視観望。結果だけ言うと、超快適。サクサク動きます。以前のStick PCのモッサリ感から比べたら雲泥の差です。一つだけ注意は、Stick PC本体裏面のファンを塞ぐと熱で止まってしまうようです。警告が書いてあるのですが、一度たまたまファン側を地面に置いてしまい塞がれていて止まってしまいました。

リモートデスクトップもHomeの時の苦労はなんだったんだと思うくらいスムーズです。まあProなので当たり前ですが。

まだ使い始めたばかりなので、またいろいろ試して報告します。

以前、星像切り出し用のコードをPythonで書いたのですが、




Matlab用に少し書き直したので公開します。結果はすでにここ最近の記事で使っているので、これまでに見ている方も多いかと思います。デザインはピンとくる方もいるかと思いますが、スターベース東京のブログの作例の切り出し画像のフォーマットに合わせてあります。

ファイル選択ですが、以前選んだフォルダを覚えるようにしました。以下のページを参考にしました。ありがとうございました。
前回の対応フォーマットはJPEGだけでしたが、今回はMatlabのimreadコマンドでサポートする画像ファイルに対応しています。なので、かなりのフォーマットに対応するはずです。実際に全部試したわけではないので分かりませんが、
  • BMP、JPEG、PNG、CUR、JPEG 2000、PPM、GIF、PBM、RAS、HDF4、PCX、TIFF、ICO、PGM、XWD

に対応するらしいです。天文で関連するのは主にJPG, PNG, TIFFくらいでしょうか。RAWファイルはあまり対応できないのですが、個別にFITS形式だけ対応させておきました。

カラーの8bit、16bitに対応しています。32bitには対応していません。あと、グレー画像は多分ダメです。結果はファイル名に”_cut25”というのが足されて、元のファイル形式と同じ形式(例えばjpgならjpg、tifならtif)に書き出されます。


7bc22bb9_cut


あまり綺麗でないですが、ソースコードです。 コピペして、Matlab上で走らせてみてください。上のような画像が出てくるはずです。簡単なコードなので、各自で希望に応じて適当に書き換えてみてください。3x3マスとかも簡単にできるはずです。

clear; %%% Paramters CS = 300; BW = 5; % File select if ispref('MyPreferences','LastUigetfileFolder') folder = getpref('MyPreferences','LastUigetfileFolder'); if ~ischar(folder) folder = '/Users/'; % for mac. if windows use 'C:\'. end else folder = '/Users/'; % for mac. if windows use 'C:\'. end [file,path] = uigetfile({ '*.*', 'All files(*.*)'}, 'Pick a file','MultiSelect', 'on',folder); if ~isnumeric(path) setpref('MyPreferences','LastUigetfileFolder',path) end % Reading image with size and class (full size) [filepath,name,ext] = fileparts(file); if extractBefore(ext,5) == '.fit' Img = fitsread(fullfile(path, file)); else Img(:,:,:) = imread(fullfile(path, file)); end [y, x, l] = size(Img); if isa(Img,'uint16') cv = 256; else cv = 1; end % Size of ASP-C ay = round(size(Img,1)/1.6); ax = round(size(Img,2)/1.6); % empty cut image CutImg = zeros(5*CS+6*BW, 5*CS+6*BW, 3, class(Img)); % Orange area CutImg(:,:,1) = 235 *cv; CutImg(:,:,2) = 170 *cv; CutImg(:,:,3) = 80 *cv; % Blue Area BA = CS+BW+1:4*CS+5*BW; CutImg(BA,BA,1) = 50 *cv; CutImg(BA,BA,2) = 50 *cv; CutImg(BA,BA,3) = 80 *cv; % Define areas in cut image C = zeros(CS,5); for i = 1:5 C(:,i) = (i-1)*CS+i*BW+1:i*(CS+BW); end % Area in original image IX(:,1) = 1:CS; IX(:,2) = round((x-ax)/2)+1:round((x-ax)/2)+CS; IX(:,3) = round((x-CS)/2)+1:round((x+CS)/2); IX(:,4) = round((x+ax)/2)+1:round((x+ax)/2)+CS; IX(:,5) = x-CS+1:x; IY(:,1) = 1:CS; IY(:,2) = round((y-ay)/2)+1:round((y-ay)/2)+CS; IY(:,3) = round((y-CS)/2)+1:round((y+CS)/2); IY(:,4) = round((y+ay)/2)+1:round((y+ay)/2)+CS; IY(:,5) = y-CS+1:y; % Filling cut image by original cut for i = 1:5 for j = 1:5 if ( ((j==1)||(j==5)) && ((i==2)||(i==4)) ) || ( ((j==2)||(j==4)) && ((i==1)||(i==5)) ) CutImg(C(:,i),C(:,j),:) = 256 *cv; % fill with white else CutImg(C(:,i),C(:,j),:) = Img(IY(:,j),IX(:,i),:); end end end %image(CutImg); if extractBefore(ext,5) == '.fit' fitswrite (CutImg, fullfile(path, [name,'_cut25',ext])); else imwrite (CutImg, fullfile(path, [name,'_cut25',ext])); end




途中からいろいろ簡略化しているのでわかりにくいと思います。% Define areas in cut image以降を、以下のコードに置き換えるとまだわかりやすいかと思います。

% Define areas in cut image C1 = 0*CS+1*BW+1:1*CS+1*BW; C2 = 1*CS+2*BW+1:2*CS+2*BW; C3 = 2*CS+3*BW+1:3*CS+3*BW; C4 = 3*CS+4*BW+1:4*CS+4*BW; C5 = 4*CS+5*BW+1:5*CS+5*BW; % Area in original image IX1 = 1:CS; IX2 = round((x-ax)/2)+1:round((x-ax)/2)+CS; IX3 = round((x-CS)/2)+1:round((x+CS)/2); IX4 = round((x+ax)/2)+1:round((x+ax)/2)+CS; IX5 = x-CS+1:x; IY1 = 1:CS; IY2 = round((y-ay)/2)+1:round((y-ay)/2)+CS; IY3 = round((y-CS)/2)+1:round((y+CS)/2); IY4 = round((y+ay)/2)+1:round((y+ay)/2)+CS; IY5 = y-CS+1:y; % Filling cut image by original cut CutImg(C1,C1,:) = Img(IY1,IX1,:); CutImg(C2,C1,:) = 256 *cv; CutImg(C3,C1,:) = Img(IY3,IX1,:); CutImg(C4,C1,:) = 256 *cv; CutImg(C5,C1,:) = Img(IY5,IX1,:); CutImg(C1,C2,:) = 256 *cv; CutImg(C2,C2,:) = Img(IY2,IX2,:); CutImg(C3,C2,:) = Img(IY3,IX2,:); CutImg(C4,C2,:) = Img(IY4,IX2,:); CutImg(C5,C2,:) = 256 *cv; CutImg(C1,C3,:) = Img(IY1,IX3,:); CutImg(C2,C3,:) = Img(IY2,IX3,:); CutImg(C3,C3,:) = Img(IY3,IX3,:); CutImg(C4,C3,:) = Img(IY4,IX3,:); CutImg(C5,C3,:) = Img(IY5,IX3,:); CutImg(C1,C4,:) = 256 *cv; CutImg(C2,C4,:) = Img(IY2,IX4,:); CutImg(C3,C4,:) = Img(IY3,IX4,:); CutImg(C4,C4,:) = Img(IY4,IX4,:); CutImg(C5,C4,:) = 256 *cv; CutImg(C1,C5,:) = Img(IY1,IX5,:); CutImg(C2,C5,:) = 256 *cv; CutImg(C3,C5,:) = Img(IY3,IX5,:); CutImg(C4,C5,:) = 256 *cv; CutImg(C5,C5,:) = Img(IY5,IX5,:);







画像処理で出来上がったファイルの四隅の星像を比べたくなることがあると思います。これまでPhotoshopで手作業で切り取り貼り付けを駆使して作っていたのですが、何度もやるとなるとめんどくさいので、簡単にできるようにpythonとOpenCVを使って作ってみました。

超お手軽プロブラミングなので、内容はソースを見たらすぐにわかると思います。唯一工夫したところはファイル名をGUIで選択するところくらいでしょうか。Macで試しましたが、多分Windows他でも動くと思います。(すみません、チェックもしてません。)


必要な環境

環境を構築するのもいたって簡単です。今回はMacで試したので、Macでやる場合を書きます。WindowsなどでもPythonとOpenCVが動く環境なら走るはずなので、難しくもなんともないと思います。

1. Macの場合、Phython3はHomebrewからインストールするといいでしょう。Homebreはターミナルを立ち上げて、

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

でインストールできます。


2. 次にPython3です。これもコマンド一発で、

brew install python3


3. 最後はOpenCVのインストールです。

pip3 install opencv-python

でインストール完了です。xcodeをインストールしていない場合は、最初にそれも必要かも。うまくいかない場合は、私なんかの説明よりも、適当に検索すればOpenCVが使えるようになるまでの説明はすぐに出てくるので、探してみてください。


ソースコード

さて、python3とOpenCVの環境が整ったら次はプログラミングです。今回はホントにチャカチャカっと書いたコードなので、全然綺麗ではありませんのでご容赦ください。ファイル選択の際文句が出たりもしますが、とりあえず動きます。

エディタなどで以下のコードをテキストファイルにコピぺして、適当なファイル名をつけて、拡張子を.pyにすれば準備完了です。

import cv2
import numpy as np
import tkinter
from tkinter import messagebox as tkMessageBox #python3
from tkinter import filedialog as tkFileDialog #python3


def pathname(fullpath):
    n = fullpath.rfind('/') + 1
    return fullpath[:n]

def select():
    root=tkinter.Tk()
    root.withdraw()
    fTyp = [('JPEG file','*.jpg')]
    iDir = '/Users/ユーザー名/' #自分のユーザー名を入れてください
    filename = tkFileDialog.askopenfilename(filetypes=fTyp,initialdir=iDir,title = "ファイル選択")
    iDir = pathname(filename)
    return filename


filenameselect = select()
img = cv2.imread(filenameselect)


mlen = 250
size = img.shape
roi_UL = img[0:mlen, 0:mlen]
roi_UR = img[0:mlen, size[1]-mlen:size[1]]
roi_LL = img[size[0]-mlen:size[0], 0:mlen]
roi_LR = img[size[0]-mlen:size[0], size[1]-mlen:size[1]]
roi_CC = img[round((size[0]-mlen)/2):round((size[0]+mlen)/2), round((size[1]-mlen)/2):round((size[1]+mlen)/2)]

width = mlen*3
height = mlen*3
imageArray = np.zeros((height, width, 3), np.uint8)
count = np.array([[0,0],[0, mlen*3],[mlen*3, mlen*3],[mlen*3, 0]])
cv2.fillPoly(imageArray, pts=[count], color=(255,255,255))

imageArray[0:mlen, 0:mlen] = roi_UL
imageArray[0:mlen, mlen*2:mlen*3] = roi_UR
imageArray[mlen*2:mlen*3, 0:mlen] = roi_LL
imageArray[mlen*2:mlen*3, mlen*2:mlen*3] = roi_LR
imageArray[mlen:mlen*2, mlen:mlen*2] = roi_CC

savefile = filenameselect.replace('.jpg', '_4cut.jpg')
cv2.imwrite(savefile,imageArray)



実行結果

ターミナル上で上のプログラムがあるフォルダに行き、

python3.py ファイル名.py

とかで実行すると、画像ファイルを選択するダイアログが現れます。ダイアログが前面に出てこないことがあるので、下のDocからPythonというアイコンを選んでみてください。JPEGファイルしか選べませんが、プログラムの中の15行目を*.pngとかすれば多少他のファイル形式も選べます。

切り取りたいファイルを選択すると、同じフォルダの中に

オリジナルファイル名_4cut.jpg

というファイルが出来上がります。

出来上がりは下のようになります。元の画像から四隅250x250ドット分と真ん中を250x250ドット分を切り取って750x750ドットのファイルを作ってくれます。ホントにこれだけです。

test_4cut


ちなみにこれは、タカハシの新フラットナーで撮ったFS-60CBの星像です。カモメ星雲ですが現在画像処理中のものです。ほとんど流れていないことがわかると思います。元々の動機が、新旧フラットナー、レデューサー、エクステンダーでの四隅の星像を比較したくて、いちいちやるのがめんどくさいのでプログラミングに走ったというわけです。

今回のプログラムは色々制限もありますが、簡単なプログラムなので中身もすぐにわかると思います。各自で適当に改良してみてください。

例えば、26行目の250を他の値に変えると切り出してくれる画像の大きさが変わります。
ちょっと頑張れば上下左右も合わせて8方向の切り取りとかもできると思います。

画像処理プログラミングの取っ掛かりとしては、いい練習になるかと思います。

(追記: Matlabバージョンの切り出しプログラムも書いています。スターベースのブログと同じ形式で5x5マスでフルサイズとAPS-Cサイズを見るものです。よかったらこちらもどうぞ。)


参考ページ

以下のページを参考にしました。
どのページもわかりやすくて、とても役に立ちました。どうもありがとうございました。 

冬支度のために、リモート撮影環境を再度整えようとしているのですが、Windows 10のアップデートでStick PC上でいくつかこれまで動いていたソフトが動かないなどのトラブルが発生したので、メモがわりに対処法を書いておきます。


IMG_0717


RDP wrapper

Stick PCはモニタなどもないためリモート使用が前提なのですが、home editionのためRemote Desktopのサーバー側にはなれないため、RDP wrapperというソフトを使って外部からRemote desktopで接続していたのですが、Windows 10のCreator updateで使えなくなってしまいました。対処法はまずは
 
https://github.com/stascorp/rdpwrap/files/1236856/rfxvmt.zip

からrfxvmt.dllを拾ってきます。これを解凍して中身のrfxvmt.dllをc:¥Windows¥System32に入れるのですが、セキュリティーのため簡単には入りません。まず、コントロールパネル->システムとセキュリティ->ユーザーアカウント制御設定の変更に行き、カーソルを一番下まで下げる。エクスプローラーか何かで、c:¥Windows¥System32¥rfxvmt.dllを右クリックしてプロパティの「セキュリティー」タグで自分がフルコントロールできるようにし、その後リネームします。その後拾ってきたrfxvmt.dllをコピーします。ユーザーアカウント制御設定の変更を元に戻すのを忘れないようにしてください。

次に、RDP wrapperを再度ダウンロードしておきます。解凍後、uninstall.batを右クリックの管理者権限で実行してアンインストールしてから、再度install.batを右クリックで管理者として実行してインストール。最後にupdate.batを右クリックで管理者として実行。

これでアクセスできるようになるはずです。


Astrotortilla

星図とのマッチング、Plate solvingで使っていたAstroTortillaがどうもうまく動きません。「Tool」の「Log viewer」でみても数秒でNo solutionと出てしまいます。ログレベルを「Info」から「Debug」にしてみてみると1073741792というコードとともに止まってしまっています。googleで調べるとどうやらファイルの書き込み権限か何かの問題のようです。cygwinが怪しそうなので、再度インストールすることにしました。ただし、そのままインストールするだけではすぐに終わってしまってcygwin関連を書き換えないのでやはり同じエラーコードで止まってしまいます。まずはインストールされているcygwinをリネームするなり削除するなりして、cygwin以下が新規でインストールされるようにします。その後以前の記事のようにインストールし直します。データのダウンロードに再度数時間かかりますが、これをしない限り直りませんでした。cygwinも含めてインストールをしなおすと、無事に動くようになりました。



Windows10 設定変更ツール

今回のアップデートで懲りたのと、以前にも観測で使おうとしてアップデートが始まったことがあったので、今回「Windows10 設定変更ツール」v1.4というアプリを使って、アップデートを自動でしないようにしました。設定したところは作者HPの説明にあったように3箇所で、「ダウンロードとインストールを通知」「自動メンテナンスを無効にする」「Cortanaを無効にする」のみです。これで不意なアップデートは停止できるはずです。

赤道儀の遠隔操作のためにStick PCを使うことがあります。Stick PCはモニターを持っていないので、いずれにせよなんらかの遠隔の画面表示が必要になります。特に、冬場の遠征ではとてつもなく寒いので、暖かい車の中から遠隔操作するというスタイルを一度経験すると、ずっと外で待っているというスタイルには戻ることができません。

そのための接続としてこれまで、
  1. Stick PCの無線LANを無理やりルーター化する
  2. 超小型の安価な簡易ルーターを使ってみる
  3. BUFFALO製のポータブル無線LANルーターで接続する
と試してきました。1.はUSB3.0カメラの雑音で接続が不安定になり、5GHzに逃げようとするもできないことがわかり断念。2.は付属ソフトがこなれていなくてバグだらけで設定が大変なのと、Windowsが動いているPCのUSBに挿さなければならず、USBポートを無駄に使用してしまうのでイマイチ使用頻度が下がってお蔵入り。3.は接続がどうも安定でなく、時々Remote Desktopでの接続が切れてしまうのが悩みでした。

IMG_2997


ELECOM製は変な切断はないと聞いていたので、ちょと前に5GHzのポータブルの無線LANルーターWRH-583GN2-Sを購入してみました。色をグリーンにしたのは単に安かったからです。ブラックはなぜか倍近くの値段がしました。パッと使ってみた限りでは変な切断などはなさそうです。

実際にテストして良かったと思ったのは、BUFFALO製に比べてはるかに高機能で、普通の家庭用無線LANルーター程度のことができてしまいます。例えば
  • SSIDの名前の変更
  • パスワードの変更
  • 管理者の名前の変更
  • LAN側のIPアドレスの範囲を任意に変更することができる
など結構基本的なことが普通にできます。BUFFALO製はこれらのことがことごとくできなくて、本当に簡易使用を前提としているようで不満だったのですが、ここら辺のことが見事に解決されました。特に、
  • MACアドレスを見てDHCPの割り当てIPアドレスを固定できる
のが便利で、やっとこれでその場でIPをDHCPの範囲内でやみくもに打って、Remote DesktopでStick PCを探し出す必要がなくなりました。

逆にできると思っていたのにできなかったことが、
  • 無線でWAN側につないで、LAN側からもインターネットに接続する
という、BUFFALOではできていたことができません。WAN側は有線使用が前提みたいです。これは結構痛くて、遠征時にiPhoneのテザリングなどで外につなぐことができなくなります。遠隔地では基本Stick PCに接続できればいいだけなので、外につなぐ場合は操作する側のPCを直接テザリングでiPhoneにつないでしまえば問題ないので、ほとんど大丈夫なのですが、Stick PCにアプリを入れたい時だけは困ってしまいます。それでも遠征するような光害がないところは、携帯の電波も貧弱なので同じかもしれません。まあ、痛し痒しです。

こういったことは買ってみて自分で試さないと、事前に調べただけだとなかなかわからないんですよね。それでもELECOMの方は、実際に使うときのために事前に柔軟に設定できるので、使用時に無駄な時間を取ることなく、何より安定性は優れていそうなので、すぐに実践投入できそうです。アマゾンのレビューで熱暴走の心配が報告されていましたが、これはBUFFALO製も同じような評価でした。夏場は外に出て星を見ていた方が楽しいのでそれほど遠隔操作で使う機会がなく、むしろ冬場の使用が多いのでそれほど問題ないと思います。


このページのトップヘ