あぷらなーと


あぷらなーとの写真ブログ
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あぷらなーと が

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

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

生息地:香川・徳島
カテゴリ
最新のコメント
> kem2017さん ..
by supernova1987a at 23:18
子供の科学は読んでなかっ..
by kem2017 at 16:39
> オヤジさん オヤジ..
by supernova1987a at 07:38
あぷらなーとさんも、子供..
by オヤジ at 06:19
> kem2017さん ..
by supernova1987a at 23:59
藤井旭先生の「星雲星団ガ..
by kem2017 at 21:40
> にゃあさん 設..
by supernova1987a at 02:22
> HIROPONさん ..
by supernova1987a at 23:13
もっと気軽に遊べるソフト..
by にゃあ at 23:01
> kem2017さん ..
by supernova1987a at 22:58
以前の記事
お気に入りブログ

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

★今後の諸々に備えて・・・
最初にお断りしておきます。
特に『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)
Commented by にゃあ at 2016-09-07 00:47 x
ドッターのセンスバツグンですねー!見た瞬間、一発でM20だと分かりましたよー。このシミュレーションで邪なシマシマの正体が分かるかもしれないわけですね。難しいことは分かりませんが、続きを楽しみにしていますー
Commented by けむけむ at 2016-09-07 05:48 x
Delphiを購入する財力も気力も技量もないし、そもそもプログラミングする気もないっておっさまにはExcelVBAはなかなか良いですよね
OpenOfficeだとPythonでしたっけ...

ってな話は置いといて、うげー肩こりそうな作業お疲れ様でした。
シマシマ対策のヒントが出てくることに期待してます (^o^)/
Commented by オヤジ at 2016-09-07 08:54 x
ハードとソフトの狭間の解析、やった事全然ないです。
データフォーマットが決まっているデータを加工して視覚に訴えるような簡単なアプリを書いて、スパコンで出力。
現役の80%はプログラムを弄ってました。
あぷらなーとさん
何が見えて来るのか、楽しみにしてます。
google窓で、
ls リターン、
grep なんちゃらリターン、
とか
vi を書き込みモードにする時、ESCを押す癖があって、blogコメントを何度消したことか。(汗)&(爆)
暫くしてWindowsPCなんだと、気が付いて。呆けボケオヤジです。(汗)
Commented by supernova1987a at 2016-09-07 09:17
> にゃあさん
分かってくれてありがとうございます。そのうち画像そのものを扱う『つもり』ですが、まずは手書き絵から・・・・。気の長い話なのでのんびりと見守ってやってください。
Commented by supernova1987a at 2016-09-07 09:27
> けむけむさん
はい。昔は大枚はたいて自腹でDelphi7pro買ってゴリゴリコーディングしてましたが、もう買う元気はありません(というかDelphi自体が虫の息ですが)。ExcelVBA、素敵です。宣言なしで変数が使える事に不気味さを感じない今の私にはこれが最適ですね。
Commented by supernova1987a at 2016-09-07 09:43
> オヤジさん
ああ!懐かしいネタ、笑ってしまいました。私も学生時代はサンのUNIXワークステーション数十台をフル稼働させてデータ解析とシミュレーションに明け暮れていた口なので、コマンド入れちゃう癖分かります!なにが出てくるか生暖かく見守ってやってくださいね。
Commented by けむけむ at 2016-09-07 19:59 x
>宣言なしで変数が使える事に不気味さを感じない今の私にはこれが最適ですね。
コレはさすがにキモチ悪い(っつーか変数名をパンチミスして何やっても値が変わらない変な変数になってしまう)ので、Option Explicit 書くことにしてます。

Delphi なんだか、微妙に盛り返しを図ってるっぽいですよ...
Commented by supernova1987a at 2016-09-07 23:55
> けむけむさん
お詳しいですね♪ホントだ。調べてみたら色々頑張ってますね『愛しの』Delphi。C♯の登場で終わってしまったのかと思ってました。ところでDelphi7ってwindows10でも動くのかなあ?色んな書籍を封印したダンボール、13年ぶりに開封してみようかなぁ?などとイケないことを妄想しちゃいます。絶対泥沼化するの分かっちゃいるんですが、やりたいことは流石にVBAでは速度が・・・ねぇ。むむむ。
名前
URL
削除用パスワード
<< 晴れない夜は基本の復習③ 晴れない夜は基本の復習① >>


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