长条带生产需要分段滤波

This commit is contained in:
nuknal
2025-02-21 15:46:40 +08:00
parent c37bd0908a
commit d3e02f9b0a

View File

@@ -1,6 +1,7 @@
package rrc package rrc
import ( import (
"fmt"
"image" "image"
"math" "math"
@@ -166,3 +167,32 @@ func visualizeDFT(DFT gocv.Mat, file string) {
// 保存DFT结果 // 保存DFT结果
gocv.IMWrite(file, out) gocv.IMWrite(file, out)
} }
func HFNoiseFilterSep(img gocv.Mat, radius float64) gocv.Mat {
const SepHeight = 4096
IDFT := gocv.NewMat()
IDFTs := []gocv.Mat{}
for rows := 0; rows < img.Rows(); rows += SepHeight {
row0 := rows
row1 := rows + SepHeight
if row1 > img.Rows() {
row1 = img.Rows()
}
fmt.Println("doing HF noise fileter rows range:", row0, row1)
mat := img.Region(image.Rect(0, row0, img.Cols(), row1))
matFiltered := HFNoiseFilter(mat, radius)
IDFTs = append(IDFTs, matFiltered)
}
gocv.Vconcat(IDFTs[0], IDFTs[1], &IDFT)
IDFTs[0].Close()
IDFTs[0].Close()
for i := 2; i < len(IDFTs); i++ {
gocv.Vconcat(IDFT, IDFTs[i], &IDFT)
IDFTs[i].Close()
}
return IDFT
}