This is a simple grayscale filter implementening `image.Image`. It can be used in place where an `image.Image` is expected. ```go img, err := loadImage("input.jpg") // check error err := saveImage(&GrayscaleFilter{img}) //check error ``` The approach above uses the so-called ["luminosity method"](https://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/) for averaging colors --- P.S. Learn more about this and other Graphics Programming stuff in Go in my book [Generative Art in Go](https://gumroad.com/l/generative-art-in-golang).