Manual · perfiles ICC de película · agosto de 2026
Manual · film ICC profiles · August 2026

Películas clásicas
en perfiles ICC

Classic films
as ICC profiles

Cinco materiales fotográficos reconstruidos a partir de la respuesta física publicada por el fabricante y escritos como perfiles ICC de entrada para Capture One. Toda la parte de color se calcula por integración espectral a 1 nm entre 380 y 730 nm. Este manual explica qué modela cada uno, cómo se genera el perfil, qué significa cada opción y dónde están los límites.

Five photographic materials reconstructed from the physical response published by the manufacturer and written out as input profiles for Capture One. The whole colour computation is done by spectral integration at 1 nm between 380 and 730 nm. This manual explains what each model contains, how the profile is generated, what every option does and where the limits lie.

Programa principal: scripts/peliculas/peliculas.py · grano: scripts/peliculas/grano.py · fuente original: LEEME.md · solo requiere numpy

Main program: scripts/peliculas/peliculas.py · grain: scripts/peliculas/grano.py · original source: LEEME.md · requires only numpy

Antes de nada · el error que hay que evitar

En cada imagen revelada con uno de estos perfiles hay que poner Curve > Linear Response en Capture One. El modelo ya incorpora la curva de tono del material: la curva característica del negativo, la del papel o la de la diapositiva están dentro del perfil. Si se deja activa la curva guía de Capture One, ambas se suman y el contraste sale duplicado.

Es el error más visible que se puede cometer con estos perfiles, y no siempre se reconoce como un error: se lee como «esta película es muy contrastada». No lo es; es la curva aplicada dos veces.

Before anything else · the mistake to avoid

Every image developed with one of these profiles must be set to Curve > Linear Response in Capture One. The model already contains the tone curve of the material: the characteristic curve of the negative, of the paper or of the reversal film sits inside the profile. If Capture One's own guide curve is left active, the two are compounded and contrast comes out doubled.

This is the most visible mistake that can be made with these profiles, and it is not always recognised as a mistake: it reads as "this film is very contrasty". It is not; it is the curve applied twice.

01Qué es esto y en qué se diferencia de un preajuste

01What this is, and how it differs from a preset

Un preajuste de película hecho a ojo es un juicio estético: alguien mira una diapositiva, mira su pantalla y mueve curvas y ruedas de color hasta que le parece que se parecen. El resultado puede ser bellísimo y sigue siendo, técnicamente, una opinión. No hay forma de saber qué haría ese preajuste con un color que el autor no miró mientras lo ajustaba.

A film preset built by eye is an aesthetic judgement: someone looks at a transparency, looks at their screen, and moves curves and colour wheels until the two seem to match. The result can be beautiful and it remains, technically, an opinion. There is no way to know what such a preset would do with a colour the author never looked at while adjusting it.

Aquí no se ajusta nada visualmente. Se parte de la respuesta física publicada por el fabricante —sensibilidades espectrales, curvas características, densidades espectrales de colorante, granularidad rms— y se calcula lo que el material habría hecho con la escena. Para cada uno de los 1 nm entre 380 y 730 nm.

Nothing here is adjusted visually. The starting point is the physical response published by the manufacturer — spectral sensitivities, characteristic curves, spectral dye densities, rms granularity — and what the material would have done with the scene is computed from it. At every one of the 1 nm steps between 380 and 730 nm.

La cadena de una diapositiva, en corto: los XYZ de la escena se convierten en exposición de cada capa mediante las sensibilidades espectrales del material; cada exposición pasa por su curva característica y da una densidad Status A; las tres densidades se invierten a cantidades de colorante; los colorantes dan una transmitancia espectral; esa transmitancia se ilumina con un proyector de 3200 K y se integra contra el observador. El resultado es el XYZ que el ojo habría visto en la pantalla de proyección. Ese es el número que va al perfil.

The chain of a reversal film, in brief: the scene XYZ are turned into an exposure for each layer through the spectral sensitivities of the material; each exposure passes through its characteristic curve and yields a Status A density; the three densities are inverted into dye amounts; the dyes give a spectral transmittance; that transmittance is lit by a 3200 K projector and integrated against the observer. The result is the XYZ the eye would have seen on the projection screen. That number is what goes into the profile.

Consecuencia práctica: el carácter del material no está programado, emerge. Nadie escribió «que los verdes se vayan a esmeralda» en Velvia; sale del apareamiento de sus tres capas. Nadie escribió «que la latitud del C-41 sea grande»; sale de resolver el filtrado de la ampliadora en cada exposición. Y el modelo responde a colores que nadie miró nunca, porque no depende de haberlos mirado.

The practical consequence: the character of the material is not programmed, it emerges. Nobody wrote "send the greens towards emerald" into Velvia 50; it falls out of the pairing of its three layers. Nobody wrote "make the latitude of C-41 generous"; it falls out of solving the enlarger filtration at each exposure. And the model answers for colours nobody ever looked at, because it does not depend on having looked at them.

Todo el color es cálculo espectral. Lo único parametrizado por objetivo colorimético declarado, y se dice expresamente, es el virado del blanco y negro: no hay dato de fabricante para el color de un virado de sepia o de selenio.
All the colour is spectral computation. The single part parameterised towards a declared colorimetric target — and it is stated as such — is the toning of the black and white print: no manufacturer datum exists for the colour of a sepia or selenium toning.

02Los cinco materiales

02The five materials

Un solo fichero ejecutable, peliculas.py, contiene los cinco modelos, el lector y el escritor de perfiles ICC. La clave de la primera columna es lo que se teclea tras --pelicula.

A single executable file, peliculas.py, contains the five models together with the ICC profile reader and writer. The key in the first column is what one types after --pelicula.

ClaveMaterialProcesoFuente documentalQuién lo usó
k64Kodachrome 64 (PKR)K-14Kodak E-55 (2009)Alex Webb
k25Kodachrome 25 (PKM)K-14Kodak E-55 (2009)Plossu, Ghirri
velvia50Velvia 50 (RVP 50)E-6Fujifilm AF3-0221E2el paisaje de los años noventa
pro400hPRO 400H + Endura PremierC-41 + RA-4Fujifilm AF3-176E y Kodak E-4070Rinko Kawauchi
trixTri-X 400 (D-76, 8 min) + Multigrade IV RC grado 2blanco y negro + gelatinaKodak F-4017 y hoja técnica de Ilford MG IVel blanco y negro de reportaje
KeyMaterialProcessDocumentary sourceWho used it
k64Kodachrome 64 (PKR)K-14Kodak E-55 (2009)Alex Webb
k25Kodachrome 25 (PKM)K-14Kodak E-55 (2009)Plossu, Ghirri
velvia50Velvia 50 (RVP 50)E-6Fujifilm AF3-0221E2nineties landscape work
pro400hPRO 400H + Endura PremierC-41 + RA-4Fujifilm AF3-176E and Kodak E-4070Rinko Kawauchi
trixTri-X 400 (D-76, 8 min) + Multigrade IV RC grade 2black and white + gelatin silverKodak F-4017 and the Ilford MG IV datasheetreportage black and white

