# upright: reconstructing Lightroom Classic's perspective correction

> upright reconstructs Lightroom Classic's Upright perspective correction from catalog transforms, controlled application runs, and selected CameraRaw binary observations. It publishes a two-camera homography model, measured Auto-mode behavior, evidence files, and an MIT-licensed Python port; the author reports that the port performs poorly on real photographs.

- Type: Case study
- Targets: App · Binary
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-06
- Added to the catalog: 2026-11-08
- Original resource: <https://github.com/rohanpandula/upright>
- Primary source: <https://github.com/rohanpandula/upright/blob/490391d43f57f802ba278062c69670333655ec4e/README.md>
- Catalog page: <https://awesomerea.org/resources/lightroom-upright-case/>
- Record JSON: <https://awesomerea.org/resources/lightroom-upright-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/lightroom-upright-case/index.md)

## Requirements & limits

- **Prerequisites:** Python 3.10 or newer, NumPy, and OpenCV are needed for the port.
- **Limits:** The author reports that the port often returns identity on real photos and has a 40.7% loss rate against plain identity in the stated comparison.
- **License:** MIT License.

## Primary sources

1. <https://github.com/rohanpandula/upright/blob/490391d43f57f802ba278062c69670333655ec4e/README.md>
2. <https://github.com/rohanpandula/upright/blob/490391d43f57f802ba278062c69670333655ec4e/README-validation.md>
3. <https://github.com/rohanpandula/upright/blob/490391d43f57f802ba278062c69670333655ec4e/port/README.md>

## More in Apps

- [studio3svg: reconstructing the Silhouette Studio document format](https://awesomerea.org/resources/studio3svg-case/index.md) · Case study
- [technics-az100: a Windows client for EAH-AZ100 earbud controls](https://awesomerea.org/resources/technics-az100-case/index.md) · Case study
- [SberBoom Remote: reconstructing local speaker control and StarOS messages](https://awesomerea.org/resources/sberboom-remote-case/index.md) · Case study
- [Curiosity Daily API: endpoints recovered from the Android app](https://awesomerea.org/resources/curiosity-daily-api-case/index.md) · Case study
- [prism_connect: PRISM Live Studio remote protocol implementation](https://awesomerea.org/resources/prism-connect-prism-live-studio-case/index.md) · Case study
- [qcywatch-android: a QCY Watch GT2 client built from BLE protocol research](https://awesomerea.org/resources/qcywatch-android-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
