あぷらなーと


あぷらなーとの写真ブログ
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 01:57
台風一過、こちらも見えて..
by kem2017 at 04:06
> にゃあさん い..
by supernova1987a at 02:36
備えあれば憂いなしですね..
by にゃあ at 01:43
> オヤジさん 玉..
by supernova1987a at 23:28
四国は、オンコースでした..
by オヤジ at 23:19
> kem2017さん ..
by supernova1987a at 23:47
> オヤジさん ホ..
by supernova1987a at 23:43
> にゃあさん プ..
by supernova1987a at 23:41
> kem2017さん ..
by supernova1987a at 23:23
以前の記事
お気に入りブログ

2016年 09月 07日 ( 1 )

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

★今後の諸々に備えて・・・
最初にお断りしておきます。
特に『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)


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