Tres son materiales reversibles de una sola etapa: la película que se expone es la que se mira. Los dos últimos son sistemas de dos etapas, negativo más papel, y se comportan de manera distinta en casi todo: tienen dos exposiciones independientes, tienen latitud, y su grano nace en un sitio y se ve en otro.

Three of them are single-stage reversal materials: the film that is exposed is the film that is looked at. The last two are two-stage systems, negative plus paper, and they behave differently in almost every respect: they have two independent exposures, they have latitude, and their grain is born in one place and seen in another.

03Los perfiles ya generados

03The profiles already generated

No hace falta ejecutar nada para probar cuatro de los cinco materiales: el repositorio trae los perfiles ya construidos, en perfiles-icc/. Se instalan copiándolos a la carpeta de perfiles de Capture One y se eligen en el campo ICC Profile de la pestaña de color.

You do not need to run anything to try four of the five materials: the repository ships the profiles already built, in perfiles-icc/. Install them by copying them into the Capture One profile folder and pick them in the ICC Profile field of the colour tab.

FicheroMaterialDescripción internaTamaño
FileMaterialInternal descriptionSize
Kodachrome25_LeicaQ343-ProStandard.icck25Kodachrome 25 K-14 (LeicaQ343-ProStandard)546 KB
Kodachrome64_LeicaQ343-ProStandard.icck64Kodachrome 64 K-14 (LeicaQ343-ProStandard)546 KB
Pro400H_Endura_LeicaQ343-ProStandard.iccpro400hPRO 400H + Endura RA-4 (LeicaQ343-ProStandard)546 KB
TriX_MG2_LeicaQ343-ProStandard.icctrixTri-X 400 D-76 + Multigrade g2 (LeicaQ343-ProStandard)546 KB
Kodachrome25_LeicaQ343-ProStandard.icck25Kodachrome 25 K-14 (LeicaQ343-ProStandard)546 KB
Kodachrome64_LeicaQ343-ProStandard.icck64Kodachrome 64 K-14 (LeicaQ343-ProStandard)546 KB
Pro400H_Endura_LeicaQ343-ProStandard.iccpro400hPRO 400H + Endura RA-4 (LeicaQ343-ProStandard)546 KB
TriX_MG2_LeicaQ343-ProStandard.icctrixTri-X 400 D-76 + Multigrade g2 (LeicaQ343-ProStandard)546 KB

Para qué cuerpo valen. Los cuatro son perfiles de entrada (clase scnr, RGB a Lab) compuestos sobre el perfil de cámara Leica Q3 43 · ProStandard, y así lo dice su propia descripción interna. En otro cuerpo siguen abriendo y siguen dando una imagen, pero el color deja de ser el medido: lo que se está corrigiendo es la respuesta de la Q3 43, no la de la M11 ni la del SL3-S. Para esos cuerpos hay que volver a componer el perfil con peliculas.py partiendo del perfil de cámara que Capture One use para ellos, que es exactamente lo que explica la sección siguiente.

Which body they are for. All four are input profiles (class scnr, RGB to Lab) composed on top of the Leica Q3 43 · ProStandard camera profile, and their own internal description says so. On another body they still open and still give an image, but the colour is no longer the measured one: what is being corrected is the Q3 43's response, not the M11's or the SL3-S's. For those bodies the profile has to be composed again with peliculas.py, starting from whatever camera profile Capture One uses for them, which is exactly what the next section explains.

Falta uno. De los cinco materiales de la sección anterior, velvia50 no tiene perfil construido en el repositorio. Se genera igual que los demás; hasta entonces, el Velvia sólo existe como modelo dentro del script.

One is missing. Of the five materials in the previous section, velvia50 has no built profile in the repository. It is generated like the others; until then, the Velvia exists only as a model inside the script.

04Uso rápido: tres órdenes

04Quick start: three commands

Primero, localizar el perfil ICC de cámara que Capture One usa para el cuerpo. El buscador acepta un patrón:

First, locate the camera input profile that Capture One uses for the body. The search accepts a pattern:

# situarse en la carpeta donde esté peliculas.py
cd scripts/peliculas

# localizar el perfil de cámara de Capture One
python3 peliculas.py --listar m11
# move into the folder where peliculas.py lives
cd scripts/peliculas

# locate the Capture One camera profile
python3 peliculas.py --listar m11

Segundo, inspeccionar un candidato. --info no genera nada: informa de la clase del perfil, su espacio, si trae tabla A2B y cuál es su blanco.

Second, inspect a candidate. --info generates nothing: it reports the class of the profile, its space, whether it carries an A2B table and what its white point is.

python3 peliculas.py --info "/ruta/al/perfil.icm"
python3 peliculas.py --info "/path/to/profile.icm"

Tercero, componer, generar e instalar. Esta es la orden completa:

Third, compose, generate and install. This is the complete command:

python3 peliculas.py "/Applications/Capture One.app/Contents/Frameworks/ImageProcessing.framework/Versions/A/Resources/Profiles/Input/LeicaM11-ProStandard.icm" --pelicula k25 --n 45 --instalar
python3 peliculas.py "/Applications/Capture One.app/Contents/Frameworks/ImageProcessing.framework/Versions/A/Resources/Profiles/Input/LeicaM11-ProStandard.icm" --pelicula k25 --n 45 --instalar
Las comillas dobles no son opcionales. Las rutas de Capture One llevan espacios; sin comillas la ruta llega partida al intérprete y el programa recibe media docena de argumentos sueltos en lugar de un fichero.
The double quotes are not optional. Capture One's paths contain spaces; without quotes the path reaches the interpreter already broken and the program receives half a dozen loose arguments instead of one file.

05Las dos vías: perfil compuesto y perfil genérico

05Two routes: composed profile and generic profile

Perfil compuesto sobre el ICC de la cámara — recomendada

Profile composed over the camera ICC — recommended

Se pasa como argumento el perfil ICC de la cámara y la transformada del material se compone sobre la respuesta real del sensor. El perfil resultante ya no es «una película»: es esa película vista por ese sensor, y por eso reproduce mejor lo que hace el material con los colores donde cámara y observador difieren.

The camera's ICC profile is passed as an argument and the film transform is composed over the real response of the sensor. The resulting profile is no longer "a film": it is that film as seen by that sensor, and it therefore reproduces better what the material does with the colours where camera and observer diverge.

En el M11 hay dos perfiles en Profiles/Input/: LeicaM11.icm y LeicaM11-ProStandard.icm. Los ProStandard aplican una preservación de tono propia; el estándar es más neutro. Conviene generar ambos y comparar sobre imágenes propias: la diferencia se ve sobre todo en rojos y en pieles.

On the M11 there are two profiles in Profiles/Input/: LeicaM11.icm and LeicaM11-ProStandard.icm. The ProStandard ones apply a hue-preservation of their own; the standard one is more neutral. It is worth generating both and comparing them on one's own images: the difference shows mainly in reds and in skin.

Perfil genérico

Generic profile

Con --generico no hace falta perfil de cámara: el modelo supone primarios Rec.709 a la entrada. Es independiente del cuerpo y sirve para cualquier flujo, a costa de fidelidad. También sirven las LUT .cube del paquete antiguo para material ya revelado y exportado.

