I am doing some experiment with Raw image processing using two post processing tools:

  1. Adobe PhotoShop (PS) CS5
  2. Proprietary Image processing pipeline code.

Data Capture:

I captured some raw images using Nokia-900 in DNG format. This DNG has a Color filter Array data (raw Bayer data) which is extracted and given as input to proprietary code. The proprietary software does not use any Metadata/Exifdata present in the DNG file. Adobe PS takes DNG file as input to process. I want to have comments from experts here about Visual Quality of these two outputs, critical comparison between two based on various factors like - Image Noise, Sharpness (blur), Colour accuracy, Brightness, Contrast, Colour Casts, Chroma Fringing if any, and any other parameter which you can point me to.

  1. I fear the output from my code is inferior to Adobe PS output and want to correct/fix this in whatever way it is possible.

  2. May be Adobe PS is using some extra metadata from the DNG file, or it has superior algorithms to process the image, I would like to understand what exactly is happening here.

Processing Steps:

The steps involved in obtaining the outputs from the two processing pipelines is as follows:

  1. Output from Adobe PS: Load DNG, Colour balance to remove any casts by adjusting the colour temperature slider,then apply Unsharp mask(Amount-100%, Radius-2 pixels,Threshold-65), Noise filter Median(radius-1 pixel),Save processed image as a BMP.

  2. Output from Proprietary: Demosaicing(AHD algorithm),Colour balancing using a colour correction matrix, PErform Auto white balancing using a proprietary algorithm, RGB->YUV colour conversion, Un-sharp masking(proprietary algorithm on Y component alone), Median noise filter on Y,U,V (Standard 3x3 median filter on image), Gamma correction,YUV->RGB colour conversion, save as BMP.


Below are the two images (They are uploaded here as JPEG). Which is better, and what can be done to improve on the second?

  1. Adobe PS output: Adobe PS output

  2. Output from proprietary image processing pipeline: Output from proprietary image processing pipeline

  • 1
    \$\begingroup\$ Are the images 100% crops, or scaled-down versions of the whole image? \$\endgroup\$
    – coneslayer
    May 10, 2011 at 13:52
  • 1
    \$\begingroup\$ Based on "what can be done to improve on the second?", I suspect you already have an opinion about which one is better. Would it make sense to turn this into something like "How does a RAW processor function?" \$\endgroup\$
    – D. Lambert
    May 10, 2011 at 14:44
  • 1
    \$\begingroup\$ @goldenmean Can you also post some 100% crops. Although I suspect the noise in the second image is so bad that you won't get sensible answers her until you fix that first. \$\endgroup\$
    – fmark
    May 10, 2011 at 15:23
  • 1
    \$\begingroup\$ Is the question here "How can I improve the results of my proprietary RAW processing pipeline?" \$\endgroup\$
    – mattdm
    May 10, 2011 at 16:24
  • 4
    \$\begingroup\$ @Jay: If here were looking for implementation advice, I'd agree with a move to SO. But I think he's soliciting input on the relative quality of the output--accuracy of color rendition, noise, etc. The same question could be asked of commercial products like Silkypix vs. ACR, for example. It's not a programming question. \$\endgroup\$
    – coneslayer
    May 10, 2011 at 17:21

1 Answer 1


I find it a bit difficult to pick one as being drastically "better" than the other.

Yours clearly shows more noise -- but at least at first glance, also appears noticeably sharper. If I had to pick one as a starting point for processing, I'd prefer yours, but if I had to treat one as a finished product, I'd probably prefer Adobe's -- at least for typical pictures of people, where most people would prefer (if anything) to lose a bit of detail anyway.

You've definitely done a better job on the gamma ramp - your grey scale looks about evenly distributed. In the Adobe version, the two lightest blocks in the grey scale (just for one example) are nearly indistinguishable.

It looks to me like you've gotten the color more accurate in general. To help measure that you can get MacBeth color checker data -- both official numbers published by Gretag-MacBeth, and from actual measurements. To use that, you'd probably want to pick the color space you were targeting (probably sRGB) and compare your numbers to the average measured numbers for that color space. You could (for example) compute the deltaE for each patch for both your own and Adobe's results.

To do that, you'd want to start by averaging the values in each patch to eliminate the effects of noise. For example, yours would look something like this:

enter image description here

You can then (for example) get the RGB values in Photoshop in the info window (and I'm sure GIMP provides the same, though I haven't used it recently enough to remember the name it uses for the window you care about).

Plug those into a spreadsheet, add a formula for deltaE, and you're on your way. If you want to, you can (for example) create a color profile from that to minimize the measured errors, using the Adobe DNG Profile Editor or various other possibilities. Of course, that's only useful if your pipeline can accept a standard ICC profile. If you're interested only in the one specific source, you might prefer to just alter the matrix you're using (or add a matrix if you're not using one). Then again, as I said, your color accuracy is already better than Adobe's anyway so you may want to consider that good enough and concentrate on other areas.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.