parametres input

This commit is contained in:
nuknal
2024-05-28 09:16:59 +08:00
parent c7bbb632f5
commit 538fb71110
2 changed files with 13 additions and 14 deletions

View File

@@ -1,9 +1,10 @@
package imageproc package imageproc
import ( import (
"fmt"
"image" "image"
log "github.com/sirupsen/logrus"
"gocv.io/x/gocv" "gocv.io/x/gocv"
) )
@@ -13,14 +14,12 @@ const (
// IHS 变换是一种将 RGB 空间转换为亮度、色调和饱和度的变换方法 // IHS 变换是一种将 RGB 空间转换为亮度、色调和饱和度的变换方法
func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat { func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat {
// pan32 := gocv.NewMat() log.Println("start pansharpen IHS")
// defer pan32.Close()
// panImage.ConvertTo(&pan32, gocv.MatTypeCV32FC1)
mss32F := gocv.NewMat() mss32F := gocv.NewMat()
mssImage.ConvertTo(&mss32F, gocv.MatTypeCV32FC4) mssImage.ConvertTo(&mss32F, gocv.MatTypeCV32FC4)
// 调整 MSS 图像的大小到与 PAN 图像相同的大小 // 调整 MSS 图像的大小到与 PAN 图像相同的大小
log.Println("resize mss to pan size")
mssResized := gocv.NewMat() mssResized := gocv.NewMat()
defer mssResized.Close() defer mssResized.Close()
gocv.Resize(mss32F, &mssResized, gocv.Resize(mss32F, &mssResized,
@@ -37,8 +36,6 @@ func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat {
// Saturation // Saturation
hlsChannels := gocv.Split(mssHLS) hlsChannels := gocv.Split(mssHLS)
fmt.Println("size of channels:", len(hlsChannels), mssImage.Channels(), mssResized.Channels(), mssHLS.Channels())
// 使用 PAN 图像替换亮度分量Intensity // 使用 PAN 图像替换亮度分量Intensity
// hlsChannels[1] = pan32 // hlsChannels[1] = pan32
@@ -46,6 +43,7 @@ func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat {
panFloat := gocv.NewMat() panFloat := gocv.NewMat()
defer panFloat.Close() defer panFloat.Close()
panImage.ConvertTo(&panFloat, gocv.MatTypeCV32F) panImage.ConvertTo(&panFloat, gocv.MatTypeCV32F)
log.Println("normalize pan to 0-255")
gocv.Normalize(panFloat, &panFloat, 0, 255, gocv.NormMinMax) gocv.Normalize(panFloat, &panFloat, 0, 255, gocv.NormMinMax)
hlsFloat := gocv.NewMat() hlsFloat := gocv.NewMat()
@@ -62,6 +60,7 @@ func PansharpenIHS(panImage, mssImage gocv.Mat) gocv.Mat {
// 将图像从 HLS 转换回 BGR // 将图像从 HLS 转换回 BGR
fusedImage := gocv.NewMat() fusedImage := gocv.NewMat()
defer fusedImage.Close() defer fusedImage.Close()
log.Println("cvt color from HLS to BGR")
gocv.CvtColor(mssHLS, &fusedImage, gocv.ColorHLSToBGR) gocv.CvtColor(mssHLS, &fusedImage, gocv.ColorHLSToBGR)
// 交换 B 和 R 通道 // 交换 B 和 R 通道

View File

@@ -25,8 +25,8 @@ func (r *Registrator) SaveFilteredPanToGDALGTiff(tiffFile string) error {
func savePanToGDALGTiff(pan gocv.Mat, tiffFile string) error { func savePanToGDALGTiff(pan gocv.Mat, tiffFile string) error {
log.Println("Saving PAN image to TIFF file:", tiffFile) log.Println("Saving PAN image to TIFF file:", tiffFile)
width := pan.Rows() width := pan.Cols()
height := pan.Cols() height := pan.Rows()
ds, err := godal.Create(godal.GTiff, tiffFile, 1, godal.UInt16, width, height) ds, err := godal.Create(godal.GTiff, tiffFile, 1, godal.UInt16, width, height)
if err != nil { if err != nil {
@@ -166,8 +166,8 @@ func (r *Registrator) SaveRegisteredMssToRaw(raw string) error {
mssData[i] = r.registeredMssImages[i].ToBytes() mssData[i] = r.registeredMssImages[i].ToBytes()
} }
width := r.MssWidth * PixelBytes width := r.registeredMssImages[0].Cols() * PixelBytes
height := r.MssHeight height := r.registeredMssImages[0].Rows()
log.Println("Writing 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("width:", width)
log.Println("height:", height) log.Println("height:", height)
@@ -180,9 +180,9 @@ func (r *Registrator) SaveRegisteredMssToRaw(raw string) error {
} }
hdr := EnviHdr{ hdr := EnviHdr{
Samples: r.MssWidth, Samples: 4 * width / PixelBytes,
Lines: r.MssHeight, Lines: height,
Bands: MssBands, Bands: 1,
} }
hdrFile := filepath.Join(filepath.Dir(raw), hdrFile := filepath.Join(filepath.Dir(raw),