Workflow


10
Apr 10

Delete that image!

After having refreshed the image archive, there was just one more thing left: Revisit Texas. Long time readers might remember my disk space investigation one year ago, which led eventually to me buying my beloved little Synology DS 207+ NAS with 2 TB of disk space. Now, after having added those 5000 JPEGs to the disk, I was wondering how the disk space utilization came along, and whether I was threatened with another disk upgrade soon…

In case you are having the same thoughts, I have made the script I used to calculate that statistic available on the newly created download page at Alpenglow.info as freeware. I’m interested in feedback, so please give it a try and let me know if it works for you!

So here is the result of running the statistics script on my NAS:

disk_space_usage_2010Oh – positive suprise! The aggregated disk space curve actually flattens roughly mid-2009, despite my fears of faster image data growth after I had upgraded the camera to more Megapixels and Megabyte per image. What is the explanation? Well, it’s actually two:

  1. I did not have as much time for my hobby as I did before, and definitely did less photo shoots and excursions since then. I am inclined to change that again, and the next workshops are already booked :-)
  2. I definitely improved my workflow: Instead of importing the JPEGs into Photoshop Album, keywording and assigning the 1-5 star rating in there (usually keeping even the 1 star images), I rather go through the images using the RAW viewer Nikon ViewNX first, and use the “1″ key (which assigns a red category marker) for those images that are definitely not worth keeping. After I have made one pass through the images, I immediately use the filter selector to select all red category images, and delete them from the disk. Phew!

Now the one real challenge is to flag as many images for deletion as possible. And I definitely got better at this, being more critical towards my own images and recognizing when images will not be suitable for presentation and thus don’t satisfy my own quality criteria (and have no nostalgical value yet )  – to say it with the words of Florian Möllers, a workshop leader I once had the pleasure to experience on a nature photography course in the Bavarian Forest national park (I think to remember that Florian himself was quoting the late Fritz Pölking – please make sure to pay Fritz’ website a visit, there is definitely a wealth of information about nature photography there):

Tapfer sein! (Be courageous!)

Which translates to: Delete those images! Get rid of them immediately! There will be better days, and better photos!


11
Mar 10

Nikon ViewNX and Workflow – some thoughts

Coming back after other activities have not left sufficient time – as the regular readers will have noticed – for my photography hobby. Looking at the state of my archive, which I do maintain in JPG format using the Photoshop Elements 5.0 photo browser, I was in for a surprise.

I was missing about 5000 images I had taken in 2009 and 2010 from the archive. Not because Photoshop Elements somehow lost them, but because they actually never made it into the catalog – me being lazy. After I had had such a good grip on keywording the last 5 years, what had happened?

Well, the switch from the D70 to the D300 back in mid-2008 rendered the Nikon software I had purchased for about 150€, Nikon Capture 4.4, useless. I was to upgrade to CaptureNX, which I did give a test run but found it to be too different from Capture 4.4 to consider an immediate upgrade back then – I wanted to have another (probably my 3rd or 4th) look at Adobe Lightroom.

So I reverted back to use the Nikon View software that Nikon ships with its cameras, and upgraded this to the ViewNX 1.0 (up to 1.5 since then) so it could understand the D300′s RAW images. I found some very nice improvements in ViewNX over the original Nikon View (e.g. it keeps the 100% zoom when paging through images), so I changed my workflow to include ViewNX. Why didn’t I shoot RAW and JPG in parallel? Well, the D70 was not powerful enough to provide high quality JPGs in-camera concurrent with writing the RAW, they were of only basic quality. So this was not an option. The D300 of course could, but looking at the space requirements of the new 12 Megapixel images, I chose to keep my old workflow shooting RAW only.

What did I do different that prevented me from being diligent with my archival duties?

Well, the workflow with Nikon Capture was:

  1. Import from CF card using Nikon Transfer copying into a directory within the RAW/2008 sub-directory
  2. Immediately fire up Nikon Capture 4.4, and start the batch conversion to JPG on the newly imported images
  3. Move the resulting JPG files over into the JPG/2008 folder hierarchy
  4. Let Photoshop Elements detect the new files and import them – the JPG/2008 folder is among the watched folders of Photoshop Elements, so it will automatically offer to import them
  5. Keyword the images in Elements

I tried to perform the same workflow with ViewNX, and conceptually it works just the same. But there is one subtle difference that is only required on a variant of the official workflow above, the so called “I was lazy” variant (which does happen more often than I like): I might have downloaded and browsed the images of multiple shoots before I start the keywording workflow. So the images have already been downloaded and placed into separate folders (one per shooting). Easy enough with Nikon Capture, its Tools… Batch dialog has a simple “include subfolders” checkbox which I used to let it process all folders, not just one. And there is the gotcha – Nikon ViewNX’s export function can not do that.

Now, this is really ridiculous as this requires probably only a dozen lines of source code by the programmers of ViewNX, and leaving this option away leaves those programming-illiterate out in the rain or with a huge amount of manual mouse work. Thank you, Nikon!

I have fixed my problem with a self-written Python script that performs the following actions:

  1. Scan through the RAW folder, to find subdirectories that exist there but not in the JPG hierarchy. Those must be the newly transferred (or forgotten) shootings that have no equivalent in the JPG archive.
  2. For each of these folders, copy all RAW files into a single processing directory. Make sure not to touch the RAW directory, as this is the original data!
  3. Then the manual step: Fire up Nikon ViewNX, select all files in the processing directory, and start the export to JPG (high quality setting). Go to sleep… I have measured a conversion rate of about 150 images per hour on my trusty 2003-PC.
  4. Run the script again, it will now find the JPG images created, move them into the JPG archive hierarchy, and delete the RAW images.

