前回は、"HADESx Generic Decoder v1.7.2" を Windows 11 にインストールし、公式サンプルWAVから
5個の HADES-SA SSDVパケットを正常に復号できることを確認した。今回は、その5 個のSSDVパケット
を結合し、JPEG画像ファイルを生成する実験を行った。
1. [HADESx Decoder によるSSDVパケットの復号]
使用したファイルは、HADESx に付属する公式WAVサンプルである。
"C:\Program Files\hadesx\HADESx-Decoder-1.7.2\examples\iq\hades_sa_ssdv_pass.wav"
CMDを起動し、HADESxのインストールフォルダーに移動する。
cd /d "C:\Program Files\hadesx\HADESx-Decoder-1.7.2"
公式サンプルを復号する。
py -m hadesx examples\iq\hades_sa_ssdv_pass.wav
実行結果:
- 衛星:SpinnyONE HADES-SA
- 変調方式:FSK 800 baud
- パケット種別:Type 10 (SSDV image packet)
- 画像ID:0
- 画像サイズ:320 x 240
- 受信パケット:2,3,4,5,6
- CRC:5個すべて OK
- 5 valid frame(s)
2. [SSDVパケットをファイルに保存]
次に、復号したパケットをファイルに保存するため、出力フォルダーを指定して再実行した。
py -m hadesx examples\iq\hades_sa_ssdv_pass.wav --outdir ssdv_result
今回は 5個のSSDVパケットが、個別のBINファイルとして保存された。
ファイル名の例: 各ファイルは256 bytesである。
sat_03_type_10_ssdv_img_000_packet_0002.bin
sat_03_type_10_ssdv_img_000_packet_0003.bin
sat_03_type_10_ssdv_img_000_packet_0004.bin
sat_03_type_10_ssdv_img_000_packet_0005.bin
sat_03_type_10_ssdv_img_000_packet_0006.bin
出力フォルダーの内容を確認する。
dir ssdv_result
3. [hadesx-ssdv.exe の確認]
HADESx には、出力されたSSDVパケットを結合してJPEG画像化するための "hadesx-ssdv.exe" が
用意されている。次に、実行ファイルの場所を確認する。
dir "C:\Users\user\AppData\Local\Programs\Python\Python314\Scripts\hadesx-ssdv*"
次のファイルが確認できた。
"C:\Users\user\AppData\Local\Programs\Python\Python314\Scripts\hadesx-ssdv.exe"
"hadesx-ssdv.exe" のヘルプを表示する。
"C:\Users\user\AppData\Local\Programs\Python\Python314\Scripts\hadesx-ssdv.exe" --help
この hadesx-ssdv.exeプログラムは、HADESx Decoder の出力フォルダーを指定し、画像IDごとにSSDV
パケットを結合して、指定した出力フォルダー内に、SSDVファイルとJPEG画像ファイルを自動生成する。
4. [SSDVパケットの結合とJPEG生成]
画像再構成には、今回新たに HADESx に付属する "hadesx-ssdv.exe" を利用した。このプログラムは
内部処理で、以前HADES-SA用に使用していた "ssdv.exe" を利用する。他の3ファイルは実際には使用
していないが、念のため以下の4ファイルを HADESx のインストールフォルダーにコピーした。
run_ssdv.bat
ssdv.exe
ssdv-x86.exe
ssdv-merge-windows-x86.exe
コピー元:
"C:\Program Files\hadesa\SSDV-minimodem\SSDVs\ssdv.exe"
"C:\Program Files\hadesa\AMSAT-EA_HADES-SA_SpinnyONE_SSDV_utilities\run_ssdv.bat"
"C:\Program Files\hadesa\AMSAT-EA_HADES-SA_SpinnyONE_SSDV_utilities\ssdv-x86.exe"
"C:\Program Files\hadesa\AMSAT-EA_HADES-SA_SpinnyONE_SSDV_utilities\ssdv-merge-windows-x86.exe"
画像ID "0" を指定して、JPEG画像を生成する。
"C:\Users\user\AppData\Local\Programs\Python\Python314\Scripts\hadesx-ssdv.exe" ssdv_result --image 0 --ssdv "C:\Program Files\hadesx\HADESx-Decoder-1.7.2\ssdv.exe"
実行結果:
image 0: 5 packet(s), highest number 6, 2 missing -> ssdv_result\hades_sa_image_000.ssdv
packets: ..#####?
missing: 0-1
packet 0-1: about 0 % to 2 % down the picture (rows 0-6 of 240)
after packet 6: not received (the end of the image has not arrived): from about 8 % down, rows 20-240 of 240
picture: ssdv_result\hades_sa_image_000.jpg
5. [生成されたJPEG画像ファイルの確認]
dir ssdv_result\*.jpg
実行結果:
2026/11/10 14:35 2,831 hades_sa_image_000.jpg
1個のファイル 2,831 バイト
生成されたファイル:
C:\Program Files\hadesx\HADESx-Decoder-1.7.2\ssdv_result\hades_sa_image_000.jpg
実際にこのJPEG画像を開いてみると、画像上部に一部の映像が現れ、その下は未復元部分となっていた。
画像サイズは 320 x 240 pixel で、受信できたのはパケット2~6 の5個であり、パケット0, 1 および、
パケット7以降のデータは未受信である。そのため、画像全体の約8%に相当する部分だけが表示された。
完全な画像復元には至っていないが、SSDVパケットからJPEG画像ファイルを実際に生成できた。
6. [過去の画像復元方法との比較]
これまでの No.1182, No.1183では、SoundModem や SatNOGS のCSVデータから SSDVパケットを取り出し、
画像を再構成していた。今回の HADESx による方法は、I/Q WAVファイルから直接SSDVパケットを復号し、
画像再構成まで進めるものである。
項目 No.1182 / No.1183 今回 No.1203
----------------------------------------------------------------------
入力データ SDR受信 / SatNOGS CSV I/Q WAV
パケット抽出 SoundModem / CSV解析ツール HADESx v1.7.2
パケット保存 個別の.binファイル 個別の.binファイル
パケット結合 cat等による番号順結合 hadesx-ssdv.exe
JPEG変換 ssdv.exe ssdv.exe
----------------------------------------------------------------------
No.1182, No.1183, No.1203
No.1183では、SatNOGS のCSVファイルから専用ツールで .binファイルを抽出し、次のコマンドで
結合していた。
cat *.bin > combined.bin
ssdv -d combined.bin output.jpg
今回は、HADESxがパケット抽出を担当し、"hadesx-ssdv.exe" が結合と画像再構成を担当する。
"C:\Users\user\AppData\Local\Programs\Python\Python314\Scripts\hadesx-ssdv.exe"
7. [今回の実験結果]
今回の実験により、Windows 11 / Python 3.14.3 / HADESx Generic Decoder v1.7.2 の環境で、
次の一連の処理が正常に動作することを確認した。
(1) I/Q WAVファイルからHADES-SAのSSDVパケットを復号
(2) CRCが正常な5個のパケットを ".bin" ファイルとして保存
(3) "hadesx-ssdv.exe" でパケットを結合
(4) 内部で "ssdv.exe" を使用してJPEG画像ファイルを生成
(5) 生成されたJPEG画像を実際に表示
今回の公式サンプルでは、受信できたパケットが 5個だけだったため、画像全体の約8%の復元に
とどまった。しかし、HADESxを利用して I/Q WAV からSSDV画像をJPEG化する一連の処理が実現で
きたことは大きな成果である。今後は、実際の衛星受信データから、より多くの SSDVパケットを
収集し、画像全体の復元に挑戦したい。