Roland Foster

Student Number: 2916282

Project Title: Image Management Suite

User Requirements and Requirements Analysis Document

BSc. Honours (Computer Science)

Supervisors: Mehrdad Ghaziasgar and James Connan

Table of Contents

Chapter 1:

Chapter 2:

This chapter discusses the problem from the user’s point of view. It describes the functionality which the user requires from the proposed software solution.

2.2 User’s view of the problem

2.2.1 Duplicate Images

2.2.2 Searching for images

2.2.3 Tags for images

2.2.4 Tagging detected objects

2.2.5 Hardware and software requirements for the proposed application:

2.3 Description of the problem

2.3.1 Duplicate images

2.3.2 Searching for images

2.2.3 Tags for images

2.4 Expectations from the software solution

2.4.1 Features of the software solution:

Chapter 3:

3.1 The Designer’s Interpretation of the Problem

3.1.1 Software and programming tools needed to develop the application:

3.2 Breakdown and Analysis of the Problem

3.2.1 Remove Duplicate Images

3.2.2. Object Detection

3.2.2. Adding Tags

3.3 Current Solutions

3.3.1 A few examples of current solutions:

3.4 Suggested Solution

References

Chapter 1:

Introduction

Images store the memories of our families, friends and pets. They store the important moments and special occasions in our lives such as birthdays, weddings and graduations. In the past we stored our photos in albums and searching for a desired image was not an easy task. Now that we have entered the digital age more and more people are moving away from traditional albums and storing their photos on their computers. Searching for a desired image on the computer has become an easier task with the introduction of embedded tags. Although the actual tags are not very descriptive and the manner in which these tags are used to search for images is not effective.

The aim of this project is to develop an image management suite which mitigates duplicate images and will make it easier for a user retrieve a desired image. The application will make use of embedded tags to their true potential by improving the manner in which these tags are used when searching for an image. It will also provide the user with better tagging options and an improved approach to classifying an image.

Chapter 2:

User Requirements

This chapter discusses the problem from the user’s point of view. It describes the functionality which the user requires from the proposed software solution.

2.2 User’s view of the problem

2.2.1 Duplicate Images

When having a large collection of images on a computer, there is a possibility of having many duplicate images in this collection. These duplicates could occur when the user transfers images from a camera or a storage device to his/her computer. Some of the images which are being transferred are images which the user already has on his/her computer. For this reason users often end up having multiple duplicates of images on their computers.

2.2.2 Searching for images

Searching for a specific image from a computer which contains thousands of images is a difficult task. If the user does not remember the name or path of the image the user would have to navigate the computer’s entire filing system, opening all the folders and each image individually to find the desired image. The user requires the application to search for image based on search criteria from the user.

2.2.3 Tags for images

In the past users wrote comments on the back of their printed photographs to describe the contents of that specific photograph. Today image viewer applications allow users to add tags to their images but these tags do not give the user a manner in which to classify images. The user requires a set of tags such as people, place, and occasion to properly classify images.

2.2.4 Tagging detected objects

A professional photographer takes thousands of photos in a month and does not have the time to tag every single image. The user requires an application which can detect basic objects in an image and automatically add these tags to the image. He/she would now be provided with some basic tags making it easier for the user to further classify the image.

2.2.5 Hardware and software requirements for the proposed application:

  • A computer with Windows 7 or Linux based operating systems
  • Open CV 2.2 (Open Source Computer Vision Library)
  • Python 2.7.2
  • Pyexiv2 - A python module that allows python scripts to read and write metadata (EXIF, IPTC, XMP, thumbnails) embedded in image files. [3]

2.3 Description of the problem

2.3.1 Duplicate images

When transferring images from a camera to a computer the user usually copies the folder from the camera’s storage device which contains the images. The next time the user takes photos, he/she does not delete the previous photos on the camera. The images are then copied from the camera to a new folder on the computer. By doing this the user is copying duplicate images to his/her computer. If the user continues doing this he/she will have multiple duplicates of images on his/her computer. It is a tedious task for the user to manually find all duplicate images and delete them.

2.3.2 Searching for images

The user usually finds an image by remembering where the image was stored and navigating to the folder in which the image is stored. If the user cannot remember the path to the desired image, he/she can search for the image based on its file name using the search utility provided by the operating system of his/her computer. The problem occurs when a user is searching for a particular image and he/she cannot remember the path to the image file or the name of the file. The user only remembers what the contents of the image are.

2.2.3 Tags for images

The conventional tagging options which image viewers provide are insufficient to properly classify an image. These options allow the user to add tags to an image but do not give the user categories for different types of tags. The user requires a set of tags such as people, place, occasion, description, date and time to properly classify an image. For example, there is an image of a man named David at the University of Western Cape, the user would like to add tags which classify the contents of this image. The tags would be used as shown below:

People/Person: David

Place: University of the Western Cape

Occasion: Graduation Ceremony

Description: Getting seated for the ceremony

Date: 20 March 2012

Time: 18h30

