optimize ESRI
This commit is contained in:
@@ -110,15 +110,21 @@ func PansharpenBrovey(pan, B, G, R, I gocv.Mat, w float32) gocv.Mat {
|
||||
func PansharpenSimpleMean(pan, B, G, R, I gocv.Mat) error { return nil }
|
||||
|
||||
func PansharpenESRI(pan, B, G, R, I gocv.Mat) gocv.Mat {
|
||||
bgrn_mean := gocv.NewMatWithSize(pan.Rows(), pan.Cols(), pan.Type())
|
||||
bgrn_mean := gocv.NewMatWithSize(pan.Rows(), pan.Cols(), gocv.MatTypeCV32F)
|
||||
defer bgrn_mean.Close()
|
||||
ADJ := gocv.NewMat()
|
||||
defer ADJ.Close()
|
||||
|
||||
pan.ConvertTo(&pan, gocv.MatTypeCV32F)
|
||||
B.ConvertTo(&B, gocv.MatTypeCV32F)
|
||||
G.ConvertTo(&G, gocv.MatTypeCV32F)
|
||||
R.ConvertTo(&R, gocv.MatTypeCV32F)
|
||||
I.ConvertTo(&I, gocv.MatTypeCV32F)
|
||||
|
||||
for y := 0; y < pan.Rows(); y++ {
|
||||
for x := 0; x < pan.Cols(); x++ {
|
||||
v := uint16((R.GetFloatAt(y, x) + G.GetFloatAt(y, x) + B.GetFloatAt(y, x) + I.GetFloatAt(y, x)) / 4)
|
||||
bgrn_mean.SetShortAt(y, x, int16(v))
|
||||
v := (R.GetFloatAt(y, x) + G.GetFloatAt(y, x) + B.GetFloatAt(y, x) + I.GetFloatAt(y, x)) / 4
|
||||
bgrn_mean.SetFloatAt(y, x, v)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +136,7 @@ func PansharpenESRI(pan, B, G, R, I gocv.Mat) gocv.Mat {
|
||||
gocv.Add(I, ADJ, &I)
|
||||
|
||||
mss := gocv.NewMat()
|
||||
mt := gocv.MatTypeCV16UC3
|
||||
switch config.GCONFIG.CoRegistration.FUSBandOrder {
|
||||
case "RGB":
|
||||
gocv.Merge([]gocv.Mat{R, G, B}, &mss)
|
||||
@@ -137,12 +144,16 @@ func PansharpenESRI(pan, B, G, R, I gocv.Mat) gocv.Mat {
|
||||
gocv.Merge([]gocv.Mat{B, G, R}, &mss)
|
||||
case "RGBI":
|
||||
gocv.Merge([]gocv.Mat{R, G, B, I}, &mss)
|
||||
mt = gocv.MatTypeCV16UC4
|
||||
case "BGRI":
|
||||
gocv.Merge([]gocv.Mat{B, G, R, I}, &mss)
|
||||
mt = gocv.MatTypeCV16UC4
|
||||
default:
|
||||
gocv.Merge([]gocv.Mat{R, G, B}, &mss)
|
||||
}
|
||||
|
||||
mss.ConvertTo(&mss, mt)
|
||||
|
||||
return mss
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user