2024.08Image processingSolo project

Smartscape Inc. — Short-term Internship

Built a processing pipeline to extract differences from images, as a 5-day solo project.

The task

The task: detect what changed between two photos of the same place taken at different times — an obstacle left in a hallway, a door left open — and present it clearly to the user. I researched and built the full pipeline myself over 5 days: split the image, align it, adjust brightness, add noise, extract the difference, and binarize it.

Techniques implemented

Images were aligned via homography transformation (feature-point matching failed on low-texture images, e.g. plain grid patterns). To suppress false positives from brightness differences, I compared two approaches: histogram equalization and a custom method that splits the image and equalizes the average brightness across regions. Noise injection plus a Gaussian filter absorbed the small misalignments homography couldn't fully correct. Grayscale conversion and binarization then sharpened the final difference. Built with OpenCV, NumPy, and Matplotlib, with YOLOv8 object detection also tried. Below is a result from the "door" test scene, with the changed door area filled in red.

変更前の部屋の写真(ドアが開いている)検出された差分(ドア部分)が赤く塗りつぶされた結果画像

Validation and takeaways

I validated the pipeline across multiple scenes — basic and applied test cases, a door opening and closing, multiple objects, chess pieces — aiming for an implementation that worked consistently across all of them. Working solo with no code review required real self-driven initiative, but I regularly compared notes and approaches with other interns tackling the same challenge.

Next steps identified

Identified as future work at the final presentation: combining the detected differences with object detection to describe them in words, and improving detection accuracy for similarly-colored objects like cleaning signs or trash bags (though contrast enhancement works against the brightness adjustment step, risking more false positives).