fullseye

render_scene_through_lens — OPTICS lensrender op

使い方

Photograph a :func:lens_scene through the prescription system: sensor-side ray tracing -> dict.

For every pixel (and oversample x oversample points inside it) and every wavelength, the exit pupil is sampled at pupil_samples points (Halton or hexapolar, each pixel’s pattern turned by a fixed golden-ratio angle when pupil_jitter is on, so the noiseless image does not depend on seed), each ray is traced backwards through the lens (:func:trace_sensor_rays), shaded in the scene (:func:scene_radiance) and weighted by cos^2(theta) / d^2 times the pupil-sample area: the Monte Carlo estimate of E = integral L cos(theta) d(omega) over the exit pupil (Kolb, Mitchell & Hanrahan 1995), times (n_image / n_object)^2. Point sources of the scene are added by forward ray tracing. The spectral irradiance becomes electrons per wavelength, E dlambda A_pixel t (lambda / hc) QE(lambda), and the sum goes through the shot noise, the dark electrons, the read noise and the quantiser of lensimage._sensor (add_noise False returns the expected values). sensor is a dict {"pixel_pitch_um", "size": (rows, cols), "qe", "full_well", "read_noise_e", "dark_e", "bits", "center_mm"} (center_mm moves the window to another point of a larger sensor); wavelengths default to the F, d, C lines (each band is as wide as the spacing of the list, or band_nm); illuminant is the relative spectral shape of the scene’s lights (pairs (nm, value)); defocus_mm moves the sensor along the light (positive = away from the lens) and focus_mm puts it at the paraxial image of an object at that distance (default: the system’s own image plane); oversample subdivides each pixel. The picture is upright (see the module doc). The table has image (float in 0..1, or uint16 DN with output="uint16"), image_noiseless, channels / channels_noiseless (one image per wavelength, own noise), electrons_mean and electrons_per_wavelength, irradiance_W_m2_nm (K, H, W), pupil_transmission (H, W: the share of the pupil that is not vignetted), the wavelengths and the geometry. Geometric optics only: no diffraction.

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd

同カテゴリ(lensrender)

lens_scene · exit_pupil_samples · trace_sensor_rays · scene_radiance · bokeh_shape · render_ghost_overlay · render_compare_prescriptions


Provenance: lensrender.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.