★今後の諸々に備えて・・・最初にお断りしておきます。
特に『ASI1600MC-COOL使い』の皆様は、「なにか秘策が公開されるのか!?」などと期待しないでくださいねぇ。
ノイズの出方とか、画像処理の諸々を考えるときに「簡単なシミュレーションができると良いなあ」と思った程度なので、気の長いお話です。
VBAのコードとか出てきますが、あぷらなーと自身へのメモなので、参考(する人いないか・・・)にはしないでください。
★リハビリ開始♪
UNIX使って宇宙物理の研究をしていた学生時代や、本業の傍ら自前のソフトをゴソゴソ作っていた若手の頃は、プログラミングが嫌いではありませんでした。しかし、その分野から完全に足を洗って早13年。今ではすっかり素人のおっさんに戻ってしまいました。
とりあえず、ベイヤー配列のデータがどのように記録されていて、どのようにデモザイクされているのかをシミュレーションすることから始めてみます。
・・・言語ですか?得意なのはFORTRANとPASCALです(でした)が、そういう時代では無いでしょうから、最近のPCの有り余る演算速度を当てにして『まさか』の「EXCEL一本槍」で行ってみます。
★まずやりたいのは、こんなこと
エクセルのワークシートにですね。簡単な画像を描いて、マクロボタンをポチッと押すと、
①ベイヤー配列にどのように格納されたかが表示されて
②RGB各画素データがどのように記録されたかが表示されて
③RGB各画素の欠損位置のデータを補完して
④デモザイク画像に変換してワークシートに表示
・・・という簡単な処理です。うーんリハビリに最適。
★元画像として・・・
はい、まだビットマップを読み込むとかそんな『高度な』ことはしません(できません)ので、エクセルのシートをキャンバスに見立てて手で描きます(笑)

わはは。モロ手抜きの酷い素材ですね。想定したのはM20(らしきもの)ですが、それっぽく見えますか??
★ASI1600MCのベイヤー配列は
確か「GRBG型」でした。よって、撮像CMOSの表面のカラーフィルタがこんな感じに並んでいると想定できますね。
★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各色の輝度を数値変換して、ベイヤー配列に見立てたセルに数値を記録してくれます。
ちょうどこんな感じですね♪

次に、その数値を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
------------------------------------------------------

はい。あっという間にカラー画像を8bitベイヤー画像に変換できました。
うーん。EXCELって凄いなあ・・・・。
こんな用途に使う奇特な人は居ないと思いますが・・・・ね。
★★★以下続きます★★★
htmx.process($el));"
hx-trigger="click"
hx-target="#hx-like-count-post-25796009"
hx-vals='{"url":"https:\/\/apranat.exblog.jp\/25796009\/","__csrf_value":"d6be93996b836a87f909b33d820beb30bf772fbfc0186b5fb336bb65d5e9ddd2c3e1d152c57f5117f3bd726b8f8eca32960c63a67d3bb2f66c07137a78846bd8"}'
role="button"
class="xbg-like-btn-icon">