
PictureStory
An iOS app that lets people effortlessly combine photos to create videos showing their change and growth over time. Import images that you already have or take new photos every day. Stitch selected photos together to build beautiful time-lapse videos of yourself, family, pets, friends, and environment. Unlike other apps on the App Store, PictureStory centers your images so that you don’t have to worry about taking the perfect photo every time. The app enables seamless transitions between photos, and produces stunning artistic videos in seconds.

PictureStory centers images through an Artifical Intelligence algorithm that first identifies one’s facial location, rotation, and size. Then, it uses matrix tranformations to align each image with a predefined anchour image. Through this process, I strngthened my understanding of artificial intelligence, as well as learned about mathmatical transformations and the processes involved with mapping one set of points onto another across coordinate systems.
Further challenges included ensuring that memory usage did not increase as the number of photos stored in the app increased. Pictured below is first before I used background threads to optimize storage, and second the memory usage after video creation was moved to backgoround threads and the overall app underwent memory optimization. Despite this process, being extremely laborious I learned a great deal about synchronization and memory manaagement. Now, all images load on background threads as predicted by users scrolling. They are then released soon after exiting the screen. Furthermore, in terms of video creation itself, the process is done by dispatching to background threads, and tracking the video creation process on foreground threads. In terms of memory management, images are released from temporary memory directly after they have been placed in the video, allowing near linear space efficiency during video creation.


To further optimize, I am starting to cache all image recognition data locally. This allows for the app to let users choose between multiple faces for centering in a single photo and significantly decreases video build time. The major problem that I have had with this approach is ensuring that image capture times remain low. Such requirement have forced more image processing and computation to background threads, creating memory leak and error catching problems, where the app must ensure that if the user exits the app while processing a new image, the image is not lost.
Download link: https://apps.apple.com/uy/app/picturestory/id1447016136
Example video:
This is a video that was generated and aligned entirely by PictureStory.
Screenshots Gallery:





