Code from: Self-reconfigurable polarization perception in dual-anisotropy heterostructures enables high-dimensional in-sensor computing
Data files
Mar 18, 2026 version files 38.78 KB
-
generate.py
8 KB
-
initialization.py
725 B
-
models.py
10.01 KB
-
PARAMETERS.txt
194 B
-
preprocess.m
11.14 KB
-
README.md
3.50 KB
-
recover.py
4.15 KB
-
visualize.m
1.06 KB
Abstract
Polarization encodes vectorial optical information invisible to conventional intensity-only sensors but critical for advanced artificial vision. Implementing in-sensor computing along the polarization dimension, however, remains challenging due to the lack of reconfigurable array-level hardware. Here, we demonstrate self-reconfigurable polarization sensor arrays built from epitaxial van der Waals heterostructures of 2D tellurium and ReS₂ with orthogonal in-plane anisotropies. Light-driven interfacial carrier transfer and trapping synergistically produce a bipolar photoresponse, while perpendicular lattice alignment yields opposite polarization sensitivities in the two response branches, enabling all-optical reconfiguration without electrical bias. Integrated into in-sensor architectures, these arrays process time-resolved, multi-dimensional optical information with high fidelity. Dynamic vision tasks achieve enhanced accuracy (>95%), demonstrated in applications ranging from autonomous driving to intelligent medicine. Our results establish self-reconfigurable polarization arrays as a versatile platform for high-dimensional in-sensor photonic computing, offering a path toward efficient artificial vision in complex real-world environments.
This repository provides code for data generation, polarization visualization, and optical network simulation, along with descriptions of the datasets used in the paper.
Software & dependencies
Python
- Python: 3.9+ recommended
- Packages (typical):
numpy,Pillow,matplotlib - Deep learning / simulation (for
models.py):torch(PyTorch)
Example install:
python -m pip install -U numpy pillow matplotlib torch
MATLAB
- MATLAB: R2020b+ recommended
- Toolboxes: Image Processing Toolbox (commonly needed for image I/O/processing)
- Notes:
visualize.mcalls BM3D/related routines (included inpreprocess.mand its helper functions in this repository).
Hardware (optional)
- GPU: Optional; helpful if running PyTorch-based training/simulation workloads.
Repository files
Data generation & polarization visualization
| File | Description |
|---|---|
| generate.py | Generates the cancer-cell dataset (Dataset 2). |
| visualize.m | Renders polarization images as color maps. |
| recover.py | Recovers polarization from color visualizations. |
| preprocess.m | Preprocessing/denoising used by visualize.m. |
Optical network simulation
| File | Description |
|---|---|
| initialization.py | Initializes the optical network simulation environment. |
| PARAMETERS.txt | Optical network parameters. |
| models.py | Polarization-featured optical network model (ONN). |
Datasets
| Dataset | Description |
|---|---|
| 1. Nighttime driving | 2,113 polarization-camera images (intensity and AoP). Moving-object recognition: car, person, empty. Original: LDDRS. |
| 2. Cancer-cell | Custom polarization-featured dynamic cancer-cell set (from generate.py): 200 samples, 4 patterns, 32×32. Stain normalization and conditional diffusion. Diagnosis: active, dormant, absent. |
| 3. ShapeNet | 1,200 dynamic 3D samples, 4 direction classes (300 sequential models each). Original: ShapeNet. |
| 4. KITTI | Driving benchmark; 3D data segmented into 2D slices and encoded as polarization inputs to the ONN (100×100). Original: KITTI. |
The repository includes a compressed folder for the customized cancer-cell dataset; download and extract it for use. Other datasets are based on public sources and may be preprocessed for our experiments. If you use these data, we kindly request that you cite the original dataset publications as well as this repository.
License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.
