<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="3.0" xml:lang="en">
<front>
<journal-meta>
<journal-id journal-id-type="publisher">ISPRS-Archives</journal-id>
<journal-title-group>
<journal-title>The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences</journal-title>
<abbrev-journal-title abbrev-type="publisher">ISPRS-Archives</abbrev-journal-title>
<abbrev-journal-title abbrev-type="nlm-ta">Int. Arch. Photogramm. Remote Sens. Spatial Inf. Sci.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">2194-9034</issn>
<publisher><publisher-name>Copernicus Publications</publisher-name>
<publisher-loc>Göttingen, Germany</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.5194/isprs-archives-XLIX-B2-2026-33-2026</article-id>
<title-group>
<article-title>SCOP: An Open-Source JAX-Powered Framework for Generic Photogrammetric Bundle Adjustment</article-title>
</title-group>
<contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Gressin</surname>
<given-names>Adrien</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
</contrib-group><aff id="aff1">
<label>1</label>
<addr-line>University of Applied Sciences Western Switzerland (HES-SO / HEIG-VD), Yverdon-les-Bains, Switzerland</addr-line>
</aff>
<pub-date pub-type="epub">
<day>22</day>
<month>07</month>
<year>2026</year>
</pub-date>
<volume>XLIX-B2-2026</volume>
<fpage>33</fpage>
<lpage>40</lpage>
<permissions>
<copyright-statement>Copyright: &#x000a9; 2026 Adrien Gressin</copyright-statement>
<copyright-year>2026</copyright-year>
<license license-type="open-access">
<license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri"  xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p>
</license>
</permissions>
<self-uri xlink:href="https://isprs-archives.copernicus.org/articles/XLIX-B2-2026/33/2026/isprs-archives-XLIX-B2-2026-33-2026.html">This article is available from https://isprs-archives.copernicus.org/articles/XLIX-B2-2026/33/2026/isprs-archives-XLIX-B2-2026-33-2026.html</self-uri>
<self-uri xlink:href="https://isprs-archives.copernicus.org/articles/XLIX-B2-2026/33/2026/isprs-archives-XLIX-B2-2026-33-2026.pdf">The full text article is available as a PDF file from https://isprs-archives.copernicus.org/articles/XLIX-B2-2026/33/2026/isprs-archives-XLIX-B2-2026-33-2026.pdf</self-uri>
<abstract>
<p>We present SCOP, an open-source Python framework leveraging JAX automatic differentiation for generic photogrammetric bundle adjustment. Unlike traditional implementations relying on manually derived or symbolically precomputed Jacobians, SCOP computes analytically exact derivatives automatically for any camera model, enabling rapid prototyping of new sensor types. The framework implements sparse Jacobian assembly, Schur complement elimination, and Levenberg-Marquardt optimization with step acceptance control, tested on networks with 181k observations and 79k unknowns. We validate SCOP on both synthetic unmanned aerial vehicle (UAV) surveys and the real-world Roma dataset (60 images, 26k tie points), achieving &lt;em&gt;&amp;sigma;&lt;/em&gt;&lt;sub&gt;0&lt;/sub&gt; = 0.575 px (identical to DBAT) while providing full statistical quality assessment (&lt;em&gt;w&lt;sub&gt;i&lt;/sub&gt;&lt;/em&gt;, &lt;em&gt;z&lt;sub&gt;i&lt;/sub&gt;&lt;/em&gt;) in less than 1 s per iteration. The educational design enables students to inspect bundle adjustment internals without manual derivative derivation.</p>
</abstract>
<counts><page-count count="8"/></counts>
</article-meta>
</front>
<body/>
<back>
</back>
</article>