あぷらなーと


あぷらなーとの写真ブログ
by あぷらなーと
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
あぷらなーと
「自然写真大好き」
HNあぷらなーと が

いろんな写真ネタを
のんびり語ります。

気合い入れすぎると
続かないので、
「ぼちぼち」いきます。

生息地:香川・徳島
カテゴリ
最新のコメント
大事にならず良かったです..
by G at 16:36
> にゃあさん え..
by supernova1987a at 09:14
> オヤジさん 光..
by supernova1987a at 09:09
これがスプリッターの実力..
by にゃあ at 01:30
凄いですね! 撮影時間..
by オヤジ at 00:11
> けむけむさん ..
by supernova1987a at 22:04
星雲撮影おめでとうござい..
by けむけむ at 17:47
> Gさん 「su..
by supernova1987a at 14:11
> にゃあさん 不..
by supernova1987a at 14:05
> オヤジさん ほ..
by supernova1987a at 14:00
以前の記事
お気に入りブログ

タグ:画像処理 ( 37 ) タグの人気記事

晴れない夜は基本の復習⑦

★台風の接近に伴い

台風16号が日本列島に接近中です。皆様、お気をつけください。
さて、というわけで、せっかくの休日ですが

 ○天体写真撮影・・・無理
 ○風景写真撮影・・・無理
 ○バードウォッチング・・・無理
 ○部活の生徒指導・・・お休み(※注:私、学校の教師ではありません)

うーん

こ、これは

まさに

「Delphi日和」っ!

すみません。負け惜しみです。

★先日封印を解いたDelphi7で
f0346040_20040886.jpg
先日実家の物置にある「封印箱」から急遽召還したDelphi7Proですが、ゴソゴソと作業を始めました。
とはいえ、プログラミングのブランクが10年以上あるので、まだヨチヨチ歩きのヒヨコ状態。

★今週の目標は

欲張ると失敗するので、こんなもんですかねぇ。
①ASI1600MC-CoolのRAWデータをきちんと読む
 (どこまでがヘッダで、どういう風に画素データが格納されているのか)
②とりあえず、4画素、たった4画素分で良いのでRAW現像したい。

★少し慣れてきました

累計で6時間ほどDelphiに触ったでしょうか。
徐々に、色々思い出してきました。

まずは、Delphiの統合開発環境下のエディタオプションを「かつての」お気に入り設定に復旧です♪

 予約語とユーザ変数が同じ色だったり
 生きた行とコメント行が同じ色だったり
 数字の1と大文字のIと小文字のlが同じ形だったり

などすると、(乱視と近視と老眼の三重苦が始まった)あぷらなーとがコーディングすると、ミススペルしまくりますので、ゴソゴソと設定を変えます。
ちなみに背景は絶対に『黒』派です。(ソラリス使っていた若い頃は白背景派だったんですがね)
そうそう、フォントも大きめで(笑)。
f0346040_02441318.jpg
うん。こんな感じかなぁ?だいぶ見やすくなりました。


★データを少しづつ読み込んで調査した結果

慎重にASI1600MC-COOLのRAWデータを読み込んでみた結果、次のことが分かりました。

f0346040_02550668.jpg
○判明した事・その①

ASI1600MC-COOLのRAWファイル(FITS)は、どうやら
大きく分けて3つのブロックに分かれているみたいです。

 Aブロック:撮影データなどのヘッダ
 Bブロック:ブランク領域
 Cブロック:撮像データ(各画素の輝度データ)

○判明した事・その②
 Aブロックについて

撮影データのヘッダは、ASCIIコードによる1バイト×80=80バイトで1項目を表しているみたい。
f0346040_03002587.jpg
基本的なレコード構造
【パラメータ名】 【=】 【値】 【/】 【コメント】

第1パラメータ:SIMPLE 
 ASI1600MC-Coolで撮影した物は全て値として「T」が格納されていました。調べてみると、SIMPLE変数は、標準FITSかどうかを表すものみたいです。ああ、なるほど「True」だという訳ですか♪
ちなみにコメント欄には撮影時刻が秒まで記録されています。

