暂时使用星下点坐标作为图像左上角坐标
This commit is contained in:
@@ -59,9 +59,7 @@ func GTiffToJPG(ftiff, fjpg string, reversed bool) error {
|
||||
channels := gocv.Split(img)
|
||||
for i, ch := range channels {
|
||||
// 2. 计算图像的最小值和最大值
|
||||
minVal, maxVal, minLoc, maxLoc := gocv.MinMaxLoc(ch)
|
||||
log.Printf("Min value: %f, Max value: %f, min location: %v, max location: %v", minVal, maxVal, minLoc, maxLoc)
|
||||
|
||||
minVal, maxVal, _, _ := gocv.MinMaxLoc(ch)
|
||||
// 3. 将16位图像线性拉伸到8位图像
|
||||
scale := 255.0 / (maxVal - minVal)
|
||||
shift := -minVal * scale
|
||||
@@ -85,10 +83,6 @@ func GTiffToJPG(ftiff, fjpg string, reversed bool) error {
|
||||
0, 0, gocv.InterpolationCubic)
|
||||
|
||||
// 7. 应用伽玛校正提升亮度
|
||||
// avgBrightness := calculateAverageBrightness(img8bit)
|
||||
// gamma := determineGammaValue(avgBrightness)
|
||||
// log.Printf("Average Brightness: %f, Determined Gamma: %f", avgBrightness, gamma)
|
||||
|
||||
gammaCorrected := applyGammaCorrection(img8bit, 1.6) // 伽玛值
|
||||
defer gammaCorrected.Close()
|
||||
ok := gocv.IMWriteWithParams(fjpg, gammaCorrected, []int{gocv.IMWriteJpegOptimize, 1})
|
||||
@@ -96,9 +90,6 @@ func GTiffToJPG(ftiff, fjpg string, reversed bool) error {
|
||||
err = fmt.Errorf("error saving %s", fjpg)
|
||||
return err
|
||||
}
|
||||
|
||||
// gocv.IMWrite(strings.Replace(fjpg, ".jpg", "_8.jpg", 1), img8bit)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -121,24 +112,3 @@ func applyGammaCorrection(src gocv.Mat, gamma float64) gocv.Mat {
|
||||
gocv.LUT(src, gammaMat, &dst)
|
||||
return dst
|
||||
}
|
||||
|
||||
// calculateAverageBrightness calculates the average brightness of the image
|
||||
func calculateAverageBrightness(img gocv.Mat) float64 {
|
||||
if img.Channels() == 1 {
|
||||
return img.Mean().Val1
|
||||
}
|
||||
gray := gocv.NewMat()
|
||||
defer gray.Close()
|
||||
gocv.CvtColor(img, &gray, gocv.ColorBGRToGray)
|
||||
return gray.Mean().Val1
|
||||
}
|
||||
|
||||
// determineGammaValue determines an appropriate gamma value based on the average brightness
|
||||
func determineGammaValue(avgBrightness float64) float64 {
|
||||
targetBrightness := 180.0
|
||||
if avgBrightness < 0.1 {
|
||||
return 1.0
|
||||
}
|
||||
gamma := math.Log(targetBrightness/255.0) / math.Log(avgBrightness/255.0)
|
||||
return gamma
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user