MetaTube / imageutil /hash.go
henry99a's picture
Clean commit for Hugging Face Spaces without binary files
ca7217f
package imageutil
import (
"image"
"github.com/corona10/goimagehash"
)
const (
thAverageHash = 6
thDifferenceHash = 5
thPerceptionHash = 6
)
func AverageHashDistance(imgA, imgB image.Image) (distance int) {
hashA, _ := goimagehash.AverageHash(imgA)
hashB, _ := goimagehash.AverageHash(imgB)
distance, _ = hashA.Distance(hashB)
return
}
func DifferenceHashDistance(imgA, imgB image.Image) (distance int) {
hashA, _ := goimagehash.DifferenceHash(imgA)
hashB, _ := goimagehash.DifferenceHash(imgB)
distance, _ = hashA.Distance(hashB)
return
}
func PerceptionHashDistance(imgA, imgB image.Image) (distance int) {
hashA, _ := goimagehash.PerceptionHash(imgA)
hashB, _ := goimagehash.PerceptionHash(imgB)
distance, _ = hashA.Distance(hashB)
return
}
func Similar(imgA, imgB image.Image) bool {
switch {
case AverageHashDistance(imgA, imgB) < thAverageHash:
return true
case DifferenceHashDistance(imgA, imgB) < thDifferenceHash:
return true
case PerceptionHashDistance(imgA, imgB) < thPerceptionHash:
return true
default:
return false
}
}