To Process Or Not To

There are more arguments about photo editing and processing than there are photos in this world. Ok, that might be a slight exaggeration. But still, it is an argument that has become especially prominent with the rise of digital photography due to the easy manipulatability of photographs.

Some people believe you can do whatever you want to a photo, it is all about art. At the opposite side of the spectrum are the purists - who believe that the only changes you are allowed to make are basic exposure, white balance and sharpening. I am more specific in my beliefs.

If you ask me this question, I would say that it depends on the purpose of the photograph. If it is to document something formally like a crime scene, biology, photojournalism etc., then it is paramount that any adjustments be limited to those that improve the quality of the image and improve the correlation between it and the real world. Take note that I did NOT say it should be limited to basic exposure. My reasoning can be understood by realising that when you press the shutter button on any camera, especially a digital camera, before that image is stored on the memory card it had undergone a huge amount of processing. Some of these processing steps are:

  1. Light wave are being bent by the optics in the lens, and colour casts are introduced and other optical aberrations such as chromatic aberrations, vignetting, distortion etc. No lens is perfect.

  2. These photons pass through an IR filter which removes IR wavelengths.

  3. Most cameras have a low pass filter to slightly soften the image so as to reduce the chance for moiré. This destroys some fine detail.

  4. The light wave is further bent via micro lenses that sit in front of each photo site on the camera sensor.

  5. Once the photos hit the CMOS sensor, they cause an electric charge to build up. This charge contains background noise levels from quantum effects, distorting the signal and introducing noise.

  6. Depending on the CMOS sensor, reading the electric charges in each photo site will necessarily introduce some additional noise and signal alteration.

  7. Once the electrical values for each photo site has been read, it is sent to an ADC (Analogue to Digital Converter) and various other electric components to ultimately end up in the RAM / CPU of the camera. All these steps alter the original signal by making approximations and conversions via sampling and other processes.

  8. Once in the CPU / RAM, the camera then performs various calculations and processing to form a final RAW image that is recorded on the memory card. During these processes some additional signal alteration occurs.

  9. When you download the image to your computer and open it up in your RAW converter, a huge amount of basic, default processing occurs. Most significantly are demosaicing and applying of tone curves and colour profiles. These steps cannot be changed or avoided, and each RAW converter adds its own signature look to the images as they all convert the data differently.


Priceless Request


Client: Would you please restore a file I accidentally deleted? I know you can only restore to yesterday's date, but we did a lot of work today and need it to be current.
Me: Doh!

Will You Bring Me Water From The Moon?

Full Moon - 12 Jan 2017

How Not To Get Scammed

I received an SMS message (text message for those Americans amongst you) this morning at 07:04 from my wireless service provider, proclaiming to have given me a free 1GB of data per month. All I had to do was to click the link to enable it.

SMS Message

Firstly I was suspicious at the time the message was sent. My carrier has never sent me an SMS message that early. Secondly, the number did not match anything I associate with them - but that is a bit tenuous as they sometimes use weird internal numbers. The URL in the message (partly blocked out) did seem reasonable but also not exactly what I thought it should be.

So instead of clicking the link I did this:


This Pisses Me Off

 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

In specific, all I want to do is use a JSTL variable as index to a variable someMap as follows:

Map<Integer, SomeObject> someMap = new HashMap<>();
<c:forEach begin="0" end="10" var="level">
    <c:out value="${someMap[level]}" />

That works.