Two tricks used here, as we programmers tend to do:

  1. I do not do a real copy of the RAW images, which would be really slow and expensive in terms of disk space, I rather use the Cygwin version of Python which can create hard links on the Windows file system using the os.link() function. This is a very quick operation that needs nearly no disk space, and ViewNX can’t see that this is “just” a hard link and will process the image as normal.
  2. Second trick is to keep the original directory name of the image – remember I do copy all RAW images into a single directory for ViewNX – as a prefix to the image name, so e.g. an image called 2008/20080130_D300_Ammersee/_DSC1234.NEF would be called 2008CCC20080130_D300AmmerseeCCC_DSC1234.NEF in the processing directory, with the CCC being my carefully chosen separator assuming that no image name contains the CCC character sequence. Moving the image to JPG, those separators are detected and replaced by the approriate slahes.

Script works nicely, ViewNX is chewing on the 5000+ file RAW backlog and I will have my archive up to date again.

Lesson learned: When not in dire need of CF Card space, shoot both RAW and JPG!


3
Jun 09

Geotagging III – how to associate names to the places you have been to

As promised, here is the continuation of the series on my geotagging workflow!

Now, after steps one and two, I had my photos on disk with the GPS latitude and longitude position (and altitude) embedded within the JPG files. Specialized applications like GeoSetter would allow to open a Google Maps window at the location where the photo was taken, or offer export capabilities into Google Earth to place the photos onto the virtual globe.

But, my image archive is organized using keywords, and I usually manually tag images (add keywords) with the names of the places I have been. For instance, with a single click I can extract all images I have made in the Berchtesgaden alps area from my archive. I certainly wouldn’t want to fly around on Google Earth and virtually travel to Berchtesgaden in order to find them – so what good do those latitude / longitude coordinates do?

So, for example, I’d like the computer to automatically tag and file the following image of one of my absolute favorite places in Italy with the keywords: Italy, Tuscany, Castelnuovo dell’Abbate, Sant’Antimo.

antimo

As often today, out there the web already has the solution: Services like GeoNames, which usually are for finding the geo coordinates for a street address (something every car navigation system excels at), also offer a service which technically is called a reverse lookup: You would use this service if you know the geo coordinates of a place, but want to know the name of it. Or even the street address. And this is exactly what the photographer needs, right?

If you visit their website at GeoNames.org, you will not find the reverse lookup easily (because this is not the use case they have built their web site for). But if you technically savvy reader browse to the Download / Webservice page, you will find the documentation for the reverse geocoding services. Now, for example, we could ask the friendly site for the name of a location I had on one of my images, namely 43,049N and 11,489E. This would be coded into an URL, and you can click on this to see the answer of geonames.org: http://ws.geonames.org/findNearbyPlaceName?lat=43.049&lng=11.489

Now, don’t get scared. What you are looking at is the computerized reply of geonames.org telling you that this is a place in Italy with the name of Montalcino, home of the wonderful Rossos and Brunello red wines (Ups, it forgot to mention that! But it would, fasten your seatbelts, if we had asked the right question). But web services are really for computers to talk to each other, and not us to try to do this for the 897 photos I brought from Tuscany.

The good news is: This is how it works, and Friedemann Schmidt, the author of the GeoSetter software, has already built this function into GeoSetter!

Here is how I got the names of the places as keywords into my photos’ metadata using GeoSetter:

  1. I opened the folder with the photos from step 2, and GeoSetter displayed for those that had successfully received geo-coordinates the latitude longitude pair in the thumbnails’ subtitle.
  2. So, bold as I was, I again selected all photos using CTRL-A and then called the Images… Edit Data… menu item (or pressed CTRL-E ).
  3. In the dialog box that popped up, GeoSetter effectively allowed to change all data points of the images. In the Location tab, it has a Get from Web and a Get All From Web button. The latter is only enabled when more than one photo is selected. Here is a screenshot of a successful run of Get From Web for a single photo:
  4. So I pressed Get All From Web… and the magic started.
  5. Theoretically, I would have been done here and could just press CTRL-S again to save the data GeoSetter added to the images. There were two complications, though:
    • GeoSetter lost connection to the GeoNames webservice once in a while, making the processing of such a large batch of photos a bit of a stretch. This problem can be mitigated by increasing the WebServices timeout in the File… Settings… menu item’s dialog window in the Internet tab, entry box labeled Timeout for Web Services. I increased that number to 50, which fixed the problem for me.
    • For some places, obviously GeoNames did not answer with a unique place name, but with multiple possibilities. Seems logical, as I could have been right between two cities, so how should it know? The one problem was that GeoSetter did offer the option to say Select for All, but this led to all images being assigned the one selection I had made. So if it is unsure whether an image should be attributed to Montalcino, I had to confirm it image by image, because if I pressed the Select for all button, it would take that answer also for the images where it was unsure if they were in Siena… This leads to quite some clicking when doing many images at once.
  6. Now, press CTRL-S to save your work, and exit GeoSetter.

BTW, the save operation of GeoSetter does keep your original JPG file in case it screws up. It is a good idea to try out these more bleeding edge workflows only on copies of your images, not your originals! I always photograph raws, and run the geocoding on the JPGs I am creating for the image archive, so I still have the raw file in case the JPG breaks.

Done. After that, I did import the images as usual into my Photoshop Elements 5 image archive, and the tricks and hoops to jump through for that to work smoothly shall be part of another story to be told another day – maybe your favorite image archive works just as we all would envision it to work.


Highslide for Wordpress Plugin