35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
# Capture
|
||
|
||
Runs in the browser on phone and PC.
|
||
|
||
## Setup
|
||
|
||
Photograph the slab on a green or black sheet.
|
||
|
||
- Sheet fills the frame around the slab.
|
||
- Slab is fully on the sheet.
|
||
- First photo is top-down, lens parallel to the face.
|
||
|
||
The app expects that sheet. Background removal keys green or black. Other backgrounds are out of this increment.
|
||
|
||
## Flow
|
||
|
||
1. User adds one photo taken under Setup.
|
||
2. App removes the background and shows a mask overlay on the source photo: slab pixels vs removed pixels. Controls: sheet Auto / Green / Black, one sensitivity slider. Overlay updates as the slider moves.
|
||
3. User adjusts until only the slab remains, then approves the mask. That approved mask is the slab footprint for every later step.
|
||
4. App draws the minimum-area bounding rectangle of the mask and the length axis on the long side of that rectangle. User rotates the axis if it does not follow the slab length, then approves the axis.
|
||
5. User enters length `L` in inches (1/8 in steps) and thickness (1/8 in steps).
|
||
6. App sets `scale = longest_axis_px / L`.
|
||
7. App computes widths, sqft, and bdft from the mask, and writes the inventory PNG with the background gone.
|
||
8. User sees the PNG and the numbers.
|
||
|
||
## Measurements
|
||
|
||
- Widths: min, max, avg, sampled every 6 in along the approved length axis, perpendicular to it
|
||
- `sqft = (mask_pixels / scale²) / 144` (2 decimals)
|
||
- `bdft = sqft × thickness_in` (2 decimals)
|
||
|
||
## Inventory PNG
|
||
|
||
Transparent (background removed), 3:4, slab centered, 80% fill at extremes. Shorter side at least 1600px when the source allows. Source below that floor requires a new photo.
|