Gtiff
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package main
|
||||
package imageproc
|
||||
|
||||
const (
|
||||
ProductSuffix = "Pansharpened.tiff"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package main
|
||||
package imageproc
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
@@ -127,18 +127,6 @@ func (r *Registrator) DoDownPhaseCorrelation() error {
|
||||
downsampledPanImage := gocv.NewMat()
|
||||
gocv.Resize(r.PanImage, &downsampledPanImage,
|
||||
image.Point{X: r.MssWidth, Y: r.MssHeight}, 0, 0, gocv.InterpolationLinear)
|
||||
|
||||
// 对每个 MSS 波段图像进行上采样
|
||||
// upsampledMSSImages := make([]gocv.Mat, MssBands)
|
||||
|
||||
for i := 0; i < MssBands; i++ {
|
||||
// upsampledMSSImages[i] = gocv.NewMat()
|
||||
// gocv.Resize(r.MssImages[i], &upsampledMSSImages[i],
|
||||
// image.Point{X: r.PanWidth, Y: r.PanHeight}, 0, 0, gocv.InterpolationLinear)
|
||||
|
||||
// r.msToRaw(upsampledMSSImages[i].ToBytes(), fmt.Sprintf("MSS%d.RAW", i+1))
|
||||
}
|
||||
|
||||
fmt.Println("down sampled PAN images size:", downsampledPanImage.Size())
|
||||
|
||||
// 分块高度
|
||||
@@ -178,29 +166,28 @@ func (r *Registrator) DoDownPhaseCorrelation() error {
|
||||
}
|
||||
}
|
||||
|
||||
alignedMssData, err := r.DoMssPhaseShift()
|
||||
if err != nil {
|
||||
if err := r.DoMssPhaseShift(); err != nil {
|
||||
log.Error("Error calculating MSS phase shift: ", err)
|
||||
return err
|
||||
}
|
||||
|
||||
r.mssToRaw(alignedMssData)
|
||||
// r.bytesToRaw(r.PanImage.ToBytes(), "data/PAN.RAW")
|
||||
// r.SavePanToGDALGTiff("data/pan.tiff")
|
||||
r.SaveRegisteredMssToGDALGTiff("data/registered_mss.tiff")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *Registrator) mssToRaw(mssData [][]byte) error {
|
||||
f, err := os.OpenFile("data/downsampled_registered_mss.RAW", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0777)
|
||||
func (r *Registrator) SaveRegisteredMssToRaw(raw string) error {
|
||||
f, err := os.OpenFile(raw, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0777)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var mssData [4][]byte
|
||||
for i := 0; i < MssBands; i++ {
|
||||
mssData[i] = r.registeredMssImages[i].ToBytes()
|
||||
}
|
||||
|
||||
width := r.MssWidth * PixelBytes
|
||||
height := r.MssHeight
|
||||
log.Println("Writing downsampled registered MSS to RAW file...", len(mssData[0])*4)
|
||||
log.Println("Writing registered MSS to RAW file...", len(mssData[0])*4)
|
||||
log.Println("width:", width)
|
||||
log.Println("height:", height)
|
||||
w := bufio.NewWriter(f)
|
||||
@@ -226,7 +213,7 @@ func (r *Registrator) bytesToRaw(mssData []byte, filePath string) error {
|
||||
}
|
||||
|
||||
func (r *Registrator) SaveRegisteredMssToGDALGTiff(tiffFile string) error {
|
||||
log.Println("Saving registered MSS to TIFF file...")
|
||||
log.Println("Saving registered MSS to TIFF file:", tiffFile)
|
||||
|
||||
width := r.MssWidth
|
||||
height := r.MssHeight
|
||||
@@ -287,13 +274,13 @@ func (r *Registrator) SaveRegisteredMssToGDALGTiff(tiffFile string) error {
|
||||
}
|
||||
}
|
||||
|
||||
log.Info("saved registered mss to tiff file: ", tiffFile)
|
||||
log.Info("Saved registered mss to ", tiffFile)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *Registrator) SavePanToGDALGTiff(tiffFile string) error {
|
||||
log.Println("Saving PAN image to TIFF file...")
|
||||
log.Println("Saving PAN image to TIFF file:", tiffFile)
|
||||
|
||||
width := r.PanWidth
|
||||
height := r.PanHeight
|
||||
@@ -325,7 +312,7 @@ func (r *Registrator) SavePanToGDALGTiff(tiffFile string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Info("saved pan image to tiff file: ", tiffFile)
|
||||
log.Info("Saved pan image to ", tiffFile)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
32
main.go
32
main.go
@@ -1,32 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/airbusgeo/godal"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func init() {
|
||||
logrus.SetFormatter(&logrus.TextFormatter{
|
||||
ForceColors: true,
|
||||
DisableColors: false,
|
||||
TimestampFormat: "2006-01-02 15:04:05",
|
||||
FullTimestamp: true,
|
||||
})
|
||||
}
|
||||
|
||||
func main() {
|
||||
reg := NewRegistrator()
|
||||
|
||||
if err := reg.LoadMssRaw("/Users/lan/workspace/temp/ccv/ms_image.raw"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := reg.LoadPanRaw("/Users/lan/workspace/temp/ccv/pan_image.raw"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
godal.RegisterAll()
|
||||
if err := reg.DoDownPhaseCorrelation(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package main
|
||||
package imageproc
|
||||
|
||||
import (
|
||||
"image"
|
||||
@@ -41,8 +41,7 @@ func (r *Registrator) calculateBlockPhaseShift(panBlock, mssBlock gocv.Mat) gocv
|
||||
return shift
|
||||
}
|
||||
|
||||
func (r *Registrator) DoMssPhaseShift() ([][]byte, error) {
|
||||
alignedMssData := make([][]byte, MssBands)
|
||||
func (r *Registrator) DoMssPhaseShift() error {
|
||||
// 使用平均偏移量来做平移变换
|
||||
for band := 0; band < MssBands; band++ {
|
||||
var efficientShiftM int
|
||||
@@ -103,9 +102,7 @@ func (r *Registrator) DoMssPhaseShift() ([][]byte, error) {
|
||||
alignedMss.ConvertTo(&r.registeredMssImages[band], gocv.MatTypeCV16U)
|
||||
|
||||
log.Println("Band", band+1, "registeredMssImages size:", r.registeredMssImages[band].Size())
|
||||
|
||||
alignedMssData[band] = append(alignedMssData[band], r.registeredMssImages[band].ToBytes()...)
|
||||
}
|
||||
|
||||
return alignedMssData, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user