{"artifact_id":"L1-098","layer":"L1","title":"Photometric Stereo (shape-from-shading with multiple light directions)","domain":"Depth Imaging","sub_domain":"Surface-normal recovery from shading","physics_fingerprint":{"L_DAG":3.2,"title":"Photometric Stereo (shape-from-shading with multiple light directions)","domain":"Depth Imaging","carrier":"photon","primitives":["S.scan.light_direction","L.reflect_lambertian","L.normal_ls","int.spatial"],"sub_domain":"Surface-normal recovery from shading","noise_model":"gaussian","problem_class":"linear_inverse","solution_space":"2D_normal_and_depth","difficulty_delta":3,"integration_axis":"angular","sensing_mechanism":"multi_light_shading"},"observable_profile":{"metric":"normal_MAE_deg","regime":"With K >= 3 non-coplanar light directions and Lambertian BRDF, the linear system has rank 3 and is well-conditioned. Degrades for specular highlights (outlier fraction), cast and attached shadows (reduced effective K), non-Lambertian materials; robust methods (RANSAC, rank-3 SVD, learned PS) handle outliers up to ~30% specular fraction.","secondary":"depth_RMSE_mm"},"size_tiers":{"center_spec":{"omega":{"H":512,"W":512,"K_lights":10,"photon_count":500,"ambient_residual":0.0,"specular_fraction":0.0,"cast_shadow_fraction":0.0,"light_direction_error":0.0},"input_format":"K_images_plus_light_directions","problem_class":"photometric_stereo_normal","forward_operator":"lambertian_multi_light","epsilon_fn_center":"8.0 deg normal MAE"},"omega_bounds":{"H":[128,2048],"W":[128,2048],"K_lights":[3,96],"photon_count":[50,10000],"ambient_residual":[0.0,0.3],"inter_reflections":[0.0,0.3],"specular_fraction":[0.0,0.5],"cast_shadow_fraction":[0.0,0.4],"light_direction_error":[0.0,0.05]},"epsilon_bounds":{"normal_mae_deg":[2.0,35.0]},"allowed_problem_classes":["photometric_stereo_normal","uncalibrated_ps","shape_from_shading"],"allowed_omega_dimensions":["H","W","K_lights","photon_count","specular_fraction","cast_shadow_fraction","ambient_residual","light_direction_error","inter_reflections"],"allowed_forward_operators":["lambertian_multi_light","general_brdf_ps","near_point_light_ps"]},"hardness_fn":{"type":"epsilon_fn","delta":3,"kappa":400,"metric":"normal_MAE_deg"},"initiator_dataset":[{"name":"primary","weight":1.0,"ipfs_cid":null,"license_hash":null}],"status":"testnet","staked_pwm":0.0,"chain_hash":"0x9dd147d10f81e507e5d5aaabda58501a20e80830aee9eb85908e5564f18491f6","chain_tx_hash":"0x75b422eecd7831cc562bfdad63c58077a1029471d3e78f3712c030979d9dbb7b","chain_block":41547812}