-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
Dithering with a grayscale palette has "unexpected" results with color image input #7
Comments
The README now mentions this, I think that's good enough. |
This issue has been fixed in the This issue will be closed once the branch is merged, the README has been updated to remove mention of this, and didder code and docs are updated to not automatically convert the image to grayscale if the palette is grayscale. |
I don’t know your particular formulas, but the general order of events I would try for this would be:
Use the output of 4. as your metric of distance for the dithering. |
"unexpected" is in quotes because the math is sound, but the result is almost never what you want. This is a property of dithering, and is not related to the library code.
The bad output can be very severe with error diffusion dithering, but ordered dithering still can have issues too.
The solution is to always make an image grayscale before dithering with a grayscale palette. The library should have a convenience function for this, as well as explain it in the README. Should the library detect grayscale palettes and make the image grayscale automatically when dithering? Probably not, the user should still have the option to.
Example
Original image:
Original image but made to black and white:
Floyd-Steinberg dithering the color image with an 8-bit sRGB grayscale palette of 0, 156, 213, 255. 100% strength:
And the same, but dithering the black and white image:
The text was updated successfully, but these errors were encountered: