Wednesday, 31 December 2014

Testing Functionality

Due to my project depending on the constant tracking of five objects it's important I find a suitable way of ensuring that all objects remain tracked when the audience interacts with my display. Initially testing of the trackmate tags found that they are hard to detect in the dark and the camera also has trouble detecting them if the tags are printed too small or too large.

The image below is of me testing the tags using the trackmate tracker. From these tests it's seems that the optimal distance from the tags to the camera is about arms length which approximately 2 feet.


However the optimal distance for the smaller tags was much shorter approximately 1 foot. This was an important test as the size of the tags may be significant when I test my project in the foyer space.


An alternative would be remove the need for the user to lift the taggable objects by creating a contraption like this;


The shoebox design basically means the user would need to just slide the objects across a reflective surface as the camera located inside the shoebox would track the tags which would be stuck on the bottom of the objects. Creating a contraption like this would likely be the best method as it would ensure that the objects remain a fixed distance from the camera.

Tuesday, 30 December 2014

Processing Project: Padlock System

I have now been able to implement a padlock system into my sketch, I added this as an additional way of giving the user visual feedback on their progress. There is a total of six versions of the padlock image, the image changes as the user gets closer to completing the sketch. The ways in which I plan to develop this further is by improving the presentation of the sketch as parts of the sketch aren't very easy to see mainly due to colours blending into other colours and overall not looking very attractive which will likely deter people from interacting with it in the foyer.



The padlock system is very similar to the if statement method I used previously when making the background turn green on the puzzle's completion.This time I have implemented this method in increments as seen in the code below.



By coding it this way the background image will change every time boolean variables turn "true" this gives the impression  of a multi part puzzle or a combination lock which is a form of encryption.

Monday, 29 December 2014

Display Project Progress Update

Today I have been able to create a 3 part encryption system made of multiple If statements.  At the moment it's coded so that the background turns green when all three trackable objects are at the correct distances from each other. The way i've coded this is by linking each object to a boolean variable which basically gives the user visual clarification when they have solved a part of the puzzle. This visual clarification would notify the audience that they should move onto the next part of the puzzle.  Here is the source code I used in order to make the screen once all three parts are solved.


At the moment the prototype is only coded so that it measures the distance between objects 1 & 2, 1 & 3 and 1& 4. This results in one object ultimately linking too one.


I plan to make the puzzle more complex by generating more links and measuring the total distances of two objects instead of just one, this would result in the sketch looking much more sophisticated as the movement of one object would affect the distance of other objects. By programming more rules into the sketch I mitigate possible loopholes which could be exploited by the audience and as the primary concept of this piece is encryption it's important there aren't any loopholes.

Friday, 26 December 2014

Cryptography & Steganography

Cryptography is basically the process of scrambling readable information into an unreadable/ fragmented state. It's one of the earliest forms of encryption and was fundamentally designed to ensure that information couldn't be read by anyone other than the sender and the desired  recipient. This is done by ensuring that the sender and recipient share a secret key which is needed to decrypt the data. An example of this is a password for a personal computer, the password is known by the sender (PC) and the recipient (the user), the user has to input this password in order to gain access to the their files. However due to a password having an almost infinite amount of possible combinations this makes it very difficult for a third party who doesn't know the key to gain access.














Steganography is a different type of decryption from Cryptography as a crypto-system doesn't conceal it's true purpose. A cypto system  can be interacted with by anybody however almost impossible to access without the vital key. A Steganography system is different as it aims at concealing the existence of the message all together therefore not attracting the attention of third parties.

 An example of a Steganography encryption method would be writing in invisible ink, the message and method wouldn't be known by third parties however the receiver would have knowledge of the method therefore enabling them to decrypt the message.

Cryptography is the encryption method i'm using for my project as I think a Steganography method  wouldn't be clear to the  audience. The Cryptography method i'm using may seem unfamiliar to the user at first but as they move the trackable objects around and interact with the display they should notice the display reacting to the interaction of the user and as a result understand what they need to do to solve the puzzle. 

The Cryptography method I'm using in my display does consist of a secret key. The secret key consists of five sets of numbers, these numbers can be inputted into the sketch by positioning the trackable objects at certain distances from each other. I believe this cypto-system would be very difficult to decrypt if I didn't provide visual confirmation for each part of the puzzle which is completed.




Wednesday, 24 December 2014

Updated Pseudo Code

Due to almost completing the code mentioned in my previous pseudo code post I believe its important it becomes more complex. Getting the functionality mentioned in the previous pseudo code to work was an important learning experience for me however I personally believe its not sophisticated enough to be challenging for the public.

The new method I'm proposing involves the same "if" statement method used in the previous pseudo code however the statements will be made "true" based on the distances between each object instead of their individual positions on the grid.

This results in the user needing to position objects certain distances between the other objects in order to decrypt the puzzle and as the puzzle will use five objects there are multiple stages to the puzzle therfore making it more complex.

Step 1:  If tracked object #1 is between 140 & 160 distance from object#2 , KeyUnlock1= true

Step 2: If tracked object #2  is between 170 & 195 distance from object#1 , KeyUnlock2= true

Step 3: If tracked object #3  is between 245 & 265 distance from object#1 , KeyUnlock3= true

Step 4:If tracked object #2  is between 155 & 170 distance from object#3 , KeyUnlock4= true

Step 5:If tracked object #4  is between 620 & 660 distance from object#5 , KeyUnlock5= true

Step 6: While KeyUnlock1 = true
      loadImage= Unlocked1.PNG
      else 
      loadImage= Locked1.PNG

Step 7: While KeyUnlock2 = true
       loadImage= Unlocked2.PNG
      else 
      loadImage= Locked2.PNG

Step 8: While KeyUnlock3 = true
       loadImage= Unlocked3.PNG
      else 
      loadImage= Locked3.PNG

Step 9: While KeyUnlock4 = true
       loadImage= Unlocked4.PNG
      else 
      loadImage= Locked4.PNG

Step 10: While KeyUnlock1 + KeyUnlock2 + KeyUnlock3 + KeyUnlock4  + KeyUnlock5 = true
            loadImage= Unlocked5.PNG
           Make background image is clear andnot distorted.

Sunday, 14 December 2014

Processing Progress Update

To speed up the code testing progress for this project I've chosen to use a Trackmate simulator which enables me to test the functionality of the code without needing to use my webcam which would take longer however the disadvantages to using a simulator is that it doesn't enable me to test how the display would function with the actual physical objects being moved however I will be sure to conduct these further in the development when i've made significant progress.


The progress i've made with the code is that i've implemented an if statement which causes the background the change colour if the two objects are a certain distance from each other. This distance tracking technique is what i'm going to use as the method of decryption however i'll be creating "if " statements which track distances between four objects instead of just two. This method enables me to increment and decrement the values which improve or hinder the clarity of the background image which can be used by the user to determine if they are getting close to solving the puzzle.

My next step is to implement the image I want encrypted and apply filters to it, once i've done that I will start implementing more if statements.

Monday, 8 December 2014

Project Methodology

The project methodology I will likely adopt in the development of this project is the "Agile Development cycle" which involves quick sprints in development followed by testing. The project would then undergo changes based on the feedback received. This is a repetitive process which is often repeated multiple times before the product is finally released. For my project I will likely produce a functioning version of my project over Xmas and would get relatives and friends to test it and then adapt the project to the feedback received ready for the second iteration of testing after Xmas which would take place in the Foyer space. The feedback and results received from the 2nd iteration should give me a good idea how to optimize my project for the final deadline.

I will keep a log of the development of the project on my blog and go into detail on key elements of the development.