{"id":20610,"url":"https://patchwork.libcamera.org/api/1.1/patches/20610/?format=json","web_url":"https://patchwork.libcamera.org/patch/20610/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20240705144209.418906-22-stefan.klug@ideasonboard.com>","date":"2024-07-05T14:41:57","name":"[v4,21/23] libtuning: lsc: rkisp1: Do not calculate ratios to green","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"2ff940e74d0854ed3be80569eabf6e00d6b0586d","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/1.1/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/20610/mbox/","series":[{"id":4446,"url":"https://patchwork.libcamera.org/api/1.1/series/4446/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4446","date":"2024-07-05T14:41:36","name":"Add ccm calibration to libtuning","version":4,"mbox":"https://patchwork.libcamera.org/series/4446/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/20610/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/20610/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 18BCBBD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  5 Jul 2024 14:43:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8873663372;\n\tFri,  5 Jul 2024 16:43:09 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0EBD663370\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  5 Jul 2024 16:43:07 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:60b6:33a3:3a20:6030])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8246C7F3;\n\tFri,  5 Jul 2024 16:42:37 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"WcpHachM\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1720190557;\n\tbh=YvzagfVbxmigopseJCYyHBHtaIrLbLD2CrsmtPEMRx4=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=WcpHachMW3Y5J+dhfhl25mLEQnr4N3qWBhoZHtS7FccRqtEeBMWkmRA25VYExQIPV\n\tGBtvYamaT7GZanoWgYksC0c0pTLKMOd/zQU+MIHOyeXJvcc6z2hZjwIt0mgdnzgpan\n\tJqFORdyipMd9L/IyhektTOT8bYUt9Rep6TmFT8yc=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>","Subject":"[PATCH v4 21/23] libtuning: lsc: rkisp1: Do not calculate ratios to\n\tgreen","Date":"Fri,  5 Jul 2024 16:41:57 +0200","Message-ID":"<20240705144209.418906-22-stefan.klug@ideasonboard.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20240705144209.418906-1-stefan.klug@ideasonboard.com>","References":"<20240705144209.418906-1-stefan.klug@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"The current LSC algorithm for the rkisp1 just forwards the LSC tables to\nthe hardware, so absolute factors are needed and not ratios compared to\ngreen. Therefore every channel needs to be calculated independently.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n utils/tuning/libtuning/modules/lsc/rkisp1.py | 14 +++++++-------\n 1 file changed, 7 insertions(+), 7 deletions(-)","diff":"diff --git a/utils/tuning/libtuning/modules/lsc/rkisp1.py b/utils/tuning/libtuning/modules/lsc/rkisp1.py\nindex 512233aeae9d..c02b2306b37b 100644\n--- a/utils/tuning/libtuning/modules/lsc/rkisp1.py\n+++ b/utils/tuning/libtuning/modules/lsc/rkisp1.py\n@@ -33,13 +33,13 @@ class LSCRkISP1(LSC):\n     #         table, flattened array of (blue's) green calibration table\n \n     def _do_single_lsc(self, image: lt.Image):\n-        cgr, gr = self._lsc_single_channel(image.channels[lt.Color.GR], image)\n-        cgb, gb = self._lsc_single_channel(image.channels[lt.Color.GB], image)\n-\n-        # \\todo Should these ratio against the average of both greens or just\n-        # each green like we've done here?\n-        cr, _ = self._lsc_single_channel(image.channels[lt.Color.R], image, gr)\n-        cb, _ = self._lsc_single_channel(image.channels[lt.Color.B], image, gb)\n+        # Perform LSC on each colour channel independently. A future enhancement\n+        # worth investigating would be splitting the luminance and chrominance\n+        # LSC as done by Raspberry Pi.\n+        cgr, _ = self._lsc_single_channel(image.channels[lt.Color.GR], image)\n+        cgb, _ = self._lsc_single_channel(image.channels[lt.Color.GB], image)\n+        cr, _ = self._lsc_single_channel(image.channels[lt.Color.R], image)\n+        cb, _ = self._lsc_single_channel(image.channels[lt.Color.B], image)\n \n         return image.color, cr.flatten(), cb.flatten(), cgr.flatten(), cgb.flatten()\n \n","prefixes":["v4","21/23"]}