From 2112637fafb256b92e46c3b13e0fe1f44774a7e9 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sun, 15 May 2022 19:54:53 +0200 Subject: [PATCH] Use HSP for RGB-to-BW8 conversion --- init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 3aaedbe71..90d8e3c5f 100644 --- a/init.lua +++ b/init.lua @@ -107,11 +107,15 @@ function image:encode_data_r8g8b8_to_bw8_raw() local raw_pixels = {} for _, row in ipairs(self.pixels) do for _, pixel in ipairs(row) do - -- see + -- the HSP RGB to brightness formula is + -- sqrt( 0.299 r² + .587 g² + .114 b² ) + -- see local gray = math.floor( - 0.299 * pixel[1] + - 0.587 * pixel[2] + - 0.114 * pixel[3] + math.sqrt( + 0.299 * pixel[1]^2 + + 0.587 * pixel[2]^2 + + 0.114 * pixel[3]^2 + ) + 0.5 ) local raw_pixel = string.char(gray) raw_pixels[#raw_pixels + 1] = raw_pixel