Files
2024-10-29 16:45:28 +08:00

53 lines
1.2 KiB
Go

package producer
import (
"fmt"
"path/filepath"
"github.com/sirupsen/logrus"
"starwiz.cn/sjy01/image-proc/pkg/payload"
"starwiz.cn/sjy01/image-proc/pkg/rrc"
)
func (r *ImgProc) 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)), payload.MSS_PIXEL_WIDTH)
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 *ImgProc) DoMomentMatching() error {
rrc.DoMomentMatching(r.PanImage)
for i := 0; i < 4; i++ {
rrc.DoMomentMatching(r.MssImages[i])
}
return nil
}