derkalle4 / python3-idotmatrix-client

reverse engineered python3 client to control all your 16x16 or 32x32 pixel displays (experimental)
GNU General Public License v3.0
199 stars 40 forks source link

Color reproduction issues #33

Open Mogy opened 7 months ago

Mogy commented 7 months ago

Hi.

I have previously obtained a 32x32 pixel display. It helps to reproduce the dots in games but has the problem of poor color reproduction. Especially the representation of white is terrible, it looks almost blue.

I understand that this is a hardware problem and difficult to solve with software, but do you have any useful ideas to improve the problem?

Thanks.

derkalle4 commented 7 months ago

Hi @Mogy,

many thanks for your issue :)

Yes, the displays may have a quite wrong color which is due to the cheap LEDs inside. There is not much we could do. With some little programming one could build some kind of lookup table for a given hex color and transform it somewhat to make it look more accurate. But that would imply to do a lot of manual testing for the different colors and what they actually should look like.

For example: if white would be too blue, and white is represented by 255,255,255 (RGB color scheme) then one could reduce the amount of blue like so: 255,255,230 and check if this looks better. The lookup table could then set the 230 for blue as 100% instead of 255 and work around the hardware limitations that way.

Not ideal and not working for all color variations of course but better than nothing.

Don't know whether we should build something like this to be honest. Would be a lot of work for not that much gain.

aviwad commented 4 months ago

Colors through the native photos of idotmatrix app looks beautiful. but the images i process via the library look extremely washed out. is it possilbe that the official idotmatrix app is compensating for the display somehow?

aviwad commented 4 months ago

I've been using the following ImageMagick command to get better color production: magick $INPUT -resize 32x32 -modulate 100,150,100 -contrast -sharpen 0x1.0 -channel B -evaluate multiply 0.5 +channel $OUTPUT Will keep exploring other ways

derkalle4 commented 2 months ago

@aviwad many thanks for your feedback. Seems that the default conversion of the images is a problem. The app seem to behave different. Please post an update if you find some even better way to produce better colors :)

guilhermediasl commented 2 months ago

Following the issue with the colors, I am using the default color conversion and applying those RGB values for the following colors:

red = [255, 20, 10]
green = [54, 187, 10]
yellow = [244, 190, 0]
purple = [250, 0, 105]
white = [230, 170, 60]
blue = [10, 150, 155]