第2パラメータ:BITPIX
 画像が何ビットで記録されているかを表すパラメータのようですね。上記の例なら「16bit記録」を表しています。

第3パラメータ:NAXIS
 コメントにDimensionalityと書かれているので、明らかに何次元データかを表していますね。上記の例なら2次元データというわけです。というかデジカメなんだから2次元に決まってます。

第4パラメータ:NAXIS1
 第1軸の変域(ASI1600MC-COOLなら長辺のピクセル数)を表します。4656ピクセルですね♪

第5パラメータ:NAXIS2
 第2軸の変域(ASI1600MC-COOLなら短辺のピクセル数)を表します。3520ピクセルですね♪

第6レコード:COLORTYP:
 カラータイプの略でしょうか?ベイヤー配列の型が格納されています。はい、確かに「GRBG」型だと記録されていますね。(もう、ステライメージさん、ここ読んでくれたら自動でデモザイクできるのに~!)

第7パラメータ:CCD-TEMP:
 本来はCCD用のフォーマットなんでしょうが、CMOSセンサーの冷却温度が記録されています。「-10℃」という訳ですね。

第8パラメータ:YBININNG:
 Y軸方向のビニング数なんでしょうね。ちと自信がありません。

第9パラメータ:INSTRUME
 インスツルメントの略でしょうね。撮影機材名というわけですね。「ASI1600MC-COOL」と記録されています。

第10パラメータ:DATE-OBS
 撮影日時だと思うんですが、ちと妙ですね。第1レコードの時刻と9時間ズレています・・・・ああ!時差ですね。というわけで、こちらの時刻は世界標準時のようです。

第11パラメータ:SWCREATE
 ソフトウェア・クリエイトでしょうか?撮像ソフト名ですね。「SharpCap」と記録されています。

第12パラメータ:EXPTIME
 露光時間ですね。秒単位で記録されているようです。

第13パラメータ:BZERO
 これ、謎のデータです。今のところ、これが「ゼロ点補正」(オフセット値)ではないかと睨んでいます。「32768」ねえ・・・・・。一見変な数値に見えて、これ、16進の2バイト表記なら「80」・「00」となり、とてもキリの良い数値ですからあり得そうです。そのうち真面目に検証してみましょう。

第14パラメータ:EXTEND
 拡張フラグ??・・・一応True値が書き込まれており、コメントにも「Extensions are permitted」(拡張機能が許可されている)と記録されていますが、意味不明です。

第15パラメータ:XBINNING
 X軸方向のビニング数なんでしょうが、やはり自信がありません。

第16パラメータ:YPIXSZ
 撮像素子のY方向のピクセルサイズのことでしょうね。「3.8」とありますので単位はマイクロメートルのようです。

第17パラメータ:XPIXSZ
 撮像素子のX方向のピクセルサイズでしょう。「3.8」ですね。
 
第18パラメータ:END
 ここでヘッダ要素が終了することを表すようです。

○判明した事・その③
 Bブロックについて

これ、FITSの仕様なのか、カメラ側の仕様なのか分かりませんが、ちょうどAブロックと同じ広さの領域が「スペース」(ASCIIコードの0x20)で埋め尽くされています。そもそも80バイトのパラメータ×36で1レコードという規格なのかもしれませんね。

○判明した事・その④
 Cブロックについて

いよいよここからが、『本丸』(撮像データが記録されているエリア)のようですねぇ。
さて、ボチボチ読んでみましょうか・・・。
ASI1600MC-COOLは、AD変換した段階で12bitデータになり、それを16bitデータとして書き出していると広告に書かれているので、2バイトで1ピクセルの輝度を表しているのだろうと勝手に予測。

2バイト分を呼び出して、最初の1バイト分を上位バイト、その次の1バイト分を下位バイトと見なして10進整数値に変換を試みます。

ゴリゴリとコードを書いて
・・・・えいっ!っと。
f0346040_04112544.jpg
第1ピクセルの輝度データは、16進で「A632」。10進に直して「42546」と呼び出せました。
もしも16ビットをフルに埋めると、輝度データの上限は16進で「FFFF」で10進なら「65535
」。一応その中には収まっているので、あり得ない値ではないし、まあ良しとします。(ホントか?)