With --generico no camera profile is needed: the model assumes Rec.709 primaries at the input. It is body-independent and works in any pipeline, at the cost of fidelity. The .cube LUTs from the older package also serve for material already developed and exported.

Regla simple: si se revela raw en Capture One, compóngase sobre el perfil de cámara. El genérico es para material ya renderizado a un espacio conocido, o para probar un material sin instalar nada.
A simple rule: if the raw file is being developed in Capture One, compose over the camera profile. The generic one is for material already rendered into a known space, or for trying out a material without installing anything.

06Opciones de la línea de órdenes

06Command-line options

OpciónEfecto
--pelicula {k64,k25,velvia50,pro400h,trix}material a emular; por omisión k64
--ev Xexposición del material en pasos; negativo = más denso y más saturado en diapositiva. En pro400h expone el negativo
--gain Xganancia de colorante; menor que 1 rebaja contraste y croma a la vez
--copia Xsolo pro400h y trix: pasos de aclarado de la copia respecto al balance de laboratorio
--virado {neutro,frio,calido,sepia,selenio}solo trix: virado de la copia
--curvas {suaves,crudas}por omisión suaves: curvas características reparadas y suavizadas (véase el método); crudas usa las digitalizaciones tal cual
--sala {oscura,tenue,media}solo diapositivas: entorno en el que se verá el resultado. oscura (por omisión) reproduce la colorimetría de la proyección; tenue y media compensan la apariencia para un monitor en penumbra o en habitación iluminada
--n {33,45}lado del CLUT del ICC; por omisión 33
--genericoperfil sin cámara; supone primarios Rec.709 a la entrada
--infosolo inspecciona el perfil indicado, no genera nada
--listar [patrón]lista los perfiles de cámara encontrados en el sistema
--instalarcopia el ICC a ColorSync y crea el estilo de Capture One
-o salida.iccruta del fichero de salida
OptionEffect
--pelicula {k64,k25,velvia50,pro400h,trix}material to emulate; defaults to k64
--ev Xexposure of the material in stops; negative = denser and more saturated on reversal film. On pro400h it exposes the negative
--gain Xdye gain; below 1 it lowers contrast and chroma together
--copia Xpro400h and trix only: stops of lightening of the print with respect to the laboratory balance
--virado {neutro,frio,calido,sepia,selenio}trix only: toning of the print
--curvas {suaves,crudas}defaults to suaves: repaired and smoothed characteristic curves (see the method); crudas uses the raw digitisations
--sala {oscura,tenue,media}reversal films only: the environment where the result will be viewed. oscura (default) reproduces the colorimetry of the projection; tenue and media compensate the appearance for a monitor in a dim room or in a lit room
--n {33,45}side of the ICC CLUT; defaults to 33
--genericoprofile without a camera; assumes Rec.709 primaries at the input
--infoonly inspects the given profile, generates nothing
--listar [pattern]lists the camera profiles found on the system
--instalarcopies the ICC into ColorSync and creates the Capture One style
-o output.iccpath of the output file

Sobre --sala: una diapositiva está pensada para verse proyectada en sala oscura, y su gamma alta es la compensación de ese entorno (Bartleson y Breneman: en entorno oscuro el contraste percibido baja). El perfil reproduce por omisión la colorimetría de la proyección, que en un monitor en una habitación normal se ve más dura de lo que se veía la diapositiva. tenue aplica a la luminancia relativa el cociente de las gammas de entorno penumbra/oscuro (1,25/1,5 = 0,83) y media el de iluminado/oscuro (1/1,5 = 0,67), los valores clásicos de los modelos de apariencia. No es un ajuste de gusto: es lo que hace falta para que la imagen en pantalla se parezca a la diapositiva proyectada, y por eso el nombre del perfil lo lleva escrito.

On --sala: a slide is meant to be viewed projected in a dark room, and its high gamma is the compensation for that surround (Bartleson and Breneman: perceived contrast drops in a dark surround). By default the profile reproduces the colorimetry of the projection, which on a monitor in an ordinary room looks harsher than the slide did. tenue applies to relative luminance the ratio of the dim/dark surround gammas (1.25/1.5 = 0.83) and media the lit/dark one (1/1.5 = 0.67), the classic values of the appearance models. It is not a taste adjustment: it is what it takes for the on-screen image to resemble the projected slide, which is why the profile name carries it.

Los valores de --virado son literales en español porque son los que el programa acepta: neutro, frio, calido, sepia, selenio. Se teclean tal cual, sin acentos.
The values of --virado are Spanish literals because they are what the program accepts: neutro (neutral), frio (cool), calido (warm), sepia, selenio (selenium). They are typed exactly as they appear, without accents.

El nombre del perfil generado incorpora los ajustes usados —por ejemplo ev+1.5 c+0.55—, de modo que se pueden instalar varias variantes del mismo material a la vez y distinguirlas en la lista de Capture One.

The name of the generated profile carries the settings used — for instance ev+1.5 c+0.55 — so that several variants of the same material can be installed side by side and told apart in Capture One's list.

07El carácter medido de cada material

07The measured character of each material

Las cifras que siguen no son impresiones: están medidas sobre el ColorChecker de 24 parches, comparando la salida del modelo con la reproducción colorimétrica exacta de la misma escena. ΔC* es el exceso de croma, Δh el giro de tono en grados y Δu′v′ la deriva de los neutros en el diagrama uniforme.

The figures that follow are not impressions: they are measured on the 24-patch colour checker, comparing the model's output against the exact colorimetric reproduction of the same scene. ΔC* is the excess of chroma, Δh the hue angle shift in degrees and Δu′v′ the drift of the neutrals in the uniform diagram.

k25k64velvia50pro400h (copia normal)
Croma medio añadido+5,0+10,8+13,5+16,9
Verdes+9,5+30,1+25,6 y ΔL −15,6, Δh +20°+22,7
Azul saturado+22,7+26,2+32,3+41,0
Amarillos+10,6+18,9+30,8+6,6
Piel claracroma casi intacto, Δh +11°Δh +16°Δh +13°+10 C*, Δh +12° hacia naranja
Sombras profundascálidas, Δu′ +0,036 a −5 EVcálidas, Δu′ +0,038neutras, Δu′ < 0,005según la copia
k25k64velvia50pro400h (normal print)
Mean chroma added+5.0+10.8+13.5+16.9
Greens+9.5+30.1+25.6, with ΔL −15.6, Δh +20°+22.7
Saturated blue+22.7+26.2+32.3+41.0
Yellows+10.6+18.9+30.8+6.6
Light skinchroma nearly untouched, Δh +11°Δh +16°Δh +13°+10 C*, Δh +12° towards orange
Deep shadowswarm, Δu′ +0.036 at −5 EVwarm, Δu′ +0.038neutral, Δu′ < 0.005depends on the print

Lectura corta

The short reading

Los dos Kodachrome comparten firma de familia. Capa roja por encima de las otras en toda la escala y sombras que caen a cálido. Los picos de densidad de colorante salen casi idénticos en las dos digitalizaciones —0,76 / 1,05 / 1,25 frente a 0,77 / 1,06 / 1,28— porque el K-14 usa los mismos acopladores en ambos materiales. El 25 es la versión contenida: gamma ~1,5 frente a ~2,0, la paleta callada de Ghirri. El 64 es más gráfico.

