From patchwork Fri May 17 08:01:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 20057 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id E84E5BDE6B for ; Fri, 17 May 2024 08:01:41 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 04D6463482; Fri, 17 May 2024 10:01:41 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="FvvASMxW"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A69796347C for ; Fri, 17 May 2024 10:01:38 +0200 (CEST) Received: from neptunite.hamster-moth.ts.net (h175-177-049-156.catv02.itscom.jp [175.177.49.156]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B5589512; Fri, 17 May 2024 10:01:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1715932889; bh=vhcDRyjViwYluIXwuDbFMZBJ2cGpCXLX6mt2mJCxk/M=; h=From:To:Cc:Subject:Date:From; b=FvvASMxWN0gMP3L2EmwIXnos3Az8osPr32PUS4f4PvoUTpjKuqcncIyhO2UpnVrGY Sk0OwgnAYsjqZC9hc2xrXge/piZcH1aBsi5Vgr5iTEB5YOe6syq0qxzPRqAV7FJvlW IywLlhWWYMgEL4VNAgowoo7CCok5pvmbvVw0Gfiw= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder Subject: [PATCH v4 0/3] ipa: rkisp1: Add crosstalk algorithm Date: Fri, 17 May 2024 17:01:26 +0900 Message-Id: <20240517080129.3876981-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" This patch series adds the crosstalk / color correction algorithm to the rkisp1 IPA. The last patch in this series depends on "[PATCH] libcamera: utils: Add a helper to convert floating-point to fixed-point". Interpolating matrices is likely to be a common functionaily, as lens shading correction also does it, and other IPAs will will want to do both color correction and lens shading correction. Because of this, the crosstalk is implemented using a generic matrix interpolator, which is added to libipa, in addition to a Matrix class. v3 mainly adds ccm offsets, and some fixes some initialization and asserts. v4 cleans up / optimizes the Matrix class and supports the reorganized tuning file layout for color correction matrices. Paul Elder (3): ipa: libipa: Add Matrix class ipa: libipa: Add MatrixInterpolator class ipa: rkisp1: algorithms: Add crosstalk algorithm src/ipa/libipa/matrix.cpp | 17 +++ src/ipa/libipa/matrix.h | 161 +++++++++++++++++++++++++ src/ipa/libipa/matrix_interpolator.cpp | 54 +++++++++ src/ipa/libipa/matrix_interpolator.h | 119 ++++++++++++++++++ src/ipa/libipa/meson.build | 4 + src/ipa/rkisp1/algorithms/ccm.cpp | 112 +++++++++++++++++ src/ipa/rkisp1/algorithms/ccm.h | 44 +++++++ src/ipa/rkisp1/algorithms/meson.build | 1 + 8 files changed, 512 insertions(+) create mode 100644 src/ipa/libipa/matrix.cpp create mode 100644 src/ipa/libipa/matrix.h create mode 100644 src/ipa/libipa/matrix_interpolator.cpp create mode 100644 src/ipa/libipa/matrix_interpolator.h create mode 100644 src/ipa/rkisp1/algorithms/ccm.cpp create mode 100644 src/ipa/rkisp1/algorithms/ccm.h