From 538fb71110161a5c113b06c3291077eca23e1e45 Mon Sep 17 00:00:00 2001 From: nuknal Date: Tue, 28 May 2024 09:16:59 +0800 Subject: [PATCH] parametres input --- gdal_pansharpen.go | 13 ++++++------- output.go | 14 +++++++------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/gdal_pansharpen.go b/gdal_pansharpen.go index 77d5de4..a32a77e 100644 --- a/gdal_pansharpen.go +++ b/gdal_pansharpen.go @@ -1,9 +1,10 @@ package imageproc import ( - "fmt" "image" + log "github.com/sirupsen/logrus" + "gocv.io/x/gocv" ) @@ -13,14 +14,12 @@ const ( // IHS 变换是一种将 RGB 空间转换为亮度、色调和饱和度的变换方法 func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat { - // pan32 := gocv.NewMat() - // defer pan32.Close() - // panImage.ConvertTo(&pan32, gocv.MatTypeCV32FC1) - + log.Println("start pansharpen IHS") mss32F := gocv.NewMat() mssImage.ConvertTo(&mss32F, gocv.MatTypeCV32FC4) // 调整 MSS 图像的大小到与 PAN 图像相同的大小 + log.Println("resize mss to pan size") mssResized := gocv.NewMat() defer mssResized.Close() gocv.Resize(mss32F, &mssResized, @@ -37,8 +36,6 @@ func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat { // Saturation hlsChannels := gocv.Split(mssHLS) - fmt.Println("size of channels:", len(hlsChannels), mssImage.Channels(), mssResized.Channels(), mssHLS.Channels()) - // 使用 PAN 图像替换亮度分量(Intensity) // hlsChannels[1] = pan32 @@ -46,6 +43,7 @@ func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat { panFloat := gocv.NewMat() defer panFloat.Close() panImage.ConvertTo(&panFloat, gocv.MatTypeCV32F) + log.Println("normalize pan to 0-255") gocv.Normalize(panFloat, &panFloat, 0, 255, gocv.NormMinMax) hlsFloat := gocv.NewMat() @@ -62,6 +60,7 @@ func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat { // 将图像从 HLS 转换回 BGR fusedImage := gocv.NewMat() defer fusedImage.Close() + log.Println("cvt color from HLS to BGR") gocv.CvtColor(mssHLS, &fusedImage, gocv.ColorHLSToBGR) // 交换 B 和 R 通道 diff --git a/output.go b/output.go index 5253b01..0f16bd6 100644 --- a/output.go +++ b/output.go @@ -25,8 +25,8 @@ func (r *Registrator) SaveFilteredPanToGDALGTiff(tiffFile string) error { func savePanToGDALGTiff(pan gocv.Mat, tiffFile string) error { log.Println("Saving PAN image to TIFF file:", tiffFile) - width := pan.Rows() - height := pan.Cols() + width := pan.Cols() + height := pan.Rows() ds, err := godal.Create(godal.GTiff, tiffFile, 1, godal.UInt16, width, height) if err != nil { @@ -166,8 +166,8 @@ func (r *Registrator) SaveRegisteredMssToRaw(raw string) error { mssData[i] = r.registeredMssImages[i].ToBytes() } - width := r.MssWidth * PixelBytes - height := r.MssHeight + width := r.registeredMssImages[0].Cols() * PixelBytes + height := r.registeredMssImages[0].Rows() log.Println("Writing registered MSS to RAW file...", len(mssData[0])*4) log.Println("width:", width) log.Println("height:", height) @@ -180,9 +180,9 @@ func (r *Registrator) SaveRegisteredMssToRaw(raw string) error { } hdr := EnviHdr{ - Samples: r.MssWidth, - Lines: r.MssHeight, - Bands: MssBands, + Samples: 4 * width / PixelBytes, + Lines: height, + Bands: 1, } hdrFile := filepath.Join(filepath.Dir(raw),