The two Kodachromes share a family signature. The red layer sits above the others across the whole scale and the shadows fall warm. The dye density peaks come out almost identical in the two digitisations — 0.76 / 1.05 / 1.25 against 0.77 / 1.06 / 1.28 — because K-14 uses the same dye couplers in both materials. The 25 is the restrained version: gamma about 1.5 against about 2.0, the quiet palette of Ghirri. The 64 is the more graphic of the two.

Velvia va aparte. Sus tres capas están apareadas por diseño, de modo que los neutros quedan clavados hasta el fondo de la escala (Δu′ < 0,005) y el carácter se pone entero en el croma y en unos verdes oscurecidos y girados a esmeralda: +25,6 de croma con ΔL −15,6 y Δh +20° es exactamente eso, un verde que se vuelve más intenso y más oscuro a la vez.

Velvia 50 stands apart. Its three layers are paired by design, so the neutrals stay locked all the way down the scale (Δu′ < 0.005) and the character is placed entirely in the chroma and in greens that are darkened and swung towards emerald: +25.6 of chroma with ΔL −15.6 and Δh +20° is precisely that, a green that becomes more intense and darker at once.

El sistema negativo más papel es el más saturado de todos en copia estándar, con la piel cálida típica del Endura, y es el único con dos mandos de exposición. Merece su propia sección.

The negative-plus-paper system is the most saturated of them all in a standard print, with the warm skin typical of Endura Premier, and it is the only one with two exposure controls. It deserves its own section.

08El caso pro400h: dos etapas, dos mandos

08The pro400h case: two stages, two controls

La cadena es física de punta a punta, sin ningún atajo pictórico entre el negativo y la copia:

The chain is physical from end to end, with no pictorial shortcut between negative and print:

XYZ de escena → exposición de las capas del negativo (sensibilidades del AF3-176E bajo D55) → curvas características Status M (gamma 0,51; máscara naranja en los Dmin 0,95 / 0,69 / 0,17) → el papel se expone a través del negativo: logE = PBAL − DStatus M → curvas del papel Status A (gamma ~2,9) → inversión a colorantes del papel → reflectancia espectral → XYZ bajo D50 relativo al blanco del papel
Scene XYZ → exposure of the negative layers (AF3-176E sensitivities under D55) → Status M characteristic curves (gamma 0.51; orange mask in the Dmin values 0.95 / 0.69 / 0.17) → the paper is exposed through the negative: logE = PBAL − DStatus M → Status A paper curves (gamma about 2.9) → inversion into paper dyes → spectral reflectance → XYZ under D50 relative to the paper white

PBAL es el filtrado YMC de la ampliadora, y no se fija a mano: se resuelve por Newton en cada exposición para que el gris del 18 % imprima neutro en L* = 47. Eso es exactamente lo que hace un minilab o un escáner fotograma a fotograma, y tiene una consecuencia verificada en el modelo: con el gris reequilibrado, sobreexponer el negativo +1,5 pasos apenas mueve la escala tonal. La latitud del C-41 no está programada en ninguna parte; emerge de resolver el balance.

PBAL is the YMC filtration of the enlarger, and it is not set by hand: it is solved by Newton's method at every exposure so that the 18 % grey prints neutral at L* = 47. That is exactly what a minilab or a frame-by-frame scanner does, and it has a consequence verified in the model: with the grey rebalanced, overexposing the negative by +1.5 stops barely moves the tonal scale. The latitude of C-41 is programmed nowhere; it emerges from solving the balance.

Los dos mandos

The two controls

El ajuste Kawauchi

The Kawauchi setting

El look asociado a Rinko Kawauchi es la combinación de ambos mandos: negativo generosamente expuesto y copia aclarada.

The look associated with Rinko Kawauchi is the combination of both controls: a generously exposed negative and a lightened print.

python3 peliculas.py --generico --pelicula pro400h --ev 1.5 --copia 0.55
python3 peliculas.py --generico --pelicula pro400h --ev 1.5 --copia 0.55

Resultado medido: gris medio impreso en L* 76, sombras levantadas a 45 con un tinte frío de menta (b* −5 en los medios bajos), piel lavada (+28 L*, croma negativo) y cielos girados hacia cian.

Measured result: middle grey printed at L* 76, shadows lifted to 45 with a cool mint cast (b* −5 in the lower midtones), washed-out skin (+28 L*, negative chroma) and skies swung towards cyan.

Con --ev 0 --copia 0 se obtiene la copia RA-4 recta, sin interpretación: es un resultado valioso por sí mismo y, seguramente, el punto de partida correcto antes de tocar nada.
With --ev 0 --copia 0 one obtains the straight RA-4 print, uninterpreted: a valuable result in its own right and, most likely, the correct point of departure before touching anything.

09El caso trix: positivado y virado

09The trix case: printing and toning

Misma arquitectura de dos etapas que el pro400h, pero monocanal:

The same two-stage architecture as pro400h, but single-channel:

exposición pancromática (vector XYZ→H ajustado con la sensibilidad del F-4017, R² = 0,998, pesos [0,24 · 0,31 · 0,51]) → curva del negativo en D-76 a 8 minutos (velo 0,32; gamma 0,62) → papel Multigrade IV RC a grado 2 (copia autoexpuesta para gris del 18 % en densidad 0,74)
panchromatic exposure (XYZ→H vector fitted to the F-4017 sensitivity, R² = 0.998, weights [0.24 · 0.31 · 0.51]) → negative curve in D-76 at 8 minutes (fog 0.32; gamma 0.62) → Multigrade IV RC paper at grade 2 (print auto-exposed for 18 % grey at density 0.74)

La mitad del peso está en Z: ese es el sesgo azul del pancromático clásico, el que aclara los cielos y oscurece los rojos, y la razón histórica del filtro amarillo. No se ha impuesto; sale del ajuste sobre la sensibilidad publicada.

Half the weight sits on Z: that is the blue bias of the classic panchromatic emulsion, the one that lightens skies and darkens reds, and the historical reason for the yellow filter. It has not been imposed; it comes out of the fit to the published sensitivity.

--copia aclara u oscurece desde esa densidad de referencia de 0,74.

--copia lightens or darkens from that reference density of 0.74.

El virado

Toning

El virado es la única parte parametrizada de todo el sistema, y se declara como tal. La densidad espectral de la copia se modela como

Toning is the only parameterised part of the whole system, and it is declared as such. The spectral density of the print is modelled as

D(λ) = Dmin + (D − Dmin) · f(λ)

con f construida sobre dos bases suaves y coeficientes resueltos para objetivos colorimétricos declarados en el parche de D = 1,0: sepia a* +5, b* +18; selenio +2,5 y +1,5; cálido +1,5 y +6; frío −1 y −3. La densidad visual se conserva por construcción y el croma escala con la densidad, como en un virado químico real: las luces apenas se tiñen y los medios oscuros llevan el color.

