{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "b66fcc80",
   "metadata": {},
   "source": [
    "# Camera Calibration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d870dd94",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'np' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pts1 \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241m.\u001b[39marray([(\u001b[38;5;241m1065\u001b[39m, \u001b[38;5;241m800\u001b[39m),(\u001b[38;5;241m1172\u001b[39m, \u001b[38;5;241m800\u001b[39m),(\u001b[38;5;241m1060\u001b[39m, \u001b[38;5;241m758\u001b[39m),(\u001b[38;5;241m1407\u001b[39m, \u001b[38;5;241m726\u001b[39m),(\u001b[38;5;241m1390\u001b[39m, \u001b[38;5;241m698\u001b[39m),(\u001b[38;5;241m1255\u001b[39m, \u001b[38;5;241m452\u001b[39m),(\u001b[38;5;241m1247\u001b[39m, \u001b[38;5;241m439\u001b[39m),(\u001b[38;5;241m1273\u001b[39m, \u001b[38;5;241m452\u001b[39m),(\u001b[38;5;241m896\u001b[39m, \u001b[38;5;241m721\u001b[39m),(\u001b[38;5;241m900\u001b[39m, \u001b[38;5;241m693\u001b[39m)])\n\u001b[1;32m      2\u001b[0m pts2 \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([(\u001b[38;5;241m1007\u001b[39m, \u001b[38;5;241m73\u001b[39m),(\u001b[38;5;241m953\u001b[39m, \u001b[38;5;241m73\u001b[39m),(\u001b[38;5;241m1007\u001b[39m, \u001b[38;5;241m128\u001b[39m),(\u001b[38;5;241m807\u001b[39m, \u001b[38;5;241m170\u001b[39m),(\u001b[38;5;241m807\u001b[39m, \u001b[38;5;241m215\u001b[39m),(\u001b[38;5;241m807\u001b[39m, \u001b[38;5;241m788\u001b[39m),(\u001b[38;5;241m807\u001b[39m, \u001b[38;5;241m834\u001b[39m),(\u001b[38;5;241m789\u001b[39m, \u001b[38;5;241m788\u001b[39m),(\u001b[38;5;241m1103\u001b[39m, \u001b[38;5;241m170\u001b[39m),(\u001b[38;5;241m1103\u001b[39m, \u001b[38;5;241m215\u001b[39m)])\n\u001b[1;32m      3\u001b[0m H_c025, _ \u001b[38;5;241m=\u001b[39m cv2\u001b[38;5;241m.\u001b[39mfindHomography(pts1, pts2, cv2\u001b[38;5;241m.\u001b[39mRANSAC, \u001b[38;5;241m5.0\u001b[39m)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"
     ]
    }
   ],
   "source": [
    "pts1 = np.array([(1065, 800),(1172, 800),(1060, 758),(1407, 726),(1390, 698),(1255, 452),(1247, 439),(1273, 452),(896, 721),(900, 693)])\n",
    "pts2 = np.array([(1007, 73),(953, 73),(1007, 128),(807, 170),(807, 215),(807, 788),(807, 834),(789, 788),(1103, 170),(1103, 215)])\n",
    "H_c025, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(562, 971),(526, 1043),(395, 1039),(807, 493),(738, 508),(800, 508)])\n",
    "pts2 = np.array([(1007, 897),(1007, 953),(951, 953),(1007, 73),(951, 127),(1007, 127)])\n",
    "H_c026, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(60, 961),(124, 887),(672, 818),(686, 775),(788, 468),(1762, 882),(1829, 952),(1349, 440),(1413, 439),(1334, 425)])\n",
    "pts2 = np.array([(249, 953),(249, 897),(473, 831),(473, 788),(473, 215),(953, 897),(953, 953),(953, 127),(1007, 127),(953, 73)])\n",
    "H_c027, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(448, 763),(719, 551),(945, 505),(965, 484),(1093, 306),(1138, 309),(1148, 299)])\n",
    "pts2 = np.array([(473, 831),(807, 834),(953, 953),(1007, 953),(1711, 897),(1711, 953),(1767, 953)])\n",
    "H_c028, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(385, 1072),(532, 1065),(553, 995),(1136, 928),(1879, 902),(1280, 579),(696, 559),(700, 544),(631, 560)])\n",
    "pts2 = np.array([(1767, 73),(1711, 73),(1711, 127),(1457, 170),(1103, 170),(1125, 788),(1711, 897),(1711, 953),(1767, 897)])\n",
    "H_c029, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "H_list = [H_c025,H_c026,H_c027,H_c028,H_c029]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c808dec2-bb29-4037-a7c2-e2eca1a22128",
   "metadata": {},
   "source": [
    "# Test"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2984bbc3-f3d6-4489-bcfe-ce0a7a7cac87",
   "metadata": {},
   "source": [
    "# S022_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "25e5d98b-62ae-4977-8e59-1fbad10982cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(1753, 515), (1348, 411),(869, 289),(476, 231),(624, 227),(1093, 166)])\n",
    "pts2 = np.array([(1065, 197), (1065, 342),(1065, 562),(1108, 753),(1065, 709),(858, 562)])\n",
    "H_c124, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(176,447),(692,251),(1074,156),(400,147),(635,80),(929,161)])\n",
    "pts2 = np.array([(1065,562),(1065,342),(1108,153),(858,342),(861,197),(1065,197)])\n",
    "H_c125, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "# pts1 = np.array([(566, 488), (968, 548), (718,487), (1495,674), (1210, 449), (1393, 280)])\n",
    "# pts2 = np.array([(817, 153), (861, 342), (861,197), (861,562), (1065, 342), (1598, 197)])\n",
    "pts1 = np.array([(566, 488), (968, 548), (718,487), (1495,674), (1210, 449),(1413,477),(1305,320),(175,898)])\n",
    "pts2 = np.array([(817, 153), (861, 342), (861,197), (861,562), (1065, 342),(1040,452),(1400,200),(520,350)])\n",
    "H_c126, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC,5.0)\n",
    "\n",
    "pts1 = np.array([(508,388),(220,605),(760,471),(1007,410),(1151,410),(323,233),(408,233)])\n",
    "pts2 = np.array([(1065,562),(858,342),(858,562),(858,709),(817,753),(1598,709),(1554,753)])\n",
    "H_c127, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(117, 858), (66, 588), (198, 488),(1219, 251),(1361, 265)])\n",
    "pts2 = np.array([(858, 562), (858, 709),(817, 753),(369, 753),(325, 709)])\n",
    "H_c128, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(30,756),(601,697),(1284,623),(1638,584),(1033,505),(926,350),(1006,355), (1854,604)])\n",
    "pts2 = np.array([(1065,709),(1065,562),(1065,342),(1065,197),(858,342),(325,197),(367,153), (1108,153)])\n",
    "H_c129, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5324ead3-6902-4cf7-9a42-61cbfbf1732c",
   "metadata": {},
   "source": [
    "## S022"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8e36478f-7ec7-4a45-a2b1-88df37e70831",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(1753, 515),(1348, 411),(869, 289),(477, 242),(1093, 166)])\n",
    "pts2 = np.array([(1065, 194), (1065, 338),(1065, 558),(1107, 747),(848, 558)])\n",
    "H_c124, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(177,447),(693,251),(1077,157),(403,145),(635,85)])\n",
    "pts2 = np.array([(1065,558),(1065,338),(1107,155),(848,338),(857,197)])\n",
    "H_c125, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(567, 491),(967, 545),(1497, 671),(1210, 447),(1398, 275),(1441,1078),(179, 917),(1053,717)])\n",
    "pts2 = np.array([(812, 155), (848, 338),(848, 558),(1065, 338),(1602, 194),(634,627),(522, 353),(746,454)])\n",
    "H_c126, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(509,387),(220,604),(760,471),(1007,412),(1152,401),(323,229),(408,230)])\n",
    "pts2 = np.array([(1065,558),(848,338),(848,558),(848,708),(812,747),(1602,708),(1560,747)])\n",
    "H_c127, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(120, 858),(67, 589),(198, 487),(1219, 254),(1361, 265)])\n",
    "pts2 = np.array([(848, 558), (848, 708),(812, 747),(345, 747),(295, 708)])\n",
    "H_c128, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(30,756),(601,697),(1284,623),(1641,583),(1034,502),(925,348)])\n",
    "pts2 = np.array([(1065,708),(1065,558),(1065,338),(1065,194),(848,338),(317,197)])\n",
    "H_c129, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "H_list = [H_c124,H_c125,H_c126,H_c127,H_c128,H_c129]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f56a96d4-fbea-4184-afb4-693cc6a74ff5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "e30b2bc6-e367-48c9-980d-034669259c24",
   "metadata": {},
   "source": [
    "## S021"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce52ed88-b327-401d-8b82-3675ae2f7bd7",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(477, 239),(623, 228),(869, 288),(1348, 411),(1754, 515),(1091,169)])\n",
    "pts2 = np.array([(1055,732),(1014,694),(1014,543),(1014,323),(1014,182),(1055,138)])\n",
    "H_c118, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(177,447),(693,251),(400,145),(928,162),(1075,151)])\n",
    "pts2 = np.array([(1014,543),(1014,323),(800,323),(1014,182),(1055,138)])\n",
    "H_c119, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(567, 496),(718,488),(967, 545),(1495, 672),(1208, 447),(1398, 275)])\n",
    "pts2 = np.array([(752, 138), (800, 182), (800, 323),(800, 543),(1014, 323),(1550, 182)])\n",
    "H_c120, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(220,604),(509,389),(760,471),(1007,410),(1152,404),(323,233)])\n",
    "pts2 = np.array([(800,323),(1014,543),(800,543),(800,694),(752,732),(1550,694)])\n",
    "H_c121, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(120, 858),(67, 589),(198, 487),(1219, 254),(1361, 265)])\n",
    "pts2 = np.array([(800, 543), (800, 694),(752, 732),(290, 732),(249, 694)])\n",
    "H_c122, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(54,799),(260,730),(657,736),(1287,753),(1712,764),(746,520),(1221,530)])\n",
    "pts2 = np.array([(1055,732),(1014,694),(1014,543),(1014,323),(1014,182),(800,543),(800,323)])\n",
    "H_c123, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "\n",
    "H_list = [H_c118,H_c119,H_c120,H_c121,H_c122,H_c123]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ca6ebaa-8fbd-41f4-9567-9ca27e187e24",
   "metadata": {},
   "source": [
    "## S021_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d5a659f9-d9f4-4365-863d-adb2d304ac66",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'np' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m pts1 \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241m.\u001b[39marray([(\u001b[38;5;241m1753\u001b[39m, \u001b[38;5;241m515\u001b[39m), (\u001b[38;5;241m1348\u001b[39m, \u001b[38;5;241m411\u001b[39m),(\u001b[38;5;241m869\u001b[39m, \u001b[38;5;241m289\u001b[39m),(\u001b[38;5;241m476\u001b[39m, \u001b[38;5;241m231\u001b[39m),(\u001b[38;5;241m624\u001b[39m, \u001b[38;5;241m227\u001b[39m),(\u001b[38;5;241m1093\u001b[39m, \u001b[38;5;241m166\u001b[39m)])\n\u001b[1;32m      2\u001b[0m pts2 \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([(\u001b[38;5;241m1065\u001b[39m, \u001b[38;5;241m197\u001b[39m), (\u001b[38;5;241m1065\u001b[39m, \u001b[38;5;241m342\u001b[39m),(\u001b[38;5;241m1065\u001b[39m, \u001b[38;5;241m562\u001b[39m),(\u001b[38;5;241m1108\u001b[39m, \u001b[38;5;241m753\u001b[39m),(\u001b[38;5;241m1065\u001b[39m, \u001b[38;5;241m709\u001b[39m),(\u001b[38;5;241m858\u001b[39m, \u001b[38;5;241m562\u001b[39m)])\n\u001b[1;32m      3\u001b[0m H_c124, _ \u001b[38;5;241m=\u001b[39m cv2\u001b[38;5;241m.\u001b[39mfindHomography(pts1, pts2, cv2\u001b[38;5;241m.\u001b[39mRANSAC, \u001b[38;5;241m5.0\u001b[39m)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"
     ]
    }
   ],
   "source": [
    "pts1 = np.array([(1753, 515), (1348, 411),(869, 289),(476, 231),(624, 227),(1093, 166)])\n",
    "pts2 = np.array([(1065, 197), (1065, 342),(1065, 562),(1108, 753),(1065, 709),(858, 562)])\n",
    "H_c118, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(176,447),(692,251),(1074,156),(400,147),(635,80),(929,161)])\n",
    "pts2 = np.array([(1065,562),(1065,342),(1108,153),(858,342),(861,197),(1065,197)])\n",
    "H_c119, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "# pts1 = np.array([(566, 488), (968, 548), (718,487), (1495,674), (1210, 449), (1393, 280)])\n",
    "# pts2 = np.array([(817, 153), (861, 342), (861,197), (861,562), (1065, 342), (1598, 197)])\n",
    "pts1 = np.array([(566, 488), (968, 548), (718,487), (1495,674), (1210, 449),(1413,477),(1305,320),(175,898)])\n",
    "pts2 = np.array([(817, 153), (861, 342), (861,197), (861,562), (1065, 342),(1040,452),(1400,200),(520,350)])\n",
    "H_c120, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC,5.0)\n",
    "\n",
    "pts1 = np.array([(508,388),(220,605),(760,471),(1007,410),(1151,410),(323,233),(408,233)])\n",
    "pts2 = np.array([(1065,562),(858,342),(858,562),(858,709),(817,753),(1598,709),(1554,753)])\n",
    "H_c121, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(117, 858), (66, 588), (198, 488),(1219, 251),(1361, 265)])\n",
    "pts2 = np.array([(858, 562), (858, 709),(817, 753),(369, 753),(325, 709)])\n",
    "H_c122, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(258,728),(658,737),(1287,753),(1712,762),(746,520),(1221,530),(916,259)])\n",
    "pts2 = np.array([(1065,709),(1065,562),(1065,342),(1065,342),(861,562),(861,342),(400,520)])\n",
    "H_c123, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "\n",
    "H_list = [H_c118,H_c119,H_c120,H_c121,H_c122,H_c123]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7c741dbd-51cf-4f81-8807-e0e144e8cbab",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "8506d728-b5d6-4ad0-abfe-199c46938416",
   "metadata": {},
   "source": [
    "## S018"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "20245946-d76d-4147-8cc7-77397bb52f52",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(7, 563),(110, 563),(390, 563),(494, 563),(1159, 563),(1164, 563),(1545, 563),(1648, 563),(698,262),(1074,262),(1292,262)])\n",
    "pts2 = np.array([(304, 46),(304, 85),(304, 187),(304, 226),(304, 472),(304, 511),(304, 617),(304, 657),(810, 226),(810, 472),(810, 617)])\n",
    "H_c100, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(27, 842),(203, 826),(635, 781),(786, 765),(1157, 728),(1288, 715),(1612, 682),(1727, 671),(585,380),(846,368),(464,446),(849,484)])\n",
    "pts2 = np.array([(304, 472),(304, 511),(304, 617),(304, 657),(304, 761),(304, 801),(304, 909),(304, 949),(810,617),(810,761),(677,555),(566,723)])\n",
    "H_c101, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(655, 163),(649,175),(770, 175),(773, 163), (1134, 231),(1147, 255), (1271, 480),(1302, 535), (1412, 736),(1470, 840)])\n",
    "pts2 = np.array([(72, 36),(72,66),(135, 66),(135, 36), (304, 187),(304, 226), (304, 472),(304, 511), (304, 617),(304, 657)])\n",
    "H_c102, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(738,1065),(1009,1054),(1703,1027),(558,271),(1162,262)])\n",
    "pts2 = np.array([(783,621),(783,681),(783,516),(304,761),(304,511)])\n",
    "H_c103, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(216, 844),(366, 613),(541, 366),(1484, 347),(1646, 450),(1837, 578),(584,225)])\n",
    "pts2 = np.array([(681, 617),(553, 617),(304, 617),(304, 226),(439, 226),(553, 226),(0,636)])\n",
    "H_c104, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(95,528),(570,540),(601,489),(668,383),(687,352),(729,284),(743,262),(1517,378)])\n",
    "pts2 = np.array([(439,472),(304,472),(304,511),(304,617),(304,657),(304,761),(304,801),(0,636)])\n",
    "H_c105, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "\n",
    "H_list = [H_c100,H_c101,H_c102,H_c103,H_c104,H_c105]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3421bfa8-3ba1-4645-9cea-76450d365020",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "5fd9273e-8044-48ca-9649-b1e6800f40e1",
   "metadata": {},
   "source": [
    "## S014"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7de38420-a387-46a8-97f7-6fc303bd4b16",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(690, 603),(944, 573),(1073, 575),(1494, 483),(1586, 492),(1697, 705),(1822, 773)])\n",
    "pts2 = np.array([(761, 849),(620, 849),(576, 808),(57, 945),(57, 867),(576, 483),(621, 419)])\n",
    "H_c076, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(255,749),(383,548),(520,367),(623,338),(950,331),(1297,345),(1343,510),(1277, 405)])\n",
    "pts2 = np.array([(417,483),(576,483),(929,495),(999,549),(999,736),(932,922),(576,808),(761, 849)])\n",
    "H_c077, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(548, 614),(881,515),(1055, 510),(1711, 343), (1861, 359)])\n",
    "pts2 = np.array([(761, 849),(620,849),(576, 808),(57, 744), (58, 672)])\n",
    "H_c078, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(619,713),(651,561),(658,529),(724,385),(893,383),(1121,380),(1175,583),(1229,625)])\n",
    "pts2 = np.array([(57,945),(57,744),(58,672),(97,32),(233,32),(417,32),(246,808),(246,869)])\n",
    "H_c079, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(196, 523),(809, 456),(1016, 629),(1525, 810),(1672, 988)])\n",
    "pts2 = np.array([(999, 736),(932, 922),(761, 849),(620, 849),(576, 808)])\n",
    "H_c080, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(205,384),(294,367),(424,506),(763,541),(834,508),(929,516),(1061,400),(1758,653)])\n",
    "pts2 = np.array([(66,256),(66,182),(417,483),(576,483),(576,419),(621,419),(580,119),(929,495)])\n",
    "H_c081, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "H_list = [H_c076,H_c077,H_c078,H_c079,H_c080,H_c081]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "38561fb9-1ec0-40f5-bcfa-d0a7758f9c21",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "cb372274-b2e9-4311-ad5a-326b7b076649",
   "metadata": {},
   "source": [
    "## S009"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0775ee16-4349-4759-9ed2-af54cf59c48e",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(709, 407),(787, 405),(1013, 399),(1086, 398),(1263, 518),(1363, 564),(901,561),(691,507)])\n",
    "pts2 = np.array([(1307, 1320),(1245, 1320),(1052, 1320),(989, 1320),(1069, 745),(1069, 630),(1271,685),(1357,847)])\n",
    "H_c047, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(456,594),(551,474),(583,473),(746,471),(788,470),(1027,467),(1296,462),(1101,765),(1235,511),(875,575)])\n",
    "pts2 = np.array([(69,518),(72,68),(96,68),(220,68),(250,68),(432,64),(649,64),(327,825),(525,297),(285,495)])\n",
    "H_c048, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(143, 417),(660, 385),(821, 506),(1257, 550),(1497, 520),(1679, 299),(1620, 289),(1464, 262),(1439,919),(426,681),(327,386)])\n",
    "pts2 = np.array([(963, 244),(945, 491),(653, 491),(532, 630),(532, 745),(989, 1320),(1052, 1320),(1245, 1320),(285,517),(519,335),(987,337)])\n",
    "H_c049, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(697,354),(939,458),(1350,489),(1467,433),(1541,456),(1870,341),(458,300),(96,367),(729,528),(823,915)])\n",
    "pts2 = np.array([(653,877),(945,877),(1069,745),(1021,630),(1069,630),(963,244),(371,943),(511,1183),(988,992),(1275,1086)])\n",
    "H_c050, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(301, 713),(705, 595),(1591, 557),(1331, 441),(1619, 505),(1551, 483),(1397, 427),(1357, 411),(1259, 374),(1232, 364),(185,949),(803,759),(1763,833)])\n",
    "pts2 = np.array([(532, 745),(653, 877),(653, 1255),(945, 1255),(734, 1320),(797, 1320),(989, 1320),(1052, 1320),(1245, 1320),(1307, 1320),(375,754),(467,897),(368,1132)])\n",
    "H_c051, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "pts1 = np.array([(77,693),(497,655),(924,249),(1191,266),(1292,295),(1457,342),(1483,486),(367,919),(1689,851),(896,393)])\n",
    "pts2 = np.array([(1069,745),(1069,630),(66,247),(250,68),(432,64),(649,64),(963,244),(1222,661),(1266,382),(707,427)])\n",
    "H_c052, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC, 5.0)\n",
    "\n",
    "H_list = [H_c047,H_c048,H_c049,H_c050,H_c051,H_c052]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3d848598-e433-4654-9c8f-1da03eb7e0df",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f70642bb-64ab-422a-8421-74bd26488618",
   "metadata": {},
   "source": [
    "## S003"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9faf39c2-d116-48e9-a5a2-e79b44d98431",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(271,716),(300,686),(507,461),(525,461),(536,450),(1341,450),(1351,460),(1369,461),(1557,686),(1583,714),(1785,714),(758,786),(1060,785),(1754,433),(478,689),(719,689),(366,840),(664,839),(587,436),(785,435),(1408,944),(1630,943)])\n",
    "pts2 = np.array([(130,665),(130,627),(132,137),(147,137),(147,100),(814,100),(814,137),(828,137),(816,627),(816,665),(920,665),(487,753),(535,753),(1181,47),(228,631),(358,631),(228,807),(358,807),(181,51),(349,51),(621,895),(752,895)])\n",
    "H_c014, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(73,659),(152,668),(661,423),(677,424),(696,415),(729,669),(929,692),(953,665),(1142,455),(1151,445),(1400,826),(1526,840),(1812,376),(1887,449),(1909,470),(60,805),(332,847),(861,931)])\n",
    "pts2 = np.array([(487,753),(535,753),(513,137),(528,137),(528,100),(816,665),(920,665),(920,627),(920,137),(920,100),(1148,753),(1196,753),(1459,24),(1471,349),(1479,556),(621,895),(752,895),(972,895)])\n",
    "H_c015, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(60,810),(323,616),(420,544),(769,792),(800,506),(854,505),(858,494),(1114,515),(1119,524),(1201,725),(1212,750),(1414,750),(1529,494),(1548,506),(1580,515),(1597,524),(1615,524),(999,862),(1395,863),(1692,863),(1006,1014),(1486,1013),(1846,1013)])\n",
    "pts2 = np.array([(1459,24),(1471,349),(1479,556),(1181,47),(1196,704),(1148,704),(1148,753),(920,627),(920,665),(917,137),(917,100),(814,100),(535,753),(535,704),(521,665),(521,627),(507,627),(1036,-33),(860,-33),(728,-33),(1036,-165),(860,-165),(728,-165)])\n",
    "H_c016, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(1619,791),(1576,740),(1308,407),(1295,394),(1589,570),(1529,514),(1453,403),(1410,403),(1135,435),(1155,485),(1210,629),(781,434),(760,484),(699,629)])\n",
    "pts2 = np.array([(1196,753),(1148,753),(535,753),(487,753),(920,665),(816,665),(521,627),(521,665),(621,895),(752,895),(1016,895),(621,1027),(752,1027),(1016,1027)])\n",
    "H_c017, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(705, 926),(796, 950),(854, 906),(262,605),(297,612),(854,716),(989,679),(1114,575),(1157,581),(1217,394),(1276,601),(1294,588),(1303,496),(1222,412),(355,708),(629,771),(390,887),(1029,839),(1187,714),(1399,749),(1280,893)])\n",
    "pts2 = np.array([(1181, 47),(1181, 2),(1134, 2),(920,627),(920,664),(917,137),(814,100),(528,137),(528,100),(543,47),(543,2),(498,2),(147,100),(97,802),(1055,412),(1055,199),(1222,199),(1024,-36),(804,-36),(804,-168),(1024,-168)])\n",
    "H_c018, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(459,747),(539,773),(624,734),(813,545),(864,554),(964,517),(1178,459),(1238,467),(1265,455),(1016,354),(1151,736),(1277,651),(1453,535),(1567,837),(1651,727),(1761,581)])\n",
    "pts2 = np.array([(487,704),(487,753),(535,753),(816,627),(816,665),(920,665),(1148,704),(1148,753),(1196,753),(1471,349),(621,895),(752,895),(1016,895),(621,1071),(752,1071),(1016,1071)])\n",
    "H_c019, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "H_list = [H_c014,H_c015,H_c016,H_c017,H_c018,H_c019]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79ed86a7-6c50-4c63-91a7-4a11cc28becc",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "532e7340-2df9-4f3e-b7d2-eab76b015454",
   "metadata": {},
   "source": [
    "## S001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75be1fa5-350f-4795-842b-0e289dd4ba41",
   "metadata": {},
   "outputs": [],
   "source": [
    "pts1 = np.array([(165,1022),(390,764),(547,485),(629,402),(699,343),(905,291),(1002,144),(1019,118),(1026,105),(1046,91),(1130,71),(1227,97),(1232,114),(1272,264),(1277,280),(1352,280)])\n",
    "pts2 = np.array([(302,535),(373,535),(519,503),(589,503),(660,503),(738,642),(1130,642),(1250,642),(1292,642),(1369,657),(1478,736),(1290,844),(1260,844),(770,844),(740,844),(740,880)])\n",
    "H_c001, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(397,946),(555,948),(598,864),(773,410),(825,411),(830,402),(848,305),(879,305),(1040,296),(1100,405),(1227,641),(1336,845),(1404,963)])\n",
    "pts2 = np.array([(1290,880),(1290,844),(1260,844),(770,880),(770,844),(740,844),(252,880),(252,844),(146,587),(738,642),(1130,642),(1250,642),(1292,642)])\n",
    "H_c002, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(711,891),(753,890),(929,147),(1039,164),(1053,164),(1190,256),(1255,394),(1395,704),(1697,706)])\n",
    "pts2 = np.array([(136,587),(146,587),(146,32),(222,60),(252,60),(302,253),(302,394),(302,535),(373,535)])\n",
    "H_c003, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(637,703),(558,850),(1024,530),(1037,585),(1056,659),(1285,958)])\n",
    "pts2 = np.array([(488,72),(407,72),(660,221),(589,221),(519,221),(373,253)])\n",
    "H_c004, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(271, 552),(368, 758),(580, 785),(739,546),(925,354),(962,355),(1051,386),(1065,424)])\n",
    "pts2 = np.array([(519, 362),(373, 253),(302, 253),(302,394),(252,844),(222,844),(151,745),(146,587)])\n",
    "H_c005, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(152,837),(377,867),(669,890),(778,508),(830,354),(1108,326),(1173,460),(1297,764),(1543,746)])\n",
    "pts2 = np.array([(660,221),(589,221),(519,221),(519,362),(519,503),(373,535),(373,394),(373,253),(302,253)])\n",
    "H_c006, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "pts1 = np.array([(23,935),(66,650),(78,472),(94,473),(480,386),(651,380),(694,252),(719,183),(921,176),(950,236),(999,345),(1157,350),(1298,360),(1532,459),(1866,784)])\n",
    "pts2 = np.array([(252,844),(151,745),(136,587),(146,587),(302,535),(373,535),(373,394),(373,253),(519,221),(519,362),(519,503),(589,503),(660,503),(738,642),(740,844)])\n",
    "H_c007, _ = cv2.findHomography(pts1, pts2, cv2.RANSAC)\n",
    "\n",
    "H_list = [H_c001,H_c002,H_c003,H_c004,H_c005,H_c006,H_c007]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "70c7b5b0-01e3-463c-83ca-0b63a74bbcda",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "torch190-test",
   "language": "python",
   "name": "torch190-test"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
