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.
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.
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.
| Clave | Material | Proceso | Fuente documental | Quién lo usó |
|---|---|---|---|---|
| k64 | Kodachrome 64 (PKR) | K-14 | Kodak E-55 (2009) | Alex Webb |
| k25 | Kodachrome 25 (PKM) | K-14 | Kodak E-55 (2009) | Plossu, Ghirri |
| velvia50 | Velvia 50 (RVP 50) | E-6 | Fujifilm AF3-0221E2 | el paisaje de los años noventa |
| pro400h | PRO 400H + Endura Premier | C-41 + RA-4 | Fujifilm AF3-176E y Kodak E-4070 | Rinko Kawauchi |
| trix | Tri-X 400 (D-76, 8 min) + Multigrade IV RC grado 2 | blanco y negro + gelatina | Kodak F-4017 y hoja técnica de Ilford MG IV | el blanco y negro de reportaje |
| Key | Material | Process | Documentary source | Who used it |
|---|---|---|---|---|
| k64 | Kodachrome 64 (PKR) | K-14 | Kodak E-55 (2009) | Alex Webb |
| k25 | Kodachrome 25 (PKM) | K-14 | Kodak E-55 (2009) | Plossu, Ghirri |
| velvia50 | Velvia 50 (RVP 50) | E-6 | Fujifilm AF3-0221E2 | nineties landscape work |
| pro400h | PRO 400H + Endura Premier | C-41 + RA-4 | Fujifilm AF3-176E and Kodak E-4070 | Rinko Kawauchi |
| trix | Tri-X 400 (D-76, 8 min) + Multigrade IV RC grade 2 | black and white + gelatin silver | Kodak F-4017 and the Ilford MG IV datasheet | reportage 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.
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.
| Fichero | Material | Descripción interna | Tamaño |
|---|---|---|---|
| File | Material | Internal description | Size |
Kodachrome25_LeicaQ343-ProStandard.icc | k25 | Kodachrome 25 K-14 (LeicaQ343-ProStandard) | 546 KB |
Kodachrome64_LeicaQ343-ProStandard.icc | k64 | Kodachrome 64 K-14 (LeicaQ343-ProStandard) | 546 KB |
Pro400H_Endura_LeicaQ343-ProStandard.icc | pro400h | PRO 400H + Endura RA-4 (LeicaQ343-ProStandard) | 546 KB |
TriX_MG2_LeicaQ343-ProStandard.icc | trix | Tri-X 400 D-76 + Multigrade g2 (LeicaQ343-ProStandard) | 546 KB |
Kodachrome25_LeicaQ343-ProStandard.icc | k25 | Kodachrome 25 K-14 (LeicaQ343-ProStandard) | 546 KB |
Kodachrome64_LeicaQ343-ProStandard.icc | k64 | Kodachrome 64 K-14 (LeicaQ343-ProStandard) | 546 KB |
Pro400H_Endura_LeicaQ343-ProStandard.icc | pro400h | PRO 400H + Endura RA-4 (LeicaQ343-ProStandard) | 546 KB |
TriX_MG2_LeicaQ343-ProStandard.icc | trix | Tri-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.
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
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.
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.
| Opción | Efecto |
|---|---|
| --pelicula {k64,k25,velvia50,pro400h,trix} | material a emular; por omisión k64 |
| --ev X | exposición del material en pasos; negativo = más denso y más saturado en diapositiva. En pro400h expone el negativo |
| --gain X | ganancia de colorante; menor que 1 rebaja contraste y croma a la vez |
| --copia X | solo 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 |
| --generico | perfil sin cámara; supone primarios Rec.709 a la entrada |
| --info | solo inspecciona el perfil indicado, no genera nada |
| --listar [patrón] | lista los perfiles de cámara encontrados en el sistema |
| --instalar | copia el ICC a ColorSync y crea el estilo de Capture One |
| -o salida.icc | ruta del fichero de salida |
| Option | Effect |
|---|---|
| --pelicula {k64,k25,velvia50,pro400h,trix} | material to emulate; defaults to k64 |
| --ev X | exposure of the material in stops; negative = denser and more saturated on reversal film. On pro400h it exposes the negative |
| --gain X | dye gain; below 1 it lowers contrast and chroma together |
| --copia X | pro400h 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 |
| --generico | profile without a camera; assumes Rec.709 primaries at the input |
| --info | only inspects the given profile, generates nothing |
| --listar [pattern] | lists the camera profiles found on the system |
| --instalar | copies the ICC into ColorSync and creates the Capture One style |
| -o output.icc | path 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.
--virado son literales en español porque son los que el programa acepta: neutro, frio, calido, sepia, selenio. Se teclean tal cual, sin acentos.--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.
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.
| k25 | k64 | velvia50 | pro400h (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 clara | croma casi intacto, Δh +11° | Δh +16° | Δh +13° | +10 C*, Δh +12° hacia naranja |
| Sombras profundas | cálidas, Δu′ +0,036 a −5 EV | cálidas, Δu′ +0,038 | neutras, Δu′ < 0,005 | según la copia |
| k25 | k64 | velvia50 | pro400h (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 skin | chroma nearly untouched, Δh +11° | Δh +16° | Δh +13° | +10 C*, Δh +12° towards orange |
| Deep shadows | warm, Δu′ +0.036 at −5 EV | warm, Δu′ +0.038 | neutral, Δu′ < 0.005 | depends on the print |
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.
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:
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.
--ev expone el negativo. Subirlo llena las sombras sobre la parte recta de la curva y comprime las altas luces contra el hombro del papel.--copia aclara la copia respecto al balance de laboratorio, en pasos. Es el mando del positivador, no el de la cámara.--ev exposes the negative. Raising it fills the shadows onto the straight-line portion of the curve and compresses the highlights against the shoulder of the paper.--copia lightens the print with respect to the laboratory balance, in stops. It is the printer's control, not the camera's.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.
--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.--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.Misma arquitectura de dos etapas que el pro400h, pero monocanal:
The same two-stage architecture as pro400h, but single-channel:
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 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
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
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
--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.--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.--intensidad 4 recupera aproximadamente aquel aspecto.--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.--croma.--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.--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.--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.--intensidad 4 roughly brings back that look.--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.--croma.--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.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.
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.
| --pelicula | rms | grano (µm) | textura | MTF 50 % (c/mm) | correlación | croma |
|---|---|---|---|---|---|---|
| k64 | 10 | 11 | nube | 40 | 0,35 | 0,45 |
| k25 | 9 | 10 | nube | 45 | 0,35 | 0,45 |
| velvia50 | 9 | 10 | nube | 50 | 0,35 | 0,45 |
| pro400h | 4 | 12 | nube | 30 | 0,35 | 0,45 |
| trix | 17 | 14 | disco | 40 | 1,0 | 1,0 |
| --pelicula | rms | grain (µm) | texture | MTF 50 % (c/mm) | correlation | chroma |
|---|---|---|---|---|---|---|
| k64 | 10 | 11 | nube | 40 | 0.35 | 0.45 |
| k25 | 9 | 10 | nube | 45 | 0.35 | 0.45 |
| velvia50 | 9 | 10 | nube | 50 | 0.35 | 0.45 |
| pro400h | 4 | 12 | nube | 30 | 0.35 | 0.45 |
| trix | 17 | 14 | disco | 40 | 1.0 | 1.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.
--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>
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.
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.
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.
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.
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.
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.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.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.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.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.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.| Fichero | Contenido |
|---|---|
| scripts/peliculas/peliculas.py | el entregable principal: los cinco modelos, el lector y el escritor de ICC y la línea de órdenes completa. Solo numpy |
| scripts/peliculas/grano.py | grano físico independiente, con los perfiles σ(densidad) embebidos. numpy y Pillow |
| scripts/peliculas/LEEME.md | la fuente original de este manual, con el inventario completo de material de verificación |
| scripts/peliculas/Kodachrome64_K14.costyle | ejemplo de estilo de Capture One, el que crea --instalar |
| File | Contents |
|---|---|
| scripts/peliculas/peliculas.py | the main deliverable: the five models, the ICC reader and writer, and the full command line. numpy only |
| scripts/peliculas/grano.py | standalone physical grain, with the σ(density) profiles embedded. numpy and Pillow |
| scripts/peliculas/LEEME.md | the original source of this manual, with the complete inventory of verification material |
| scripts/peliculas/Kodachrome64_K14.costyle | an 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.