nextzlog / todo

ToDo lists for ATS-4, CW4ISR, QxSL, ZyLO.
https://nextzlog.dev
1 stars 0 forks source link

信号波の正確な検出アルゴリズム #169

Closed JG1VPP closed 1 year ago

JG1VPP commented 1 year ago

問題意識

モールス信号のビート音の区切りで、強力なノイズが発生し、近隣周波数に妨害を与える。このノイズを検出せず、信号周波数のみを検出するアルゴリズムを募集する。

image

解決方法

募集する。

JG1VPP commented 1 year ago

現状は https://github.com/nextzlog/zylo/tree/denoise にあります。実行するには、

$ git clone https://github.com/nextzlog/zylo
$ cd zylo/src/plugin/utils/chotto
$ go build
$ ./chotto
jucky154 commented 1 year ago

pileup001_tfft STFTの結果が見にくいと思ったので貼り付けておきます

JG1VPP commented 1 year ago

自分はセル・オートマトンによりスペクトログラムの画像でノイズ低減とエッジ検出を行う方法を検討しています。

JG1VPP commented 1 year ago

セル・オートマトンによるエッジ検出ですが、簡単ながら効果的ですね:

image

却ってノイズを助長する場合もありますが、もうゴールが見えていますね:

image

func (d *Decoder) spec(signal []float64) (spec [][]float64) {
  spec, _ = gossp.SplitSpectrogram(d.STFT.STFT(signal))
  for n := 0; n < 5; n++ {
    for _, sp := range spec {
      copied := make([]float64, len(sp))
      copy(copied, sp) 
      for idx := 1; idx < len(sp)-1; idx++ {
        val := copied[idx]
        up := copied[idx-1]
        dn := copied[idx+1]
        if up > val {
          sp[idx] /= 10.0
        } else if dn > val {
          sp[idx] /= 10.0
        }   
      }   
    }   
  }
  return
}