Initializing... drag & drop files here
Supports: X3F
X3F is Sigma's proprietary RAW container for cameras using Foveon X3 sensors — first shipped in the Sigma SD9 in 2002, and used through the SD10, SD14, SD15, SD1/SD1 Merrill DSLRs, the DP1/DP2/DP3 Merrill compacts, and the Quattro line (dp Quattro from 2014, SD Quattro from 2016). The Foveon design stacks three photodiode layers and captures red, green, and blue at every pixel location instead of interpolating from a Bayer filter, so there is no demosaicing step in the rendering pipeline. PPM (Portable Pixmap, part of the Netpbm family since 1988) is the natural target when you want that raw RGB intact and trivially parseable — a short ASCII header followed by R/G/B samples, nothing else to decode.
pipe(1) chain (pnmscale, pnmtopng, pamcut) without touching libraw.| Property | X3F | PPM |
|---|---|---|
| Type | Camera RAW (proprietary) | Uncompressed bitmap (open) |
| Origin | Sigma / Foveon, 2002 | Jef Poskanzer, Netpbm, 1988 |
| Color model | Stacked-layer Foveon (full RGB per pixel, no Bayer) | RGB triplets, 8-bit or 16-bit per channel |
| Compression | Lossless container, sensor-data packed | None — raw samples |
| Header | Binary, proprietary directory of sections | 4-line ASCII (P6, width, height, maxval) |
| Transparency | No alpha | No alpha |
| Metadata | EXIF, white balance, lens, thumbnails | None (PPM spec has no metadata) |
| File size (24 MP) | ~50–60 MB | ~145 MB at 8-bit, ~290 MB at 16-bit |
| Editor support | SIGMA Photo Pro, X3Fuse, recent RawTherapee/darktable | Universal — every image library reads PPM |
| Best use | In-camera capture; Foveon-aware editing | Pipeline intermediate; scientific I/O |
| Setting | PPM magic | Maxval | Bytes/pixel | When to use |
|---|---|---|---|---|
| 8-bit (Recommended) | P6 | 255 | 3 | Standard pipeline input, fastest read, ~145 MB for a 24 MP frame |
| 16-bit (High Precision) | P6 | 65535 | 6 | Preserves full Foveon tonal range for color grading or HDR-style processing; big-endian |
| 1-bit (Black & White) | (PBM P4 equivalent) | 1 | 1/8 | Thresholded masks, document-style scans, OCR pre-pass |
PPM is the lightest possible target when a downstream tool needs raw RGB samples and nothing else. TIFF carries tags, ICC profiles, compression options, and tiling — useful, but extra parsing surface. DNG is still a RAW container and requires a Foveon-aware decoder. PPM is a 4-line ASCII header followed by sample bytes, so a scikit-image or OpenCV reader handles it with zero configuration. If you need EXIF preserved or LZW compression, use X3F to TIFF instead.
At 16-bit (High Precision) you get a P6 PPM with maxval 65535, which carries 16 bits per channel — enough headroom for the Foveon's three stacked photodiode layers without quantization loss on a normal exposure. At 8-bit (Recommended) the sensor data is rounded to 0–255 per channel, which is fine for display but discards precision you may want for grading. Use 16-bit when the PPM is an intermediate and the final output will go through tone curves.
PPM is fully uncompressed. A 24 MP Foveon image at 8-bit/channel works out to 24,000,000 × 3 = ~72 MB of pixel data, plus a tiny ASCII header — typically ~145 MB once you include row padding and the realistic 4936 × 3296 × 3 sensor resolution of an SD Quattro. At 16-bit that doubles to ~290 MB. The source X3F is ~50–60 MB because it stores the packed sensor signal, not interpolated RGB.
The Foveon X3 sensor shipped first in the SD9 (2002), then the SD10 (2003), SD14 (2006), SD15 (June 2010), SD1 and SD1 Merrill (2011/2012), the DP1/DP2/DP3 Merrill compacts (2008–2013), and the Quattro line — dp Quattro from 2014 and SD Quattro from 2016. As of 2025 Sigma has not shipped a new Foveon-sensor camera since the Quattro generation, so X3F files in circulation come from those bodies.
Yes — GIMP reads and writes PPM natively (File → Open works on .ppm, .pgm, .pbm). Photoshop supports PPM through the built-in "Portable Bit Map" plug-in; if you do not see it, install the optional file format plug-ins from Adobe's "Optional plug-ins" download. IrfanView, XnView, ImageMagick's display, macOS Preview (limited), and any Netpbm-aware viewer also open PPM directly.
P3 is the "plain" ASCII variant — each sample is a decimal number separated by whitespace, which is human-readable but roughly 3× larger and slow to parse. P6 is the "raw" binary variant — each sample is one byte (maxval ≤ 255) or two bytes (maxval > 255, big-endian) of pure binary data after the ASCII header. xconvert writes P6 for both 8-bit and 16-bit output because every Netpbm-compatible reader handles P6 and the file size is far smaller.
No. The PPM specification has no alpha channel; the format only stores RGB triplets. If you need transparency you want PNG, TIFF (with alpha), or PAM (a Netpbm extension that supports arbitrary channels including alpha). Convert via X3F to PNG when you need an alpha mask or a smaller compressed output.
No — PPM has no metadata section at all. Camera model, lens, exposure, shutter speed, white-balance tag, and capture timestamp from the X3F are dropped. If you need that metadata downstream, export an EXIF sidecar from SIGMA Photo Pro first, or use X3F to JPG (preserves EXIF) for an inspection copy alongside the PPM for processing.
Yes — that is the classic Netpbm use case. Drop a folder of X3F captures, set 16-bit High Precision, and pipe the resulting PPMs straight into pnm* tools, OpenCV imread, MATLAB imread, or a NumPy memmap reader. No codec licensing, no EXIF parsing, no Foveon decoder dependency on the consuming machine. Pair with DNG to PPM or CR2 to PPM when your dataset mixes Sigma with Adobe DNG or Canon RAW captures.