with f built on two smooth bases and coefficients solved for colorimetric targets declared at the D = 1.0 patch: sepia a* +5, b* +18; selenium +2.5 and +1.5; warm +1.5 and +6; cool −1 and −3. Visual density is preserved by construction and chroma scales with density, as in a real chemical toning: the highlights are barely tinted and the dark midtones carry the colour.

python3 peliculas.py --generico --pelicula trix --virado sepia
python3 peliculas.py --generico --pelicula trix --virado sepia

10El grano: por qué va aparte

10Grain: why it lives outside the profile

Un perfil ICC es una transformación por píxel: a cada terna de entrada le corresponde una terna de salida, siempre la misma, sin mirar a los vecinos. El grano es un fenómeno espacial —tiene tamaño, tiene correlación entre capas, cambia con la escala de observación— y por tanto no cabe en un ICC. No es una limitación de la implementación, es la definición del formato.

An ICC profile is a per-pixel transform: every input triplet maps to one output triplet, always the same one, without looking at its neighbours. Grain is a spatial phenomenon — it has a size, it has correlation between layers, it changes with the scale of observation — and therefore it cannot fit inside an ICC. This is not a limitation of the implementation, it is the definition of the format.

Por eso hay un segundo programa, grano.py, que se aplica como paso posterior sobre la imagen ya exportada de Capture One. Requiere numpy y Pillow.

Hence a second program, grano.py, applied as a subsequent step to the image already exported from Capture One. It requires numpy and Pillow.

# 1. revelar en Capture One con el perfil generado y exportar
# 2. añadir el grano
python3 grano.py exportada.jpg salida.jpg --pelicula k64
python3 grano.py exportada.jpg salida.jpg --pelicula trix --intensidad 1.2
# 1. develop in Capture One with the generated profile and export
# 2. add the grain
python3 grano.py exportada.jpg salida.jpg --pelicula k64
python3 grano.py exportada.jpg salida.jpg --pelicula trix --intensidad 1.2

El algoritmo, paso a paso

The algorithm, step by step

  1. Nitidez del material. Antes de nada, la imagen pasa por la MTF de la película: una gaussiana con el 50 % en --mtf50 ciclos/mm (K64 40, K25 45, Velvia 50, PRO 400H 30, Tri-X 40: valores del orden de los de las hojas técnicas, sustituibles). Una diapositiva de 35 mm no resuelve lo que un sensor de 60 Mpx, y el grano añadido sobre una imagen más nítida que la película se lee como pegado encima. --mtf50 0 lo desactiva.
  2. Textura. El grano es una superposición de conglomerados de plata o de nubes de colorante de tamaño --grano-um, colocados al azar: un modelo booleano de discos, cuyo espectro de Wiener es plano hasta ~1/(2d) y cae después, como el medido en película. Las nubes de colorante llevan el borde difuminado (el colorante difunde al revelar); los conglomerados de plata del blanco y negro, no. --textura gauss recupera la textura de la versión anterior, ruido gaussiano filtrado, más blanda que la real.
  3. Amplitud, medida en 48 µm. La granularidad rms de la hoja técnica está medida con apertura de 48 µm a densidad 1,0. La amplitud por píxel se calibra midiendo sobre el propio campo de ruido cuánto vale su rms al promediarlo en un disco de 48 µm, y escalándolo para que coincida con la del datasheet; el programa imprime la comprobación. Es exacto para cualquier textura y cualquier resolución. La versión anterior aplicaba la ley de Selwyn como si el ruido fuera blanco, y con grano correlado a 10-14 µm eso lo sobrestimaba 3,8 veces en K64 y 4,7 en Tri-X (σ por píxel a 3,8 µm: 0,11 D frente a 0,038 en K64; 0,19 frente a 0,058 en Tri-X). --intensidad 4 recupera aproximadamente aquel aspecto.
  4. Dependencia con el tono. No hay una ley única. --pelicula selecciona un perfil σ(densidad mostrada) precalculado sobre el eje neutro del modelo espectral de cada material y embebido en el script como tabla por canal.
  5. Separación luminancia / croma. La rms de la hoja técnica es granularidad de densidad visual: mide la componente de luminancia de la fluctuación. El ruido de densidad se descompone por tanto en componente de luminancia, que conserva íntegra la calibración, y componente cromática, que existe porque las tres capas son emulsiones estadísticamente independientes pero se escala con su propia ganancia, --croma.
  6. Aplicación. El ruido se suma en el dominio de densidad, canal a canal, D′ = D + n·σ(D), y se vuelve a sRGB. --dmax-vis fija la densidad máxima representable (2,6 por omisión). El paso de píxel sale de suponer que el lado largo mide 36 mm sobre la película; para un recorte se indica con --ancho-mm cuánto mide de verdad.
  1. Sharpness of the material. First of all the image goes through the film's MTF: a Gaussian with its 50 % point at --mtf50 cycles/mm (K64 40, K25 45, Velvia 50, PRO 400H 30, Tri-X 40: values of the order of the datasheet ones, replaceable). A 35 mm slide does not resolve what a 60 Mpx sensor does, and grain added over an image sharper than the film reads as pasted on top. --mtf50 0 disables it.
  2. Texture. Grain is a superposition of silver clumps or dye clouds of size --grano-um, placed at random: a Boolean model of discs, whose Wiener spectrum is flat up to ~1/(2d) and falls afterwards, like the one measured on film. Dye clouds have a diffused edge (the dye diffuses during development); the silver clumps of black and white do not. --textura gauss brings back the texture of the previous version, filtered Gaussian noise, softer than the real thing.
  3. Amplitude, measured at 48 µm. The datasheet rms granularity is measured with a 48 µm aperture at density 1.0. The per-pixel amplitude is calibrated by measuring on the noise field itself what its rms is when averaged over a 48 µm disc, and scaling it to match the datasheet; the program prints the check. It is exact for any texture and any resolution. The previous version applied Selwyn's law as if the noise were white, and with grain correlated at 10-14 µm that overestimated it 3.8 times on K64 and 4.7 on Tri-X (per-pixel σ at 3.8 µm: 0.11 D against 0.038 on K64; 0.19 against 0.058 on Tri-X). --intensidad 4 roughly brings back that look.
  4. Dependence on tone. There is no single law. --pelicula selects a σ(displayed density) profile precomputed along the neutral axis of the spectral model of each material and embedded in the script as a per-channel table.
  5. Luminance / chroma separation. The datasheet rms is granularity of visual density: it measures the luminance component of the fluctuation. The density noise is therefore decomposed into a luminance component, which keeps the calibration intact, and a chromatic component, which exists because the three layers are statistically independent emulsions but is scaled with its own gain, --croma.
  6. Application. The noise is added in the density domain, channel by channel, D′ = D + n·σ(D), and converted back to sRGB. --dmax-vis sets the maximum representable density (2.6 by default). The pixel pitch follows from assuming the long side measures 36 mm on the film; for a crop, --ancho-mm states how much it really measures.

Diapositivas frente a copias

Reversal films against prints

En las diapositivas (k64, k25, velvia50) la fluctuación por capa sigue la estadística binomial de cobertura de colorante, σ ∝ √(a·(1−a/asat)): crece con la densidad, alcanza el máximo hacia D ≈ 1,5 y decae al saturar cerca de Dmax. El perfil del K64 va de 0,37 en las luces a 1,09 en el máximo y 0,91 en el negro profundo; Velvia decae menos porque su Dmax de 3,7 queda más lejos.