★さて・・・・と

「敵」の正体は、ほぼ掴めてきました・・・が。これ、客観的に言って、「1600万人の敵兵のうち、1人だけ捉えた」って状態ですよねぇ。
むむむむむ。ここから、一体どう「攻め」ようか・・・・・?????最大の障壁は、昔と違って、・・・ろ、ロジックが沸いてこないっ!
うぇーん(涙)。
よし、今日のところは・・・・寝ます。


by supernova1987a | 2016-09-19 04:46 | 天体写真 | Comments(2)

晴れない夜は基本の復習⑥

★Delphiのリハビリ開始っ!
ついにDelphiの封印を解いてしまい、『なんか開発するぞ』と大見得を切ったは良いけれど、なんだか最近の皆様のコメントを拝見していると、出てくる用語の系統から「ただ者じゃ無い感」が伝わってきて、ビビってるあぷらなーとです。

おそらく、「えっ?『Hello World』のコンパイルが通らない状態から、なにか開発する気?・・・正気か?」と心配(?)されていると思いますので、週1ペースではリハビリ状況を掲載することにしますねぇ。ちなみに現在の環境でプログラミングに充てられる時間は、毎週月曜日(本業の定休日♪)の数時間足らずです。

★リハビリ1日目
<目標>
 ①とにかく発掘したDelphiの開発環境を稼働させる。
 ②入門書1冊の重要なところだけ読破。
 ③最終目的地に向けて「第一歩」を踏み出す。

<結果>
 なんとか目標クリアです。

・・・というわけで

★最初の一歩♪
とにもかくにも、まずASI1600MC-COOLで撮像したRAWデータを読めないことには進みませんので、ここに突破口を開けることにしました。

出でよDelphi!!
うりゃー!
f0346040_03073931.jpg
色んな本や過去のソース(分野は全然画像処理と違いますが)見ながら、度重なるミススペルと文法エラーに耐えながらガシガシコードを書きます。
色々初歩的な感覚が少しばかりよみがえってきました。
いや、ブランクがブランクだけに、最初は変数への代入が「=」なのか「==」なのか「:=」なのかで右往左往する位の酷さでしたが、我ながらよく頑張りました♪

コンパイル!ラン!

・・・うっわ。久しぶりに見たけどDelphiってコンパイル速っ。
まさに目にも止まらぬ速さですねぇ。
f0346040_03142330.jpg
ボタン1を実行すると、すぐにファイルを指定する窓が開いて・・・
ASI1600MC-COOLのRAWファイルをクリックすると・・・・

よっしゃ~!
f0346040_03162591.jpg
FITSファイルのバイナリをゴリゴリ読み込んで16進で表示しながら、ヘッダ部分から撮影データを抜き取って表示することに成功♪
ささやかですが、確実に「一歩だけ」前に進みました。

はぁはぁ、ぜぇぜぇ・・・。今週のリハビリは、ここまでですね。

★★★以下、進展した場合だけ、続く予定★★★


by supernova1987a | 2016-09-13 03:23 | 天体写真 | Comments(8)

晴れない夜は基本の復習⑤

★先日来やっている・・・
EXCEL-VBAを使ったRAW現像『なんちゃってシミュレータ』ですが、
今回はいよいよノイズデータの再現機能を実装してみました。

仮定したノイズは下記の通り

①ダークノイズ
 いわゆるホットピクセルが固定セルに生じると仮定
②ショットノイズ
 光電子の量子論的効果により不可避なランダムノイズを仮定
③リードノイズ
 CMOSの各ラインを読み出した際に正規分布に基づきゲイン変動すると仮定


★たとえばこんな感じになりました

左画像:仮定した元画像(これが本来の天体の像だと仮定)
中画像:上記①②③のノイズを含めて記録されるRAWデータのシミュレート
右画像:標準的なデモザイク処理で現像した場合のシミュレート
f0346040_19534798.jpg
『邪ノイズ』(横しまノイズ)とホットピクセルがきれいに再現できました♪


