Hello, I'm not an image processing expert, but was trying to write a small program to convert images to grayscale, just for the fun of it [1].
First I managed to get something working with image/draw, then I discovered about github.com/disintegration/gift through an old post here. I realized the output images had a different luminance, what led me to dig a bit deeper to see how the implementations differed. image/color [2]: y := (299*r + 587*g + 114*b + 500) / 1000 gift [3]: y := 0.299*px.R + 0.587*px.G + 0.114*px.B The initially funny numbers, weights, match those described in Wikipedia [4]. I went ahead and compared to what Matlab [5] and Octave [6] do and found a similar formula. I did not understand why image/color adds an extra 0.5 (500/1000) to y. Could anybody give me a clue? [1] https://gist.github.com/rhcarvalho/5e97f310701528f5a0610415e317b992 [2] image/color: https://github.com/golang/go/blob/master/src/image/color/color.go#L249 [3] GIFT: https://github.com/disintegration/gift/blob/master/colors.go#L252 [4] https://en.wikipedia.org/wiki/Grayscale#Luma_coding_in_video_systems [5] Matlab: https://www.mathworks.com/help/matlab/ref/rgb2gray.html#expand_body_buiz8mj-9 [6] Octave: https://sourceforge.net/p/octave/image/ci/default/tree/inst/rgb2gray.m#l43 Thanks, Rodolfo Carvalho -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.