In reversal films (k64, k25, velvia50) the per-layer fluctuation follows the binomial statistics of dye coverage, σ ∝ √(a·(1−a/asat)): it grows with density, peaks around D ≈ 1.5 and decays as it saturates near Dmax. The K64 profile runs from 0.37 in the highlights to 1.09 at the maximum and 0.91 in the deep black; Velvia 50 decays less because its Dmax of 3.7 lies further away.

En los sistemas de negativo más papel (pro400h, trix) el grano nace en el negativo, donde crece con la densidad, y llega a la copia multiplicado por la pendiente local de la curva del papel, que se anula en ambos extremos. El grano vive en los medios y desaparece en blancos y negros, como en una copia real. El perfil del Tri-X impreso: 0,14 junto al blanco del papel, máximo de 1,8 en los medios oscuros, cero en el negro del hombro. Medido sobre imagen frente a la ley genérica, el σ en luces baja de 4,1 a 2,7 y en medios oscuros sube de 4,4 a 7,6.

In negative-plus-paper systems (pro400h, trix) the grain is born in the negative, where it grows with density, and reaches the print multiplied by the local slope of the paper curve, which vanishes at both ends. The grain lives in the midtones and disappears in the whites and the blacks, as in a real print. The profile of printed Tri-X: 0.14 next to the paper white, a maximum of 1.8 in the dark midtones, zero in the black of the shoulder. Measured on an image against the generic law, σ in the highlights falls from 4.1 to 2.7 and in the dark midtones rises from 4.4 to 7.6.

Sin --pelicula se aplica la ley genérica σ ∝ √D, útil para materiales no modelados: para Kodachrome 200, por ejemplo, --rms 16.

Without --pelicula the generic law σ ∝ √D applies, useful for materials that are not modelled: for Kodachrome 200, for instance, --rms 16.

Por qué el croma va a 0,45

Why chroma is set to 0.45

Con independencia total entre capas el ruido cromático superaría al de luminancia (relación 1,27), y el ojo lee eso como ruido digital, no como grano. Con --croma 0.45 queda subordinado (0,76), como en un escaneo real. La separación está verificada: al variar --croma, el σ de luminancia no cambia —0,84 en el degradado de prueba para 1,0, 0,45 y 0,0— y solo se mueve el cromático, 1,07, 0,64 y 0,37. --croma 0 da grano acromático; --croma 1, el aspecto de un escaneo de tambor a 5000 ppp mirado de cerca.

Under full independence between layers the chromatic noise would exceed the luminance noise (a ratio of 1.27), and the eye reads that as digital noise, not as grain. With --croma 0.45 it stays subordinate (0.76), as in a real scan. The separation is verified: varying --croma leaves the luminance σ unchanged — 0.84 on the test gradient for 1.0, 0.45 and 0.0 — and only the chromatic one moves, 1.07, 0.64 and 0.37. --croma 0 gives achromatic grain; --croma 1, the look of a 5000 ppi drum scan examined closely.

En las copias viradas del Tri-X el grano sale coloreado por la vía correcta: la fluctuación es de una sola imagen de plata y el virado la mapea a densidad espectral, así que el grano de un sepia es pardo por construcción —σ de croma 0,002 en la copia neutra, 4,0 en la sepia, con el mismo campo de ruido.

In toned Tri-X prints the grain comes out coloured by the correct route: the fluctuation belongs to a single silver image and the toning maps it into spectral density, so the grain of a sepia print is brown by construction — chroma σ of 0.002 in the neutral print, 4.0 in the sepia one, with the same noise field.

Preajustes de grano

Grain presets

--pelicularmsgrano (µm)texturaMTF 50 % (c/mm)correlacióncroma
k641011nube400,350,45
k25910nube450,350,45
velvia50910nube500,350,45
pro400h412nube300,350,45
trix1714disco401,01,0
--pelicularmsgrain (µm)textureMTF 50 % (c/mm)correlationchroma
k641011nube400.350.45
k25910nube450.350.45
velvia50910nube500.350.45
pro400h412nube300.350.45
trix1714disco401.01.0

La correlación es 0,35 en color y 1,0 en trix, porque en el blanco y negro solo hay una imagen de plata. Todo es anulable por línea de órdenes: --rms, --grano-um, --correlacion, --croma, --intensidad, --semilla, --dmax-vis.

Correlation is 0.35 for colour and 1.0 for trix, because in black and white there is only one silver image. Everything can be overridden from the command line: --rms, --grano-um, --correlacion, --croma, --intensidad, --semilla, --dmax-vis.

La alternativa rápida, sin salir de Capture One, es su herramienta Film Grain. No modela la dependencia con el tono ni la separación luminancia/croma, que son justamente las dos cosas que distinguen el grano de una copia del ruido de un sensor.
The quick alternative, without leaving Capture One, is its Film Grain tool. It models neither the dependence on tone nor the luminance/chroma separation, which are precisely the two things that distinguish the grain of a print from the noise of a sensor.

11Instalación y uso en Capture One

11Installing and using in Capture One

--instalar hace dos cosas: copia el ICC generado a ~/Library/ColorSync/Profiles/ y crea el estilo correspondiente en ~/Library/Application Support/Capture One/Styles/. Hay que reiniciar Capture One para que los reconozca; no basta con crear un catálogo nuevo.

--instalar does two things: it copies the generated ICC into ~/Library/ColorSync/Profiles/ and creates the corresponding style in ~/Library/Application Support/Capture One/Styles/. Capture One must be restarted for it to pick them up; creating a new catalogue is not enough.

El estilo es un XML mínimo que se limita a apuntar al perfil por su nombre de fichero, como se ve en Kodachrome64_K14.costyle:

The style is a minimal XML file that does no more than point at the profile by its file name, as can be seen in Kodachrome64_K14.costyle:

<SL Engine="1200">
    <E K="Name" V="Kodachrome 64 K-14" />
    <E K="ICCProfile" V="Kodachrome64_K14.icc" />
    <E K="UUID" V="7C0DA3E1-6B54-4F2A-9E31-A1B2C3D4E5F6" />
</SL>
<SL Engine="1200">
    <E K="Name" V="Kodachrome 64 K-14" />
    <E K="ICCProfile" V="Kodachrome64_K14.icc" />
    <E K="UUID" V="7C0DA3E1-6B54-4F2A-9E31-A1B2C3D4E5F6" />
</SL>

En cada imagen, dos ajustes imprescindibles

Two indispensable settings on every image

Curve > Linear Response · obligatorio

El modelo ya incorpora la curva de tono del material. Si se deja activa la curva guía por omisión de Capture One, ambas curvas se suman y el contraste sale duplicado: negros tapados, luces recortadas y un croma exagerado que no pertenece a ninguna película.

Es el error más visible que se puede cometer con estos perfiles. Si el resultado parece demasiado duro, lo primero que hay que comprobar no es el --gain ni el --ev: es la curva.

Curve > Linear Response · mandatory

