Junhan Hu

Camera ISP × robotics · San Francisco Bay Area

I'm a Senior Software Algorithm Engineer at OmniVision, developing hardware-efficient ISP algorithms for RAW denoise and HDR.

My robotics background (Zhejiang University, Georgia Tech, two robotics internships) drives my independent research into how camera pipelines affect robot policies.

I'm looking for roles in camera algorithms, robotics, or robotic vision.

resume (pdf) · email · github · linkedin
Selected

Research: does the ISP matter for a robot policy?

2026 · vla-isp-probe · full report

The policy I evaluated, OpenVLA-OFT fine-tuned on LIBERO, was trained on clean simulator renders; a real robot would see the scene through a sensor and an ISP. I added a RAW sensor model and two ISPs to closed-loop LIBERO evaluation, pre-registered the hypotheses, and ran ~14k episodes on one 16 GB laptop GPU.

Scene through Infinite-ISP with tuned noise reduction Scene through Infinite-ISP with noise reduction off
NR off tuned NR
left:
What the third-person camera sees at high sensor gain (λ = 0.012) through Infinite-ISP. Crop of a 256 px LIBERO frame.
OFT (wrist + third-person)OFT_w (third-person only)
Task success (%) at high gain through Infinite-ISP; whiskers are 95% Wilson intervals; 9 LIBERO tasks × 20 episodes per bar. NR off is compared in the report with a clean camera without sharpening (OFT 99.4, OFT_w 97.2).
Data table
conditionOFT95% CIOFT_w95% CI

Also in the report: a reproduction of the LIBERO-Plus robustness numbers with a 4-bit model, and a file-name suffix in its instructions that alone costs 13 percentage points.

Camera ISP

OmniVision Technologies

2022 – now · Senior Software Algorithm Engineer (promoted 2024)

ISO 12233 charts and slanted-edge MTF

2026 · ISO12233 · method & validation

Reconstructions of the ISO 12233:2000, CIPA, e-SFR and s-SFR charts, exported as SVG and linear-reflectance arrays for ISP simulation, plus a slanted-edge MTF tool (a NumPy port of sfrmat5) validated against closed-form edges: MTF50 within 1% for Gaussian blur and unsharp-mask edges.

Below, one edge from the e-SFR chart and one photo go through the same sharpening or blur. The MTF hump from sharpening is the halo you see on the edge and around the rails.

Photo crop, reference Slanted-edge ROI, reference
edge ROI from the e-SFR chart, 4× nearest-neighbour
Edge profile and MTF, reference
Filters applied to sRGB values, as in a photo editor; the edge is decoded to linear before measurement. Photo: crop of “Stone building facade… Quebec City” by Wilfredor, CC0, Wikimedia Commons.
Reconstructed ISO 12233:2000 chart
Reconstructed ISO 12233:2000 chart

Robotics

Darkblue Technology: agricultural robot

2021 – 2022 · Robotics Engineer Intern (remote)

Midea Group: camera pose from a circle, and synthetic data

2021 · Computer Vision Intern · camera-pose-estimation

Camera pose from a single circular feature, with algebraic and geometric solutions, and a virtual camera in OpenCV / Open3D that fuses textured object models into real backgrounds to synthesize labeled RGB-D training data.

side view optical axis image plane 2L₂ circle, radius L (seen edge-on) β ΔL O f d image principal point L₁ L₂ Δc
A circle tilted by β projects to an ellipse; its three measurements give the three unknowns:
  1. Distance: the axis perpendicular to the tilt is not foreshortened, so d = f·L / L₁.
  2. Lateral offset: the ellipse's shift from the principal point scales back to ΔL = d·Δc / f.
  3. Tilt: the foreshortened axis L₂ gives a quartic in sin β, solved in closed form with Ferrari's method.
Background, mask, fused RGB and fused depth
Synthetic RGB-D: an object model fused into a real background, with mask and depth

Mobile robot and arm library

2022 – 2023 · personal · arm_control

A differential-drive robot built from parts (chassis, motor drivers, power, Arduino + SBC), and a Python arm library: forward/inverse kinematics, trajectory following, collision checking.

Assembled mobile robot, top view
Assembled robot
Mobile robot chassis with drive motors and wheels
Chassis and drive train
IK via Jacobian transpose

Earlier projects

Side projects

hamster-wheel-tracker

2026 · Kotlin, CameraX, OpenCV

A dedicated Android phone tracks one colored marker on my hamster's wheel, converts angular motion to distance and speed, and serves a dashboard over Wi-Fi. Validated overnight with the screen off.

StayInk

2026 · C · research stage

Keeps a jailbroken Kindle Scribe's E-Ink page visible while the device genuinely suspends. Evidence-first: every claim about Kindle internals is labeled fact, inference or unknown.