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 PansharpenSimpleMean(pan, B, G, R, I gocv.Mat) error { return nil }
|
||||||
|
|
||||||
func PansharpenESRI(pan, B, G, R, I gocv.Mat) gocv.Mat {
|
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()
|
defer bgrn_mean.Close()
|
||||||
ADJ := gocv.NewMat()
|
ADJ := gocv.NewMat()
|
||||||
defer ADJ.Close()
|
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 y := 0; y < pan.Rows(); y++ {
|
||||||
for x := 0; x < pan.Cols(); x++ {
|
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)
|
v := (R.GetFloatAt(y, x) + G.GetFloatAt(y, x) + B.GetFloatAt(y, x) + I.GetFloatAt(y, x)) / 4
|
||||||
bgrn_mean.SetShortAt(y, x, int16(v))
|
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)
|
gocv.Add(I, ADJ, &I)
|
||||||
|
|
||||||
mss := gocv.NewMat()
|
mss := gocv.NewMat()
|
||||||
|
mt := gocv.MatTypeCV16UC3
|
||||||
switch config.GCONFIG.CoRegistration.FUSBandOrder {
|
switch config.GCONFIG.CoRegistration.FUSBandOrder {
|
||||||
case "RGB":
|
case "RGB":
|
||||||
gocv.Merge([]gocv.Mat{R, G, B}, &mss)
|
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)
|
gocv.Merge([]gocv.Mat{B, G, R}, &mss)
|
||||||
case "RGBI":
|
case "RGBI":
|
||||||
gocv.Merge([]gocv.Mat{R, G, B, I}, &mss)
|
gocv.Merge([]gocv.Mat{R, G, B, I}, &mss)
|
||||||
|
mt = gocv.MatTypeCV16UC4
|
||||||
case "BGRI":
|
case "BGRI":
|
||||||
gocv.Merge([]gocv.Mat{B, G, R, I}, &mss)
|
gocv.Merge([]gocv.Mat{B, G, R, I}, &mss)
|
||||||
|
mt = gocv.MatTypeCV16UC4
|
||||||
default:
|
default:
|
||||||
gocv.Merge([]gocv.Mat{R, G, B}, &mss)
|
gocv.Merge([]gocv.Mat{R, G, B}, &mss)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mss.ConvertTo(&mss, mt)
|
||||||
|
|
||||||
return mss
|
return mss
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user