长条带生产需要分段滤波
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package rrc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"image"
|
||||
"math"
|
||||
|
||||
@@ -166,3 +167,32 @@ func visualizeDFT(DFT gocv.Mat, file string) {
|
||||
// 保存DFT结果
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user