The model already contains the tone curve of the material. If Capture One's default guide curve is left active, the two curves are compounded and contrast comes out doubled: blocked blacks, clipped highlights and an exaggerated chroma that belongs to no film at all.

This is the most visible mistake that can be made with these profiles. If the result looks too harsh, the first thing to check is neither --gain nor --ev: it is the curve.

A partir de ahí, el resto de herramientas de Capture One siguen disponibles y se comportan como corresponde: el perfil ocupa el lugar del perfil de entrada, no el de un ajuste de revelado.

From that point on, the rest of Capture One's tools remain available and behave as they should: the profile occupies the place of the input profile, not that of a development adjustment.

12Método, validación y límites conocidos

12Method, validation and known limits

Digitalización de las hojas técnicas

Digitising the datasheets

Cada gráfica se rasteriza a 400 ppp y se digitaliza por etiquetado de componentes conexas, con enmascarado del texto por cajas medidas y seguimiento conjunto de las curvas con memoria de pendiente y asignación excluyente; las permutaciones de cola en los cruces se detectan por identidad física. Donde el documento lo permite hay controles de cierre: en K64, |N − (Y+M+C)| máximo 0,016 y densidad visual del neutro 1,001 frente al 1,000 nominal; en K25, cierre con error máximo 0,036.

Each graph is rasterised at 400 ppi and digitised by connected-component labelling, with the text masked out by measured boxes and joint tracking of the curves using slope memory and exclusive assignment; tail permutations at crossings are resolved by physical identity. Where the document allows it there are closure checks: in K64, |N − (Y+M+C)| at most 0.016 and a visual neutral density of 1.001 against the nominal 1.000; in K25, closure with a maximum error of 0.036.

Reparación de las curvas digitalizadas

Repairing the digitised curves

Las curvas D(logE) así obtenidas arrastraban tres defectos que una curva H&D real no tiene, y que se veían en el tono: un rizado periódico de la cuadrícula de píxeles (±0,1 en gamma con periodo de ~0,05 logE); tramos rellenados con una recta entre puntos escasos, con gamma exactamente constante durante medio o casi un paso de logE y un escalón al final (en el K64, gamma 0,82 durante 0,5 logE y salto a 1,39 justo por encima del gris medio; en el K25, 0,98 durante 0,7 logE y salto a 2,0, lo que dejaba la gamma del gris en 0,98 y hacía al K25 falsamente «contenido»); y saltos y bultos donde el trazador se confundió de curva (en el papel Multigrade a grado 2, dos picos de gamma local 4,4 y 5,6 con un valle de 0,95 en medio). Desde esta versión las curvas se reparan al cargarlas, con el mismo tratamiento para todas y solo numpy: los rellenos lineales se sustituyen por un puente en el que la gamma varía linealmente entre las gammas medidas a cada lado, escalado para cerrar exactamente en los dos extremos reales; un primer ajuste fino identifica los puntos aberrantes y les rebaja el peso (biweight de Tukey a 4,5 MAD); se ajusta un B-spline cúbico en el dominio logístico u = ln((D − Dmin)/(Dmax − D)), que hace asintóticos el talón y el hombro, con el paso de nudos más fino, entre 0,12 y 0,40 logE, que deja la curva monótona y su gamma localmente suave; y se recorta al rango de los datos forzando la monotonía. Dmin, Dmax y la colocación de la exposición no cambian. Resultado: en el K64 desaparece el escalón de contraste entre el gris y el blanco (la pendiente en L* pasa de 24 → 20 → 17 → 19 → 21 L*/EV a 24 → 22 → 20 → 19 → 17, decreciente hacia el hombro como debe); en el K25 la gamma del gris sube de 0,98 a 1,27 y la pendiente de 15,5 a 19,8 L*/EV; en el MG2 la gamma máxima baja de 5,6 a 4,0 con la ISO(R) intacta (108). --curvas crudas recupera las digitalizaciones originales.

The D(logE) curves obtained that way carried three defects that a real H&D curve does not have, and they showed in the tone: a periodic ripple from the pixel grid (±0.1 in gamma with a period of ~0.05 logE); stretches filled with a straight line between sparse points, with gamma exactly constant for half to nearly a full logE step and a step at the end (on K64, gamma 0.82 for 0.5 logE and a jump to 1.39 right above middle grey; on K25, 0.98 for 0.7 logE and a jump to 2.0, which left the grey gamma at 0.98 and made K25 falsely "restrained"); and jumps and bumps where the tracker switched curves (on the Multigrade paper at grade 2, two local-gamma peaks of 4.4 and 5.6 with a valley of 0.95 between them). From this version on the curves are repaired on loading, with the same treatment for all of them and numpy only: the linear fills are replaced by a bridge in which gamma varies linearly between the gammas measured on either side, scaled to close exactly on the two real end points; a first fine fit identifies the outlying points and lowers their weight (Tukey biweight at 4.5 MAD); a cubic B-spline is fitted in the logistic domain u = ln((D − Dmin)/(Dmax − D)), which makes toe and shoulder asymptotic, with the finest knot spacing between 0.12 and 0.40 logE that leaves the curve monotone and its gamma locally smooth; and the result is clipped to the data range enforcing monotonicity. Dmin, Dmax and the exposure placement do not change. Result: on K64 the contrast step between grey and white disappears (the slope in L* goes from 24 → 20 → 17 → 19 → 21 L*/EV to 24 → 22 → 20 → 19 → 17, decreasing towards the shoulder as it should); on K25 the grey gamma rises from 0.98 to 1.27 and the slope from 15.5 to 19.8 L*/EV; on MG2 the maximum gamma drops from 5.6 to 4.0 with ISO(R) intact (108). --curvas crudas brings back the original digitisations.

Cadena de diapositiva

Reversal film chain

Para k64, k25 y velvia50: matriz 3×3 XYZ→exposición de capa ajustada sobre 924 reflectancias (los 24 parches del ColorChecker con peso 12, más 900 sintéticas) → curvas características → inversión densitométrica Status A con responsividades gaussianas en 640, 540 y 438 nm y jacobiano con términos cruzados → balance de grises resuelto para el neutro de D = 1,0 → colorantes → transmitancia → proyector de 3200 K → adaptación de Bradford. El blanco difuso se coloca donde la curva verde está 0,105 por encima de Dmin.

For k64, k25 and velvia50: a 3×3 XYZ→layer-exposure matrix fitted over 924 reflectances (the 24 colour checker patches at weight 12, plus 900 synthetic ones) → characteristic curves → Status A densitometric inversion with Gaussian responsivities at 640, 540 and 438 nm and a Jacobian carrying cross terms → grey balance solved for the D = 1.0 neutral → dyes → transmittance → 3200 K projector → Bradford adaptation. The diffuse white is placed where the green curve stands 0.105 above Dmin.

Validación real en Capture One

Real validation in Capture One

K64 sobre M11 con carta Calibrite: la predicción del modelo frente al render real del ICC da ΔE medio 2,9 en 23 parches, 18 de ellos por debajo de 2,5. La escala neutra confirma que no hay desajuste de exposición dependiente del tono: el rango entre el blanco y el gris oscuro es de 0,08 EV, ruido de medida.

