Unsolicited refactor :) #1
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi, saw your post on comparing Python, Go and Rust. Really cool that you are making the comparison.
Here's how I would refactor this to look more idiomatic Go. Each commit should explain itself, but feel free to ask questions. As usual, many of the changes are cosmetic, so feel free to ignore - getting working software matters more.
There are few things I was thinking but didn't make the changes, like that maybe RGBA colorspace isn't the right choice here. I would've probably gone for any of YUV, YCbCr, YPbPr, CIELab - since they represent human perception better.
Similarly when computing delta between RGBA it might make sense to use pre-multiplied alpha, otherwise you get differences between completely transparent pixels. However, depending on the exact use-case, it might not be the right choice.
There are a bunch of optimizations possible to make the Go version faster but probably doesn't matter here since the computation isn't too large.