恢复全图配准

This commit is contained in:
nuknal
2024-11-01 10:27:21 +08:00
parent 75e4dd6d90
commit 9e58fbaed3
2 changed files with 28 additions and 36 deletions

View File

@@ -7,7 +7,6 @@ import (
"strings"
"github.com/airbusgeo/godal"
"github.com/duke-git/lancet/v2/mathutil"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"starwiz.cn/sjy01/image-proc/pkg/calculator"
@@ -79,7 +78,7 @@ var procCmd = &cobra.Command{
processor.DoMomentMatching()
}
if err := processor.DoPhaseCorrelation(true); err != nil {
if err := processor.DoPhaseCorrelation(false); err != nil {
logrus.Fatal(err)
}
@@ -97,10 +96,10 @@ var procCmd = &cobra.Command{
logrus.Error(err)
}
scenesCnt := mathutil.Min(len(panScenes), len(mssScenes))
for i := 0; i < scenesCnt; i++ {
processor.RegisterScenes(panScenes[i], mssScenes[i])
}
// scenesCnt := mathutil.Min(len(panScenes), len(mssScenes))
// for i := 0; i < scenesCnt; i++ {
// processor.RegisterScenes(panScenes[i], mssScenes[i])
// }
processor.OutputL1A(panScenes, mssScenes)
producer.CleanScenes(panScenes)

View File

@@ -74,7 +74,7 @@ func NewImgProc(rsmethod ResampleMethod) *ImgProc {
var r ImgProc
r.resampleMethod = rsmethod
r.blockH = 8
r.blockW = 8
r.blockW = 4
return &r
}
@@ -183,7 +183,7 @@ func (r *ImgProc) CalcDownPhaseCorrelation() error {
log.Infof("blockHeight=%d, blockWidth=%d", blockHeight, blockWidth)
// 在 MSS 4 个波段上进行配准
err := r.doPhaseCorrelation(downsampledPanImage,
err := r.doPhaseCorrelation(r.MssImages[0],
[]gocv.Mat{r.MssImages[0], r.MssImages[1], r.MssImages[2], r.MssImages[3]},
r.MssHeight, r.MssWidth, blockHeight, blockWidth)
if err != nil {
@@ -193,37 +193,24 @@ func (r *ImgProc) CalcDownPhaseCorrelation() error {
r.calcMSSDeltaCoeffs(4)
r.DoMSSCoRegistration(false)
// 边缘检测后再做一次配准
// var mssEdges []gocv.Mat
// for band := 0; band < len(r.registeredMssImages); band++ {
// edge := CV_Sobel(r.registeredMssImages[band])
// mssEdges = append(mssEdges, edge)
// }
// r.doPhaseCorrelation(mssEdges[0], mssEdges,
// r.MssHeight, r.MssWidth, blockHeight, blockWidth)
// r.fileterPhaseShift([]float64{5, 5, 5, 5}, false)
// r.calcMSSDeltaCoeffs(4)
// r.DoMSSCoRegistration(true)
// 基于 PAN 图像进行配准
// err = r.doPhaseCorrelation(downsampledPanImage,
// []gocv.Mat{r.registeredMssImages[0]},
// r.MssHeight, r.MssWidth, blockHeight, blockWidth)
// if err != nil {
// return err
// }
// r.fileterPhaseShift([]float64{30.0}, true)
// r.calcMSSDeltaCoeffs(1)
// r.DoPANCoRegistration()
err = r.doPhaseCorrelation(downsampledPanImage,
[]gocv.Mat{r.registeredMssImages[0]},
r.MssHeight, r.MssWidth, blockHeight, blockWidth)
if err != nil {
return err
}
r.fileterPhaseShift([]float64{30.0}, true)
r.calcMSSDeltaCoeffs(1)
r.DoPANCoRegistration()
// 裁掉位移部分
r.MssHeight -= MaxShiftY
r.PanHeight -= MaxShiftY * 4
r.PanImage = r.PanImage.Region(image.Rect(0, 0, r.PanWidth, r.PanHeight))
for i := 0; i < MssBands; i++ {
r.registeredMssImages[i] = r.registeredMssImages[i].Region(image.Rect(0, 0, r.MssWidth, r.MssHeight))
}
// r.MssHeight -= MaxShiftY
// r.PanHeight -= MaxShiftY * 4
// r.PanImage = r.PanImage.Region(image.Rect(0, 0, r.PanWidth, r.PanHeight))
// for i := 0; i < MssBands; i++ {
// r.registeredMssImages[i] = r.registeredMssImages[i].Region(image.Rect(0, 0, r.MssWidth, r.MssHeight))
// }
return nil
}
@@ -471,6 +458,9 @@ func (r *ImgProc) DoMSSCoRegistration(byEdge bool) error {
mapY.Close()
}
r.MssHeight -= 360
r.PanHeight -= 360 * 4
return nil
}
@@ -517,5 +507,8 @@ func (r *ImgProc) DoPANCoRegistration() error {
r.registeredMssImages[i] = registeredMSS
}
r.MssHeight -= 120
r.PanHeight -= 120 * 4
return nil
}