OrigamiSat-2 jpg creating on LINUX


● (No.1186) OrigamiSat-2 jpg creating on LINUX (2026年5月11日)  -------------------------------------------------------------
ChatGPTに、下段2番目画像のHEXデータからJPEG画像化できない原因を聞いてみた。↑↓ -------------------------------- このHEXデータは、かなり「JPEGらしい構造」を持っています。 実際、  開始マーカー FFD8  JFIFヘッダ FFE0...4A464946  DQT FFDB  SOF0 FFC0  Huffman Table FFC4  スキャン開始 FFDA  終端マーカー FFD9 まで揃っています。 つまり「完全に壊れたデータ」ではありません。ただし、問題箇所があります。 問題点1:Huffman Table が異常 この部分: FFC4001F00000105010101010117BB01... JPEGの FFC4 (Huffman Table) では、長さ定義部分が正常な値で並ぶ必要があります。 しかし: ...01010117BB01... の 17BB が非常に不自然です。 通常ここは: 0101010101010101 のような小さい値列になります。 BB が突然現れるのは、  1バイト欠損  ビットずれ  HEX混入  コピー崩れ の典型です。 問題点2:量子化Table も怪しい この部分: FFDB00430006040506050406060506070706080A100A... は一見正常ですが、後半の並びが JPEG標準Table と微妙に違います。 つまり:  一部だけ書き換わった  通信途中で化けた  ログ保存時に欠損した可能性があります。 問題点3:途中に不自然な値 この部分: ...E6E70E05E8E9EA... JPEG Huffman定義で、E70E05 のような並びはかなり異常です。 通常は: E7E8E9EA のように連続します。 つまり、0E05 が途中混入した可能性が高いです。 結論:このJPEGは、  ヘッダは存在  JPEG構造もほぼ存在、  しかし Huffman Table が壊れているため、一般的なJPEGデコーダでは  「不正JPEG」  「破損ファイル」  「SOS marker error」  「Huffman table error」 になります。 かなり高い確率で起きていること: あなたのデータは、  シリアルログ  通信ログ  UARTダンプ  メモリダンプ  途中コピー などから抜き出されていて、数バイト欠損または混入しています。 特に:  17BB  0E05  69DD あたりが危険です。修復できる可能性はあります。 このJPEGは:  骨格はかなり正常  サイズ情報もある  SOF/SOSもあるので、 標準Huffman Table へ置換 破損バイト除去 で復旧できる可能性があります。特にこのJPEGは Baseline DCT JPEG なので、 標準Huffman Table を使う修復が有効です。結論としては、このJPEGは画像本体 (SOS以降)は生きている可能性大、DHTだけが破損している可能性大なので、最も 確実に画像化するのは「DHT全部を標準Huffman Table へ完全置換」することです。 -------------------------------- 以上、ChatGPT の示唆のとおりHEXデータを修正して、本来の画像の左上ほんの 一部だけJPEG画像化することができた。(試行錯誤継続中, 10May2026) -------------------------------- 最上段の画像8個の解説を全て手作業で行うのは大変なので、Rubyを使った プログラミングで半自動化してみた。test1.hexを生成する際のrbファイル の中の繰り返し回数(38c)は、SatNOGSからダウンロードしたcsvファイルの 行数に適宜、合わせるとよい。なお、test2.hexを生成した後、FFD9を含む 最終行は一般に短いので、そこだけ手作業で編集する必要がある。最後の test3.hex は、横一行(FFD8...FFD9)のJPEG構造の形をしている。 https://www.ne.jp/asahi/hamradio/je9pel/cas5atst.htm Sample satnogs.csv: total_lines 908(d)=38c(h) Image No.44(h) on 8 May 2026 by JH4XSY test0.sh ... Shell script using Ruby to output ext044.rb test1.hex ... Extract the right side including the frame number of each row. test2.hex ... Extract the data body from each row, excluding the frame number. Edit last line in it ending with FFD9 manually. test3.hex ... Concatenate each line in test2.hex into one single line. The result starts with FFD8 and ends with FFD9. Edit it according to ChatGPT when JPEG image is not generated. [ext044.rb] > for i in 0..0x38c > printf("grep 020003%04X satnogs.csv | head -1 | cut -c 77- >> test1.hex\n", i) > end [on Terminal] $ ruby ext044.rb > test0.sh $ sh test0.sh $ cut -c 5-388 test1.hex > test2.hex > Edit last line in test2.hex ending with FFD9. $ tr -d '\n' < test2.hex > test3.hex > Edit test3.hex according to ChatGPT. $ cat test3.hex | xxd -r -p > test3.jpg



トップ へ戻る.
前のページ へ戻る.
次のページ へ移る.(編集中)
ホームページ(目次) へ戻る.