Show a patch.

GET /api/1.1/patches/20515/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 20515,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/20515/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/20515/",
    "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": "<20240703141726.252368-2-stefan.klug@ideasonboard.com>",
    "date": "2024-07-03T14:16:50",
    "name": "[v3,01/23] libtuning: Backport improvements in MacBeth search reliability",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "1b2fa2ff0918c4cae5a0848664bbe5235e2eb810",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/20515/mbox/",
    "series": [
        {
            "id": 4437,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4437/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4437",
            "date": "2024-07-03T14:16:49",
            "name": "Add ccm calibration to libtuning",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/4437/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/20515/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/20515/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 853FBBEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Jul 2024 14:17:38 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 404DD62E27;\n\tWed,  3 Jul 2024 16:17:38 +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 48F9B62C96\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Jul 2024 16:17:34 +0200 (CEST)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:9263:c199:9587:576])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 249208A9;\n\tWed,  3 Jul 2024 16:17:06 +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=\"S23eorpz\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1720016226;\n\tbh=i9AN0dt4XQULDpcikbR2FIlp+kwamVULwLdL7P7zjPM=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=S23eorpzOQocHMI69GXT6360/FioRrQSf0InwboiwvpXoYkCG2W+JJqgnFARqonRj\n\tYv3rOjDJVMu621WPzSpNanH/1xQYTbMvZSJ3IBJ1TspvjzE1niAF0aH+Rvye2A16oE\n\tWFhiFMhBoylgwg1EBDP5DK8moEhtAj7fLgs/lOGs=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>",
        "Subject": "[PATCH v3 01/23] libtuning: Backport improvements in MacBeth search\n\treliability",
        "Date": "Wed,  3 Jul 2024 16:16:50 +0200",
        "Message-ID": "<20240703141726.252368-2-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20240703141726.252368-1-stefan.klug@ideasonboard.com>",
        "References": "<20240703141726.252368-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": "Port 66479605baca4a22e2b7a17c2a8cf9f9be9a7724 into libtuning.\nOriginal message:\nImprove the Macbeth Chart search reliability\n\nPreviously the code would brighten up images in case the Macbeth Chart\nis slightly dark, and also zoom in on sections of it to look for\ncharts occupying less of the field of view. But it would not do both\ntogether.\n\nThis change makes the search for smaller charts also repeat that\nsearch for the brightened up images that it made earlier, thereby\nincreasing the chances of success for non-optimal tuning images.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n utils/tuning/libtuning/macbeth.py | 38 ++++++++++++++++++-------------\n 1 file changed, 22 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/utils/tuning/libtuning/macbeth.py b/utils/tuning/libtuning/macbeth.py\nindex e11824646a4f..81f3e87c9088 100644\n--- a/utils/tuning/libtuning/macbeth.py\n+++ b/utils/tuning/libtuning/macbeth.py\n@@ -403,10 +403,15 @@ def find_macbeth(img, mac_config):\n     # nothing more is tried as this is a high enough confidence to ensure\n     # reliable macbeth square centre placement.\n \n+    # Keep a list that will include this and any brightened up versions of\n+    # the image for reuse.\n+    all_images = [img]\n+\n     for brightness in [2, 4]:\n         if cor >= 0.75:\n             break\n         img_br = cv2.convertScaleAbs(img, alpha=brightness, beta=0)\n+        all_images.append(img_br)\n         cor_b, mac_b, coords_b, ret_b = get_macbeth_chart(img_br, ref_data)\n         if cor_b > cor:\n             cor, mac, coords, ret = cor_b, mac_b, coords_b, ret_b\n@@ -456,23 +461,24 @@ def find_macbeth(img, mac_config):\n         w_inc = int(w * pair['inc'])\n         h_inc = int(h * pair['inc'])\n \n-        loop = ((1 - pair['sel']) / pair['inc']) + 1\n+        loop = int(((1 - pair['sel']) / pair['inc']) + 1)\n         # For each subselection, look for a macbeth chart\n-        for i in range(loop):\n-            for j in range(loop):\n-                w_s, h_s = i * w_inc, j * h_inc\n-                img_sel = img[w_s:w_s + w_sel, h_s:h_s + h_sel]\n-                cor_ij, mac_ij, coords_ij, ret_ij = get_macbeth_chart(img_sel, ref_data)\n-\n-                # If the correlation is better than the best then record the\n-                # scale and current subselection at which macbeth chart was\n-                # found. Also record the coordinates, macbeth chart and message.\n-                if cor_ij > cor:\n-                    cor = cor_ij\n-                    mac, coords, ret = mac_ij, coords_ij, ret_ij\n-                    ii, jj = i, j\n-                    w_best, h_best = w_inc, h_inc\n-                    d_best = index + 1\n+        for img_br in all_images:\n+            for i in range(loop):\n+                for j in range(loop):\n+                    w_s, h_s = i * w_inc, j * h_inc\n+                    img_sel = img_br[w_s:w_s + w_sel, h_s:h_s + h_sel]\n+                    cor_ij, mac_ij, coords_ij, ret_ij = get_macbeth_chart(img_sel, ref_data)\n+\n+                    # If the correlation is better than the best then record the\n+                    # scale and current subselection at which macbeth chart was\n+                    # found. Also record the coordinates, macbeth chart and message.\n+                    if cor_ij > cor:\n+                        cor = cor_ij\n+                        mac, coords, ret = mac_ij, coords_ij, ret_ij\n+                        ii, jj = i, j\n+                        w_best, h_best = w_inc, h_inc\n+                        d_best = index + 1\n \n     # Transform coordinates from subselection to original image\n     if ii != -1:\n",
    "prefixes": [
        "v3",
        "01/23"
    ]
}