Show a cover letter.

GET /api/1.1/covers/22615/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 22615,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/22615/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/22615/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20250123114204.79321-1-stefan.klug@ideasonboard.com>",
    "date": "2025-01-23T11:40:50",
    "name": "[v2,00/17] Add Bayesian AWB algorithm to libipa and rkisp1",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/22615/mbox/",
    "series": [
        {
            "id": 4966,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4966/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4966",
            "date": "2025-01-23T11:40:50",
            "name": "Add Bayesian AWB algorithm to libipa and rkisp1",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/4966/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/22615/comments/",
    "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 2527ABDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 23 Jan 2025 11:42:14 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0320A6855B;\n\tThu, 23 Jan 2025 12:42:12 +0100 (CET)",
            "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 89CC961878\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 Jan 2025 12:42:11 +0100 (CET)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:c0a:33cd:b453:5d3f])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EE350465;\n\tThu, 23 Jan 2025 12:41:07 +0100 (CET)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"nFJf+kqn\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1737632468;\n\tbh=ViB+/2LaWYwnv8VGYJ6/1UvEzYlrpb1y8bJu2/pYC8U=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=nFJf+kqnHWq1gLCg9wVXRtctCZdyu5AAai//zOENDksIci+sDa2LlYJk/AafM1L5w\n\tbRzyQQeN1+B4YGxHGwJb5mKeiZmx3/pYc7CQp/LrJlMimIPXJNppdUTlktOl0Msm0H\n\tw73RTUOMMiu7XP3GTc6jfhndfXvqSsNHxiruoBV0=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH v2 00/17] Add Bayesian AWB algorithm to libipa and rkisp1",
        "Date": "Thu, 23 Jan 2025 12:40:50 +0100",
        "Message-ID": "<20250123114204.79321-1-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "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 Bayesian AWB algorithm improves the AWB performance by taking prior\nlikelihoods for a colour temperature given a measured lux level into\naccount.\n\nThe algorithm was first implemented by RaspberryPi and is documented in\nthe RaspberryPi camera guide. This series takes that implementation and\nadapts it for the use on libipa and the rkisp1 pipeline. It still keeps\nthe grey world algorithm as a fallback or as a simple alternative that\ndoes not require any tuning.\n\nPatches 1-2 add small utility functions in lipia.\n\nPatches 3-7 prepare for the bayes AWB integration. First some base\nclasses are added to be able to implement different AWB algorithms with\na common interface. Then the grey world algorithm from rkisp1 is moved\ninto libipa.\n\nPatches 8-10 add the bayes AWB algorithm to libtuning and libipa and\nintegrate it into the rkisp1 IPA.\n\nPatch 11 is a small fix to start the camera with better default gains.\n\nIn version 2 the review comments were handled. Additionally the lux\nsupport was completed with a tuning module and corresponding plumbing\n(patches 12-14). On top of that the bayesian AWB algorithm logging was\nfurther improved and the scale of the priors was changed to be linear. I\nkept the last three patches at the end because they show structural\nchanges made compared to the original version (which was already\nreviewed). I could squash them into the corresponding earlier patches if\nneeded.\n\nPlease see the individual patches for a detailed changelog.\n\nBest regards,\nStefan\n\n\nStefan Klug (17):\n  libipa: interpolator: Add accessor to internal data\n  libipa: pwl: Add clear() function\n  libipa: Add AWB algorithm base class\n  libipa: awb: Add helper functions for AWB mode support\n  libipa: Add grey world AWB algorithm\n  ipa: rkisp1: Move calculation of RGB means into own function\n  ipa: rkisp1: Use grey world algorithm from libipa\n  libtuning: module: awb: Add bayes AWB support\n  libipa: Add bayesian AWB algorithm\n  ipa: rkisp1: Add support for bayes AWB algorithm from libipa\n  ipa: rkisp1: awb: Apply gains based on default colour temperature on\n    start\n  libtuning: Add module for lux calibration\n  utils: tuning: rkisp1: Add lux module\n  libipa: lux: Update for a normalized referenceY to 1\n  libipa: awb_bayes: Add logging of value limits\n  libipa: awb_bayes: Remove overly verbose log messages\n  libipa: awb_bayes: Change the probabilities from log space into linear\n    space\n\n src/ipa/libipa/awb.cpp                        | 265 ++++++++++\n src/ipa/libipa/awb.h                          |  64 +++\n src/ipa/libipa/awb_bayes.cpp                  | 500 ++++++++++++++++++\n src/ipa/libipa/awb_bayes.h                    |  67 +++\n src/ipa/libipa/awb_grey.cpp                   | 114 ++++\n src/ipa/libipa/awb_grey.h                     |  35 ++\n src/ipa/libipa/interpolator.cpp               |  10 +-\n src/ipa/libipa/interpolator.h                 |   5 +\n src/ipa/libipa/lux.cpp                        |  16 +-\n src/ipa/libipa/lux.h                          |   3 +-\n src/ipa/libipa/meson.build                    |   6 +\n src/ipa/libipa/pwl.cpp                        |   5 +\n src/ipa/libipa/pwl.h                          |   1 +\n src/ipa/rkisp1/algorithms/awb.cpp             | 166 ++++--\n src/ipa/rkisp1/algorithms/awb.h               |   7 +-\n src/ipa/rkisp1/algorithms/lux.cpp             |   4 -\n utils/tuning/config-example.yaml              |  44 +-\n utils/tuning/libtuning/modules/awb/awb.py     |  16 +-\n utils/tuning/libtuning/modules/awb/rkisp1.py  |  21 +-\n .../tuning/libtuning/modules/lux/__init__.py  |   6 +\n utils/tuning/libtuning/modules/lux/lux.py     |  70 +++\n utils/tuning/libtuning/modules/lux/rkisp1.py  |  22 +\n utils/tuning/rkisp1.py                        |  14 +-\n 23 files changed, 1367 insertions(+), 94 deletions(-)\n create mode 100644 src/ipa/libipa/awb.cpp\n create mode 100644 src/ipa/libipa/awb.h\n create mode 100644 src/ipa/libipa/awb_bayes.cpp\n create mode 100644 src/ipa/libipa/awb_bayes.h\n create mode 100644 src/ipa/libipa/awb_grey.cpp\n create mode 100644 src/ipa/libipa/awb_grey.h\n create mode 100644 utils/tuning/libtuning/modules/lux/__init__.py\n create mode 100644 utils/tuning/libtuning/modules/lux/lux.py\n create mode 100644 utils/tuning/libtuning/modules/lux/rkisp1.py"
}