K64 on the M11 with a Calibrite chart: the model's prediction against the real render of the ICC gives a mean ΔE of 2.9 over 23 patches, 18 of them below 2.5. The neutral scale confirms that there is no tone-dependent exposure mismatch: the range between white and dark grey is 0.08 EV, measurement noise.

Los ICC generados son v2, clase de entrada (scnr), con CLUT de 33³ o 45³, indexado gamma 1,8 y PCS Lab. Verificados con Little CMS (transicc): la diferencia entre la tabla y el modelo directo es ΔE2000 medio 0,022, máximo 0,31 con rejilla de 33.

The generated ICCs are v2, input class (scnr), with a 33³ or 45³ CLUT, gamma 1.8 indexing and a Lab PCS. Verified with Little CMS (transicc): the difference between the table and the direct model is a mean ΔE2000 of 0.022, at most 0.31 on the 33 grid.

Limitaciones conocidas, en orden de importancia

Known limitations, in order of importance

  1. Amarillos, naranjas y cianes muy saturados en los Kodachrome se desvían más: ΔE de 7 a 11 en los cuatro parches monocolorante del ColorChecker. La inversión lineal Status A se estira lejos del punto de linealización. Se evaluó un solver de Newton exacto y se descartó: mejora esos cuatro parches pero degrada la media global de 2,9 a 4,9, porque fuerza consistencia exacta con unas responsividades Status A que son aproximadas.
  2. La capa roja ajusta peor que las demás en todos los materiales (R² de 0,96 a 0,98 frente a 0,998 y mejores). No es un defecto del método sino la colorimetría real de estas películas: sus sensibilidades rojas entre 640 y 650 nm no son combinación lineal de las funciones del observador. Cabe esperar desviaciones mayores en rojos profundos, sobre todo en Velvia 50.
  3. En pro400h, la cuarta capa sensible al cian del negativo no se modela; su función es corregir fluorescentes y bajo luz de día su aporte es menor. El puente negativo→papel usa la equivalencia Status M ≈ densidad de impresión, que es la finalidad de diseño de Status M, en lugar de los espectros de colorante del negativo, que Fujifilm no publica.
  4. Las sensibilidades espectrales de las hojas técnicas empiezan dibujadas en su pico o cerca de él, sin flanco izquierdo en el azul; el tratamiento es idéntico en todos los materiales.
  5. En trix, el pie del papel por debajo de D = 0,55 no es separable en la gráfica —las cinco curvas emparejadas se funden— y se completa con la aproximación exponencial clásica hacia Dmin = 0,06, con la constante resuelta para reproducir exactamente el ISO(R) = 110 que publica Ilford para el grado 2. La curva del negativo y el resto del papel son digitalización directa. El virado es una parametrización colorimétrica declarada, no un dato de fabricante.
  6. El canal amarillo del papel Endura tiene en la digitalización un salto de 0,2 D cerca de Dmax (gamma local 16 en un punto). La reparación lo puentea, pero la forma del hombro amarillo entre D 2,0 y 2,4 es una estimación; afecta solo a los negros más profundos de la copia.
  7. Las MTF de grano.py son valores típicos, no digitalizaciones: el 50 % a 40, 45, 50, 30 y 40 ciclos/mm para K64, K25, Velvia, PRO 400H y Tri-X. Los efectos de adyacencia del revelado en D-76 (MTF por encima del 100 % a baja frecuencia) no se modelan.
  8. El perfil genérico supone primarios Rec.709 a la entrada. Para máxima fidelidad, componer sobre el perfil de cámara.
  1. Highly saturated yellows, oranges and cyans in the Kodachromes deviate more: ΔE from 7 to 11 across the four single-dye patches of the colour checker. The linear Status A inversion is stretched far from its linearisation point. An exact Newton solver was evaluated and discarded: it improves those four patches but degrades the overall mean from 2.9 to 4.9, because it forces exact consistency with Status A responsivities that are themselves approximate.
  2. The red layer fits worse than the others in every material (R² from 0.96 to 0.98 against 0.998 and better). This is not a defect of the method but the real colorimetry of these films: their red sensitivities between 640 and 650 nm are not a linear combination of the observer functions. Larger deviations are to be expected in deep reds, above all in Velvia 50.
  3. In pro400h, the fourth cyan-sensitive layer of the negative is not modelled; its purpose is to correct for fluorescent lighting and under daylight its contribution is minor. The negative→paper bridge uses the equivalence Status M ≈ printing density, which is the design purpose of Status M, rather than the dye spectra of the negative, which Fujifilm does not publish.
  4. The spectral sensitivities in the datasheets begin drawn at or near their peak, with no left-hand flank in the blue; the treatment is identical across all materials.
  5. In trix, the toe of the paper below D = 0.55 is not separable on the graph — the five paired curves merge — and is completed with the classical exponential approximation towards Dmin = 0.06, the constant solved so as to reproduce exactly the ISO(R) = 110 that Ilford publishes for grade 2. The negative curve and the rest of the paper are direct digitisation. The toning is a declared colorimetric parameterisation, not a manufacturer's datum.
  6. The yellow channel of the Endura paper has, in the digitisation, a 0.2 D jump near Dmax (local gamma 16 at one point). The repair bridges it, but the shape of the yellow shoulder between D 2.0 and 2.4 is an estimate; it only affects the deepest blacks of the print.
  7. The MTFs in grano.py are typical values, not digitisations: the 50 % point at 40, 45, 50, 30 and 40 cycles/mm for K64, K25, Velvia, PRO 400H and Tri-X. The adjacency effects of D-76 development (MTF above 100 % at low frequency) are not modelled.
  8. The generic profile assumes Rec.709 primaries at the input. For maximum fidelity, compose over the camera profile.

13Los ficheros

13The files

FicheroContenido
scripts/peliculas/peliculas.pyel entregable principal: los cinco modelos, el lector y el escritor de ICC y la línea de órdenes completa. Solo numpy
scripts/peliculas/grano.pygrano físico independiente, con los perfiles σ(densidad) embebidos. numpy y Pillow
scripts/peliculas/LEEME.mdla fuente original de este manual, con el inventario completo de material de verificación
scripts/peliculas/Kodachrome64_K14.costyleejemplo de estilo de Capture One, el que crea --instalar
FileContents
scripts/peliculas/peliculas.pythe main deliverable: the five models, the ICC reader and writer, and the full command line. numpy only
scripts/peliculas/grano.pystandalone physical grain, with the σ(density) profiles embedded. numpy and Pillow
scripts/peliculas/LEEME.mdthe original source of this manual, with the complete inventory of verification material
scripts/peliculas/Kodachrome64_K14.costylean example Capture One style, the one that --instalar creates

El LEEME original documenta además el material gráfico de verificación —las digitalizaciones de curvas, los pares comparativos y los recortes de grano al 100 %— y el paquete modular antiguo Kodachrome64/, que incluye las LUT .cube y un LEEME propio con el detalle numérico completo del E-55.

The original LEEME additionally documents the graphical verification material — the curve digitisations, the comparative pairs and the 100 % grain crops — and the older modular package Kodachrome64/, which includes the .cube LUTs and a LEEME of its own with the full numerical detail of the E-55.