52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package producer
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"starwiz.cn/sjy01/image-proc/pkg/rrc"
|
|
)
|
|
|
|
func (r *Registrator) DoRRCbyLUT(lutDir string) error {
|
|
logrus.Printf("try to do RRC [%s]...", lutDir)
|
|
lutPAN, err := rrc.LoadLUT(filepath.Join(lutDir, "B0.LUT"), 9344)
|
|
if err != nil {
|
|
logrus.Error("load pan gray table failed")
|
|
return err
|
|
}
|
|
|
|
for y := 0; y < r.PanImage.Rows(); y++ {
|
|
for x := 0; x < r.PanImage.Cols(); x++ {
|
|
newGray := lutPAN[x][int(uint16(r.PanImage.GetShortAt(y, x)))]
|
|
r.PanImage.SetShortAt(y, x, int16(newGray))
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 4; i++ {
|
|
lutMSS, err := rrc.LoadLUT(filepath.Join(lutDir, fmt.Sprintf("B%d.LUT", i+1)), 2336)
|
|
if err != nil {
|
|
logrus.Error("load mss gray table failed")
|
|
return err
|
|
}
|
|
|
|
for y := 0; y < r.MssImages[i].Rows(); y++ {
|
|
for x := 0; x < r.MssImages[i].Cols(); x++ {
|
|
newGray := lutMSS[x][int(uint16(r.MssImages[i].GetShortAt(y, x)))]
|
|
r.MssImages[i].SetShortAt(y, x, int16(newGray))
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (r *Registrator) DoMomentMatching() error {
|
|
rrc.DoMomentMatching(r.PanImage)
|
|
for i := 0; i < 4; i++ {
|
|
rrc.DoMomentMatching(r.MssImages[i])
|
|
}
|
|
|
|
return nil
|
|
}
|