2.2.4 Tagging detected objects

2.4 Expectations from the software solution

The proposed software solution will remove duplicate images, allow the user to add tags to images and easily retrieve images from a computer’s hard drive based on a search criteria entered by the user. By using simple search terms such as name, place, occasion etc, the user will be able to search for images on his/her computer. These tags will be basic objects found in the image and the application will automatically detect these objects and add them as tags to the image. The application’s GUI (Graphical User Interface) should be user friendly and be compatible with Windows and Linux based operating systems.

2.4.1 Features of the software solution:

  • Remove Duplicate Images

A function will automatically run on the initial start up of the application and when prompted by the user to search the user’s hard drive for all images files. The function will find all image files on the computer and mitigate the problem of duplicate images.

  • Adding Tags

The user will be able to label the contents of the images with tags such as name, place, occasion, description etc.

  • Searching For An Image

The user should be to search for an image not based on filename or path of the file but by entering key words. The application will then search for images which match these key words. For instance, if a person named John is searching for an image of himself at the V&A Waterfront during the evening; the application must find all images related to John at the V&A Waterfront during the evening.

  • Object Detection

The application will also implement object detection. For example, if there is a cat in an image the application will automatically detect the cat and add it to the tags of the image.

Chapter 3:

Requirements Analysis

This chapter takes the user requirements defined in chapter 2 and explains how the designer interprets them. It analyses the user requirements and breaks these requirements down into parts.

3.1 The Designer’s Interpretation of the Problem

If there are duplicate images on the computer of the user, he/she would not know which image amongst the duplicates he/she had added the tags to. To find the image containing the tags he/she would have to open each of the duplicate images individually.

Image processing techniques provided from Open CV require a lot of computing power to detect objects in an image. If the duplicate images are eliminated it decreases the number of images and ultimately lowers the time required to detect objects for all images.

The proposed solution will automatically detect basic objects in the image such as a cat, person or car and add these as tags to the image. Since these images will now have tags it makes searching for them easier. The application receives search criteria for the user and searches for images which meet these criteria. It does this by searching through a combination of the detected tags which the application automatically added as well as the tags entered by the user.

3.1.1 Software and programming tools needed to develop the application:

  • Open CV (Open Source Computer Vision Library):

A computer vision library which supports real-time image processing. Open CV will be used to implement object detection. [1]

  • PyScripter:

An open-source Python Integrated Development Environment (IDE). [2]

  • Python:

An object orientated programming language. The application will be programmed using Python.

  • Tkinter:

A GUI (Graphical User Interface) toolkit for the Python programming language.

  • Pyexiv2:

A python module that allows python scripts to read and write metadata (EXIF, IPTC, XMP, thumbnails) embedded in image files. [3]

3.2 Breakdown and Analysis of the Problem

3.2.1 Remove Duplicate Images

To solve this problem the application will run a search function which finds all image files on the user’s computer and creates a list of images without these duplicates. To find the duplicate images generate checksums for the images and compare the checksums of each image against one another to find the duplicates. The application does not delete these duplicates but it restricts the user to this list of images.

3.2.2. Object Detection

The user has to manually enter tags in for each image and if there are thousands of images it will be a time consuming task to label all these images. By making use of the Open CV Library the application will implement object detection and use Haar-like features [1] to detect basic objects on each image from the list generated. For instance, if the there is a cat in an image the application will automatically detect the cat. These detected objects will be embedded within the image.

3.2.2. Adding Tags

The application will allow the user to add descriptive tags to the image such as name, place, occasion and comments. The descriptive tags entered by the user as well as the objects detected will be embedded within the image. Pyexiv2 [1] will be used to embed the tags within the images.

3.3 Current Solutions

To my knowledge there are no applications which provide the above mentioned functionality as an all-in-one application. There are however, stand-alone applications which provide the above mentioned features but most of these are expensive, proprietary software and platform dependent.

3.3.1 A few examples of current solutions:

  • Windows Live Photo Gallery

An application included in the Windows 7 operating system. It is a photo viewer which allows the user to add descriptive tags to images.

  • Picasa

A photo manager in which users can view, edit and add tags to images.

  • iTag

A tool that embeds title, description and keywords into your photos and movies.

  • Google Image Search

Allows a user to search for images from the internet

  • Remove Duplicate Pictures

A duplicate picture remover automatically removes duplicate images.[4]

3.4 Suggested Solution

The solution will be a cost effective one since the programming software and tools used are all open source. The application will be able to run on the Windows and Linux operating systems.

References

[1]. Willow Garage, 2010. Object Detection. [online] Available at: < [Accessed 12 March 2012].

[2]. Google Code, 2011. Project Home of PyScripter. [online] Available at: < 20 February 2012].

[3]. Olivier Tilloy, 2010. Pyexiv2 Documentation. [online] Available at: < [Accessed 27 February 2012].

[4]. 2012, Home of Remove Duplicate Pictures [online] Available at: < [Accessed 27 February 2012].