★となれば、すこし本気出して・・・・

Excel+VBAでは、上記の処理だけで(たった1600画素で)30秒も演算時間がかかるので、その1万倍の画素数を持つASI1600MC-COOLだと83時間(!)もかかる計算になって、お話になりません。・・・というか、4000行のEXCELワークシートとかあり得ない(笑)。そろそろ『封印』を解く時がやってきたようです。


★出でよ!懐かしのDelphi7っ!!

実家の物置を2時間探し回って、ついに発掘しました。
約10年間封印していた「MY開発環境セット」♪
f0346040_20040886.jpg
2002年(かな?)リリースのボーランドDelphi7プロと、参考文献の山です。
いやー。まさかコイツらがゾンビのごとく目を覚ます時が来るとは・・・・・。
・・・あ、くれぐれも私はプログラマーでもSEでもありません。業務の必要に迫られて(泣く泣くボランティアで)数千~数万行程度の小規模アプリのソース数本書いたことがあるだけの素人です。
f0346040_20084216.jpg
ああ、書籍に貼りまくってある付箋が昔の(2週間で15kg痩せた)地獄の日々を思い出させます。
あの思い出したくない日々を繰り返すつもりはありませんが、のんびりと復習を始めるとします。とりあえず付箋貼ってるところだけ読み返して、自分が昔書いたソースを読めばいいか・・・的な・・・・。

さて、まずは入門書から・・・・・・・・・

・・・ん?あれれ??

うぇーん。
な、なにも覚えていない!!

そうか・・・人間、イヤなことは積極的に忘れる動物だと言うしなあ・・・。


★そんな事よりも、そもそも・・・

ああ、もっと大切なことがありました。
Delphi7はWindows98SEとか2000とかが主力だった時代の『遺物』。
そもそも、Windows10で動くのか?!

・・・・で、早速やってみた。
「インストールの上限回数を超えた」ので自動アクティベーションできないとか、インストールも開発環境の立ち上げも全て管理者権限でやらないとエラーが出たりとか、些細なトラブルはありました・・・が!!

ばば-ん!
f0346040_20191925.jpg

おかえり♪Delphi
なんか色んな意味で泣きそう・・・・。
じゃじゃ馬のDelphi7よ。まあ、お手柔らかに頼むわ・・・・。

えっ?今のあぷらなーとのコーディングスキルですか?

ええ・・・と、正直言って良いですか?

何も見ずにコードを書いたら『Hello World』がコンパイル途中で止まった!・・・というレベル。

エラーメッセージの意味が分からなくて(Delphiのエラーメッセージって核心を突いてこないんですよねぇ)よく見ると、行末に「;」忘れてることに気づいた時には、自分のアホさ加減に笑ってしまいました。
もう、PascalとBasicとFORTRANとCとSQLの断片的知識が「ちゃんぽん」になってることを再認識しました・・・です、はい。

★★★以下、不定期掲載★★★
ここからは勉強の日々なので、すぐには記事が続きそうにはありませんなぁ(笑)。
・・・別ジャンルの記事ばかりが長期間続いたら、今回の記事のこと、暖かく忘れてやってください。


by supernova1987a | 2016-09-12 20:45 | 天体写真 | Comments(6)

晴れない夜は基本の復習④

★なんちゃってベイヤー現像シミュレータ
EXCELを使った手抜きプログラミングで根幹部分が完成しましたが、次の目標は、扱える画素数(今は40×40=1600画素)を増やすことと、実際の画像を扱えるようにすることですねぇ。

★元画像として、本物の写真を・・・
とりあえず、本物の写真を元データとして扱いたいですね。
しかし、画像の読み込みスキルはまだありません。BMPファイルなら一応「原理」は分かっているつもりですが、コーディングが面倒くさそう・・・。というわけで、今回は人様の力にすがることにします。
同じようなことを考える人もいるものだと驚いたのですが、なんと「BMPファイルから各色の輝度情報を読み込んでCSVファイルに変換する」という神のようなフリーソフトが公開されていました!!
その名も「BMP2CSV」
http://www.vector.co.jp/soft/win95/art/se108144.html
試してみると、あっけなくRGB各チャンネルの輝度情報をCSVファイルに展開してくれました。
ここまで来ると、前回のコードを少し変更すれば実際の写真を元データとしてExcel上にセル画像として表示できます。

