Can You Compress Photo RAW files to Save Space?

Introduction

I only started photography as a hobby about a year ago, and already I have about 50gb in my photo library. I shoot RAW, and evidently RAW photos take up a lot of space. I decided to test whether it was possible to compress these files to save space. Specifically, I wanted to know if I could use a compressed archive, like a ZIP file, to reduce the size on disk of my photo library.

[Read More]

The Myth of Color Film (C41) Color Shift due to Chemical Temperature [Part 2: Results]

If you would like to know the procedure used to get these results, see part 1 (Procedure).

Reintroduction

I’ve heard rumors that developing color film (C41) requires holding the chemical temperature constant ±1℉ for fear the color shift demons will recolor your film in strange and unusual ways. I developed slices of the same shot at different chemical temperatures to test that claim.

Results

All pictures were taken at f/8, 1/1000s, ISO400, including the digital control. ISO was forced by the film speed I had, aperture was selected arbitrarily, and shutter speed was set by using the recommended meter reading of the FE2 film camera. The digital control histogram is scaled to the image minimum and maximum. The analog histograms are scaled to the minimum and maximum supported density of the scanner. This means the analog histograms can be compared with each other fairly but the digital histogram has a different scale. All analog pictures were scanned with auto-exposure. The scanner auto-mapped each RGB channel film densities to image minimum and maximum.

[Read More]

The Myth of Color Film (C41) Color Shift due to Chemical Temperature [Part 1: Procedure]

If you aren’t interested in the procedure and just want to see the results, skip to part 2 (Results).

Introduction

It seems to be common consensus that when processing C41 (color negative) film at home, you need to control the temperature of the chemistry very carefully. I’ve heard that if your developer is off by 1℉, You’re going to get some bad color shifts. Other posts claim 5℉ is the threshold. Looking around online, I’ve found many claims about color shifts, but no experimental results. One post claimed that the color shifts are correctable in a digital workflow, but otherwise if optically printing will be uncorrectable due to highlight and shadow color shift being independent.

[Read More]

Controlling a Quadcopter like a Jedi Using a Leap Motion (TM)

Recently I went to an event entitled ‘NodeBots’. If you’ve ever heard of Node.js, you might already see where this is going. The event describes itself as “Robots powered by JavaScript”. Anyone even vaguely familiar with JavaScript will know that it is mainly used for websites. More specifically, it is used for client-side scripting of websites. Plainly, this means a web page can run code on your computer to power the fancy transition effects of drop down menus and all the other dynamic actions of the Web 2.0(!). Anyone familiar with JavaScript knows it has a bit of a controversial reputation. As a language, it has very little static checking and will keep on chugging even when an error is encountered. This can make it quite difficult to debug. So it might seem a little strange that the idea of this event is to control robots using JavaScript.The idea is that participants use a popular JavaScript platform called ‘Node.js’. Node.js is a platform that allows JavaScript programs to run natively, eschewing the requirement for a web browser. Explaining why anyone would want native JavaScript is a bit complicated and is beyond the scope of this post. I took the NodeBots opportunity to get familiar with JavaScript, and use it to control a quadcopter. A quadcopter essentially being a miniature helicopter, with 4 rotors instead of the traditional set up of a main rotor and a tail. These four rotors are places at the corners of the ‘drone’ such that it can tilt in any direction to control pitch and yaw, and causing it to drift in the tilted direction. Note that when I use ‘drone’ above, I mean an unmanned aerial vehicle. The military uses much larger and deadlier ‘drones’ but the one I was playing with was the size of a garbage can lid and completely unarmed. Also note that ‘unmanned’ does not imply automated, since I was in fact controlling the drone with a ‘Leap Motion’.

[Read More]
Tags: drone hackathon 

Nural Networks - Like Custom Virtual Computers

Trained for a specific task, Neural Networks are like specialized virtual computers

I’ve been thinking about neural networks quite a bit lately. I recently read an article (this one actually) that did an excellent job at explaining exactly how neural networks work, and went on to give an example of optical character recognition (OCR) using a neural network.

Neural Networks really aren’t as complicated as I previously thought. There are a few different types of digital neurons used in neural networks. The most popular being perceptrons, and sigmoid neurons. The idea behind perceptrons is that the perceptron can have any number of weighted inputs, and has a single output which acts like a step function dependant on the weighted sum of the inputs.

[Read More]
Tags: ai neural-nets 

Computer Engineering vs Software Engineering vs Computer Science vs Electrical Engineering

CEG vs SEG vs CS vs ELG

Computer Engineering, Software Engineering, Computer Science, Electrical Engineering. As a Computer Engineering student at the University of Ottawa, I’ve been asked more than once what the difference is. Hopefully I will be able to clarify.

Software Engineering (SEG)

Lets start with Software Engineering. Software Engineering is focused on the high level architecture of software. Software engineering does not worry too much about actual code or data, and instead work with levels of abstraction and the organization of code and data. While this may be true, there is still plenty of technical stuff to focus on. Software engineering students will still have programming courses. They will learn about object oriented design patterns, data structures and algorithms, databases, and software construction.

[Read More]
Tags: university 

Bomberman At the Shopify Lounge

Unicorns and things

Last Sunday, I attended another AI competition, this one was hosted at the Shopify lounge in Ottawa.

Firstly, wow, the Shopify lounge is big. It even has a slide between floors!

img
check out that slide on the left! Unpictured, an arcade machine!

Among the other impressive features, an arcade machine, full wall mural of a unicorn knight battle, and of course, a free espresso machine. It looked like a delightful place to work on a day to day basis.

[Read More]
Tags: coding ai games 

CS Games - AI Challenge

Last weekend I attended the ‘CS Games’. The CS Games are a Canadian computer science competition that, this year, was hosted at ETS in Montreal. In this post, I will be looking at one of the challenges I participated in: The AI Challenge.

Being my first attempt at a CS games event, I had no idea what to expect. There were 3 people from our school team working on this challenge, and upon arrival, we were told that we would be writing an AI for a two team capture-the-flag snowball fight. There will be two teams, each AI controlled by a different university. Each team has seven players and the goal is to steal the flag in the middle of the course, and bring it back to the starting position, or to knock out all of the players on the other team. To prevent a rush for the flag, at least 20% of the players in the game must be knocked out before the flag can be picked up. Teams will fight a succession of games across a tournament bracket to see who is the best.

[Read More]
Tags: coding ai 

Hello World!

It seems appropriate that the first entry should be a simple introduction; A summary of where I am right now. As of the time of this writing I, Brandon Surmanski, am a 4th year Computer Engineering (CEG) student at the University of Ottawa, and I am a serial programmer.

The word serial in the context of computers usually refers to low-level networking stuff, or marshalling objects into a flat representation. I am not that kind of programmer. I am the kind that always has some side project on my mind and can’t stop myself from jamming at the keyboard until something runs. Sometimes it is nothing more than a prototype and I get bored and move onto the next project, and sometimes I end up with something cool. Either way, this blog is intended to log the progress of my meandering conscious. From the point of view of this blog, abandoning projects will result in new insight of whatever has caught my attention.

[Read More]
Tags: coding