Joshua Lorincz
Joshua Lorincz

I am a self-driven software engineer with experience in mobile, full-stack, and desktop application development. My passions are entrepreneurship, pathfinding research, and problem-solving in my community, yet my goal is always to learn.

View My Resume

Contact me

2022 © Joshua Lorincz

PictureStory

PictureStory

2018, Dec 18    

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.

Showcases how app uses facial recognition algorithms for alignment

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.

Memory utilization during video generation without optimization
Memory utilization during video generation with optimization

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:

Promotional Graphic that showcases the PictureStory iOS phone application icon
The main video editing page in the PictureStory app containing video settings
The face selection screen where users can select what face to use for centering
The home page of the PictureStory app, where users can select a story/video to edit
Inside the app there are also options to add dates to images and have daily notifications
The app's internal camera page, allowing users to take photos with a guiding overlay
# App # Swift # AI # iOS