Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve performance of grayscale calculation steps #2

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

amclin
Copy link

@amclin amclin commented Oct 24, 2012

The grayscale calculation involving nested loops that check properties of the image on every loop are inefficient. On top of that, the extra calculation to determine the pixel position based on the interation of the nested loops adds more overhead

This can be collapsed into a single iterative loop, without an inner calculation. Considering this loop runs literally thousands of times on even a small image, simplification makes for a significant performance improvement.

Since the pixel rewrite loop will run literally thousands of times on just a single image, it makes sense to optimize it as much as possible.

Reducing to a single iterative loop instead of two nested loops.

Also reduce the math run inside of each loop to calculate the pixel position in the array.
The standard "Luma" formula is closer to how humans perceive colors and grayscale. While an average is technically correct, it doesn't match what the human eye perceives.

See http://www.tannerhelland.com/3643/grayscale-image-algorithm-vb6/ for more explanation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant