This commit is contained in:
nuknal
2024-10-29 16:45:28 +08:00
parent 9c2d93dff4
commit 0e920ce9f0
10 changed files with 57 additions and 57 deletions

View File

@@ -37,7 +37,7 @@ const (
type ResampleMethod string
type Registrator struct {
type ImgProc struct {
Params Params
PanImage gocv.Mat
@@ -69,14 +69,14 @@ type Registrator struct {
report Report
}
func NewRegistrator(rsmethod ResampleMethod) *Registrator {
var r Registrator
func NewImgProc(rsmethod ResampleMethod) *ImgProc {
var r ImgProc
r.resampleMethod = rsmethod
return &r
}
func (r *Registrator) LoadPanRaw() error {
func (r *ImgProc) LoadPanRaw() error {
data, err := os.ReadFile(r.Params.PanRawFile)
if err != nil {
log.Error("Error reading raw file: ", err)
@@ -111,7 +111,7 @@ func (r *Registrator) LoadPanRaw() error {
return nil
}
func (r *Registrator) LoadMssRaw() error {
func (r *ImgProc) LoadMssRaw() error {
data, err := os.ReadFile(r.Params.MssRawFile)
if err != nil {
log.Error("Error reading raw file: ", err)
@@ -141,7 +141,7 @@ func (r *Registrator) LoadMssRaw() error {
return nil
}
func (r *Registrator) DoPhaseCorrelation() error {
func (r *ImgProc) DoPhaseCorrelation() error {
switch r.resampleMethod {
case UpSampled:
return r.CalcUpPhaseCorrelation()
@@ -151,7 +151,7 @@ func (r *Registrator) DoPhaseCorrelation() error {
}
// 将PAN降采样后计算相位相关的偏移量
func (r *Registrator) CalcDownPhaseCorrelation() error {
func (r *ImgProc) CalcDownPhaseCorrelation() error {
// 确保 MSS 高度是 PAN 高度的 1/4
if r.MssHeight*4 != r.PanHeight {
err := fmt.Errorf("MSS height is not 1/4 of PAN height, invalid raw file")
@@ -209,7 +209,7 @@ func (r *Registrator) CalcDownPhaseCorrelation() error {
}
// 将MSS升采样采样后计算相位相关的偏移量
func (r *Registrator) CalcUpPhaseCorrelation() error {
func (r *ImgProc) CalcUpPhaseCorrelation() error {
log.Fatal("unsuppotted up-resample method")
// 确保 MSS 高度是 PAN 高度的 1/4
if r.MssHeight*4 != r.PanHeight {
@@ -249,7 +249,7 @@ func (r *Registrator) CalcUpPhaseCorrelation() error {
return r.DoPANCoRegistration()
}
func (r *Registrator) doPhaseCorrelation(base gocv.Mat,
func (r *ImgProc) doPhaseCorrelation(base gocv.Mat,
mssImages []gocv.Mat,
height, width,
blockHeight, blockWidth int) error {
@@ -327,7 +327,7 @@ func (r *Registrator) doPhaseCorrelation(base gocv.Mat,
return nil
}
func (r *Registrator) Clean() {
func (r *ImgProc) Clean() {
r.PanImage.Close()
for i := 0; i < MssBands; i++ {
r.MssImages[i].Close()
@@ -340,7 +340,7 @@ func (r *Registrator) Clean() {
r.rgbirImage.Close()
}
func (r *Registrator) calcMSSDeltaCoeffs(bands int) error {
func (r *ImgProc) calcMSSDeltaCoeffs(bands int) error {
// 计算每个通道的delta多项式拟合系数
for i := 0; i < bands; i++ {
var cx []float64
@@ -397,7 +397,7 @@ func (r *Registrator) calcMSSDeltaCoeffs(bands int) error {
return nil
}
func (r *Registrator) DoMSSCoRegistration(byEdge bool) error {
func (r *ImgProc) DoMSSCoRegistration(byEdge bool) error {
for band := 0; band < MssBands; band++ {
if len(r.deltaXCoeffs[band]) < 2 || len(r.deltaYCoeffs[band]) < 3 {
log.Errorf("delta coefficients not calculated, skip co-registration %d", band+1)
@@ -456,7 +456,7 @@ func (r *Registrator) DoMSSCoRegistration(byEdge bool) error {
return nil
}
func (r *Registrator) DoPANCoRegistration() error {
func (r *ImgProc) DoPANCoRegistration() error {
if len(r.deltaXCoeffs[0]) < 2 || len(r.deltaYCoeffs[0]) < 3 {
log.Error("delta coefficients not calculated, skip co-registration")
return nil