★元画像として「本物のM27」を・・・
早速、実際に自分が撮ったM27の画像を元ネタとして変換してみます。
f0346040_04175108.jpg
おお。たった1600ピクセルですが、それらしく見えますね。手書きとは訳が違う・・・・。

★なんちゃってシミュレータにかけてみます
ベイヤーデータとして各チャンネルに記録されたイメージは・・・
f0346040_04235372.jpg
これを画素補完して・・・・・
f0346040_04244267.jpg
デモザイクすると・・・・
f0346040_04250373.jpg
左から「元画像」、「ベイヤーRAWデータシミュレート」、「デモザイク画像シミュレート」です。
解像度が大幅に落ちて、偽色まみれになっていることが分かりますが、思ったよりもきれいですね。ちゃんとM27ぽく見えます。

★M27の中心部でも試してみます
なかなか面白いので、M27の中心部でも試してみます。
f0346040_04303622.jpg
左から「元画像」、「ベイヤーRAWデータシミュレート」、「デモザイク画像シミュレート」です。
なるほど、なるほど・・・なんか色々と直感的に分かってきました♪

・・・・なんだか『沼』に陥りそうな気配・・・・・(笑)



by supernova1987a | 2016-09-09 06:02 | 天体写真 | Comments(8)

晴れない夜は基本の復習③

★前回では・・・
天体画像に見立ててExcelに手書きした絵をベイヤー画像に変換するところまでできました。
f0346040_00315872.jpg
★ベイヤーデータを各画素に割り振ります
ベイヤー配列に記録された輝度データをRGB各画素の配列に割り振ってみます。
これはもう、コーディングの必要がありませんね。そのまま各画素のセルから参照させるだけです(笑)
(こういう手抜きをするためにExcelを選んだわけでして・・・・。)
f0346040_00443947.jpg
ちなみに、各画素の様子を見るために、次のようなコードで視覚化してみます。
-------------------------------------
'///////////////R画素データのイメージ化処理/////////////
X0 = 4
Y0 = 94
Yshift = 94 - 49 'ベイヤーR画素データセルとのシフト量
For I = 1 To 40
X = X0 + I
For J = 1 To 40
Y = Y0 + J
R = Cells(Y - Yshift, X).Value
Cells(Y, X).Select
With Selection.Interior
.Color = RGB(R, 0, 0)
.Pattern = xlSolid
End With
Next
Next

'///////////////G画素データのイメージ化処理/////////////
X0 = 47
Y0 = 94
Yshift = 94 - 49 'ベイヤーG画素データセルとのシフト量
For I = 1 To 40
X = X0 + I
For J = 1 To 40
Y = Y0 + J
G = Cells(Y - Yshift, X).Value
Cells(Y, X).Select
With Selection.Interior
.Color = RGB(0, G, 0)
.Pattern = xlSolid
End With
Next
Next

'///////////////B画素データのイメージ化処理/////////////
X0 = 90
Y0 = 94
Yshift = 94 - 49 'ベイヤーB画素データセルとのシフト量
For I = 1 To 40
X = X0 + I
For J = 1 To 40
Y = Y0 + J
B = Cells(Y - Yshift, X).Value
Cells(Y, X).Select
With Selection.Interior
.Color = RGB(0, 0, B)
.Pattern = xlSolid
End With
Next
Next
--------------------------------------
ああ、何の工夫も無いベタなコード・・・・。ま、動けば良いんです。リハビリですから。
f0346040_00481969.jpg
はい。各画素を通すとどのような画像が見えているのかが演算できました。

★デモザイクの準備
RAWデータを現像するときには上記のようなデータを元にカラー画像に変換しているわけですが、このままではマズいですね。RGBどの画素も「スカスカ」なので、その隙間を補完してやる必要があります。補完処理はコードを書かずにEXCELそのままで行くと楽ちんです。
f0346040_00593418.jpg
RGB全ての画素に共通した処理として、周りを4つの有効画素に囲まれている位置(★マーク)には、周りの4つの平均値を代入してみました。(たぶんコレは正解)
Gデータはこれで全ての隙間が埋まることになります。ただしRとBは画素数がGの半分しか無いので、周りに2つの有効セルしか無い部分(○と△)には上下もしくは左右に隣接する2つのセルの平均値を代入してみました(これが実際の処理かどうかは自信がありません)。

さらに補完したデータを視覚化するコード(参照先が変わるだけで補完前の表示コードと同じ物)を通せば・・・
f0346040_01050975.jpg
各色とも滑らかな画像に変わりました。
ちなみに40×40のマトリクスのうち外周部分がグレーになっているのは、隣接するセルが足りず補完が不可能なエリアだからです。
そういえば、ASI1600MC-COOLと同じ撮像チップを搭載しているオリンパスの某デジタル一眼レフでは、総画素数1685万画素で有効画素数1628万画素と公称されていますが、この減少分が外周部分だと言うわけでしょうね。

★いよいよRGBデータを合成します
ここまでできると、あとは簡単ですね。補完演算した各セルの値をRGBの輝度と見なして表示させるコードを書きます。
---------------------------------
'///////////////デモザイク処理イメージ表示処理/////////////
X0 = 90
Y0 = 229
RYshift = 229 - 139 'ベイヤーR画素補完演算セルとの行シフト量
RXshift = 90 - 4 'ベイヤーR画素補完演算セルとの列シフト量
GYshift = 229 - 139 'ベイヤーG画素補完演算セルとの行シフト量
GXshift = 90 - 47 'ベイヤーG画素補完演算セルとの列シフト量
BYshift = 229 - 139 'ベイヤーB画素補完演算セルとの行シフト量
BXshift = 90 - 90 'ベイヤーB画素補完演算セルとの列シフト量
For I = 2 To 39 '左端と右端は処理から外す
X = X0 + I
For J = 2 To 39 '上端と下端は処理から外す
Y = Y0 + J
R = Cells(Y - RYshift, X - RXshift).Value
G = Cells(Y - GYshift, X - GXshift).Value
B = Cells(Y - BYshift, X - BXshift).Value
Cells(Y, X).Select
With Selection.Interior
.Color = RGB(R, G, B)
.Pattern = xlSolid
End With
Next
Next
------------------------------
・・・と、こんな感じでしょうか。
f0346040_01163334.jpg
ベイヤーデータのデモザイク処理が完成しました♪

★結論
いや、実際どうでも良いことなんですが、結局
f0346040_00094342.jpg
こんな元画像をASI1600MC-COOLのようなGRBG型ベイヤー素子で撮影すると、上記のようなRGB画像が得られることがシミュレートできました。
・・・やっぱり2×2ピクセルくらいの星像を入射させても、デモザイクの原理から言ってローパスフィルターなしでは偽色が発生するのは仕方ありませんね。
また、相当に解像度が低下していますが、これもベイヤー素子の宿命でしょう。

★というわけで
「なんちゃってベイヤー現像シミュレータ」
EXCELだけで完成しました。根幹ができるとあとは楽なので、ここにノイズ付加機能やらビニング機能やらを書き加えていけば色々とロジックの検証ができます。

・・・・・ああ、こんな簡単な処理に大汗かいてしまった。
・・・正直、13年前に戻りたいです(涙)。


by supernova1987a | 2016-09-08 00:37 | 天体写真 | Comments(2)

晴れない夜は基本の復習②

★今後の諸々に備えて・・・
最初にお断りしておきます。
特に『ASI1600MC-COOL使い』の皆様は、「なにか秘策が公開されるのか!?」などと期待しないでくださいねぇ。
ノイズの出方とか、画像処理の諸々を考えるときに「簡単なシミュレーションができると良いなあ」と思った程度なので、気の長いお話です。
VBAのコードとか出てきますが、あぷらなーと自身へのメモなので、参考(する人いないか・・・)にはしないでください。

★リハビリ開始♪
UNIX使って宇宙物理の研究をしていた学生時代や、本業の傍ら自前のソフトをゴソゴソ作っていた若手の頃は、プログラミングが嫌いではありませんでした。しかし、その分野から完全に足を洗って早13年。今ではすっかり素人のおっさんに戻ってしまいました。
とりあえず、ベイヤー配列のデータがどのように記録されていて、どのようにデモザイクされているのかをシミュレーションすることから始めてみます。
・・・言語ですか?得意なのはFORTRANとPASCALです(でした)が、そういう時代では無いでしょうから、最近のPCの有り余る演算速度を当てにして『まさか』の「EXCEL一本槍」で行ってみます。

★まずやりたいのは、こんなこと
エクセルのワークシートにですね。簡単な画像を描いて、マクロボタンをポチッと押すと、
 ①ベイヤー配列にどのように格納されたかが表示されて
 ②RGB各画素データがどのように記録されたかが表示されて
 ③RGB各画素の欠損位置のデータを補完して
 ④デモザイク画像に変換してワークシートに表示
・・・という簡単な処理です。うーんリハビリに最適。

★元画像として・・・
はい、まだビットマップを読み込むとかそんな『高度な』ことはしません(できません)ので、エクセルのシートをキャンバスに見立てて手で描きます(笑)
f0346040_00094342.jpg
わはは。モロ手抜きの酷い素材ですね。想定したのはM20(らしきもの)ですが、それっぽく見えますか??

★ASI1600MCのベイヤー配列は
確か「GRBG型」でした。よって、撮像CMOSの表面のカラーフィルタがこんな感じに並んでいると想定できますね。
f0346040_00152661.jpg
★RAWベイヤーデータ記録のシミュレート
上記の『M20もどき』画像を40×40ピクセルのGRBGベイヤー素子に入力して8bit記録するとどうなるか、EXCELのVBAで計算してみます。
ちなみにEXCELのVBAマクロは非常に強力なので、ワークシートにマクロボタンを貼り付けて、たとえば下記のようなコードを打ち込むだけで・・・

-------------------------------------------------------------
'//////////////オリジナルカラー配列の定義とロード///////////////
Dim Rmtx(40, 40) As Integer
Dim Gmtx(40, 40) As Integer
Dim Bmtx(40, 40) As Integer
X0 = 4
Y0 = 4
For K = 1 To 40
X = X0 + K
For L = 1 To 40
Y = Y0 + L
c = Right("000000" & Hex(Cells(Y, X).Interior.Color), 6)
R = Val("&H" & Right(c, 2))
G = Val("&H" & Mid(c, 3, 2))
B = Val("&H" & Left(c, 2))
Rmtx(K, L) = R
Gmtx(K, L) = G
Bmtx(K, L) = B
Next
Next

'//////////////ベイヤー配列セルへ数値転送///////////////
X0 = 47
Y0 = 4
For K = 1 To 40 '---列サーチ
X = X0 + K
Gflgx = K Mod 2 '---列の偶奇判定
For L = 1 To 40 '---行サーチ
Y = Y0 + L
Gflgy = L Mod 2 '---行の偶奇判定
If (Gflgx = 1) Then
If (Gflgy = 1) Then
Cells(Y, X).Value = Gmtx(K, L)
Else
Cells(Y, X).Value = Bmtx(K, L)
End If
Else
If (Gflgy = 1) Then
Cells(Y, X).Value = Rmtx(K, L)
Else
Cells(Y, X).Value = Gmtx(K, L)
End If
End If
Next
Next
-------------------------------------------------------------------

簡単に、画像からRGB各色の輝度を数値変換して、ベイヤー配列に見立てたセルに数値を記録してくれます。
ちょうどこんな感じですね♪

f0346040_00243997.jpg
次に、その数値を8bitの輝度データだと見なして下記のようなコードでモノクロデータにすると、ベイヤーRAWデータの完成です。

--------------------------------------------
'///////////////ベイヤーRAWデータ再現処理/////////////
X0 = 90
Y0 = 4
Xshift = 90 - 47 'ベイヤー配列パターンセルとのシフト量
For I = 1 To 40
X = X0 + I
For J = 1 To 40
Y = Y0 + J
W = Cells(Y, X - Xshift).Value
Cells(Y, X).Select
With Selection.Interior
.Color = RGB(W, W, W)
.Pattern = xlSolid
End With
Next
Next
------------------------------------------------------
f0346040_00315872.jpg
はい。あっという間にカラー画像を8bitベイヤー画像に変換できました。
うーん。EXCELって凄いなあ・・・・。
こんな用途に使う奇特な人は居ないと思いますが・・・・ね。

★★★以下続きます★★★

by supernova1987a | 2016-09-07 00:07 | 天体写真 | Comments(8)

晴れない夜は基本の復習①

★台風一過の秋空・・とはならず
今回の休日は曇りでした。新たなテスト撮影ができないので、基本に立ち返って色々勉強し直すことにします。
さて、ASI1600MC-COOLのノイズ特性は極めて優秀です。
・・・が、前愛機ASI174MC-COOLとどの程度違うのでしょうか。
実際の天体撮影画像で比較してみます。

条件(撮影日)が異なるので直接比較はできませんが、基本的データは次の通り

撮影月:ASI174MC-COOL:2016年5月 ASI1600MC-COOL:2016年8月
望遠鏡:VMC260L+レデューサVMC+LPS-P2 (両者共通)
冷却温度:ASI174MC-COOL:-15℃ ASI1600MC-COOL:-10℃
ゲイン:ASI174MC-COOL:300 ASI1600MC-COOL:400
露出:15秒 (両者共通)
撮影対象:亜鈴状星雲M27(両者共通)
画像処理:レベル調整のみ(ダーク減算も無し)


★ASI174MC-COOLの撮って出し(ノートリ)
f0346040_23252376.jpg
いや、これでも驚異的な写りだと思うんですよ。市街地ニワトリのたった15秒で・・・。
冷却の威力でホットピクセルはほとんど消滅しているのも特筆すべき点です。
ただ残念なことに、画面全体に見られる強烈な『横しまノイズ』と画面右下の盛大なアンプノイズが痛いですね。
また、メーカーサイトの分光特性資料から予測していたことですが、緑に対して赤の感度が低いのが分かります。

★ASI1600MC-COOLの撮って出し(ノートリ)
f0346040_23344439.jpg
対して、ASI1600MC-COOLだと撮って出しでコレです!
ホットピクセル無し・シマシマノイズ無し・アンプノイズ無しの三拍子が揃っています。画素数とかフォーマットが云々以前に基本的な性能が雲泥の差。
しかも、明らかにHα線に対する感度がASI174MC-COOLよりも(緑に対して相対的に)高く感じます。

★ASI174MC-COOLの撮って出し(トリミング)
f0346040_23391719.jpg
中央部をピクセル等倍で切り出した物です。中心星の青い色や星雲内の色の変化など良く写っていますが、ノイズが・・・。


★ASI1600MC-COOLの撮って出し(トリミング+縮小)
f0346040_23393786.jpg
ピクセルサイズが174と異なりますので画像を縮小して切り出した物です。
色特性としては、ちょうどIR改造のD5000と似たような感じでしょうか。とにかく赤い星雲が良く出ます。
変なノイズが一切無いところも素敵です。

★それでも・・・・・
このようにASI1600MC-COOLは驚異的に低ノイズなのですが、それでも淡い天体を炙り出そうとすると、嫌なシマシマノイズが出ます。
・・・というか、出ないカメラってあるのか?というのが正直なところなのですが、とにかく何か工夫がしたいところですね。
試行錯誤するための準備として、今一度ベイヤーデータについて考えてみることにします。
・・・ううむ。色んな原理の理解のため、13年ぶりにEXCELのVBAコード触ってみることにします。
ああ、丸10年以上コーディング(プログラミング)から遠ざかっていたので、もう何も覚えていないでしょうね・・・・。少しは復習しておくんだった。




by supernova1987a | 2016-09-06 01:48 | 天体写真 | Comments(2)


タグ
最新の記事
記事ランキング
ファン
ブログジャンル
画像一覧
外部リンク