BLUF- I've been using M8RAW2DNG since it was first out. I still use it. Produces uncompressed DNG, and slightly larger images. It is very easy to read the DNG files and work with them. A while ago I wrote custom code to produce color IR images using an Orange filter with the M8. You must use M8RAW2DNG to equalize the colors. The same code was quickly modified to average out Bad Columns that popped up on my friend's Leica M8. One of our forum members also suffered the same problem.
C SIMPLE AVERAGE OF VALUES.
DO 5 J= 1, BADROW( LINE)
IMAGE( BAD, J)= ( IMAGE( BAD- 2, J)+ IMAGE( BAD+ 2, J))/ 2
5 CONTINUE
Simple averaging scheme.


I used "ART" to generate the jpegs from the 20MByte DNG files, used the pixel locater of the images. Whatever ART shows the column number, add 5 to get the actual stored column number.
At some point- I'll write a version of the code that works with the M8 compressed DNG files. They are 8-bit values derived from a square root function. Do not get me started on how bad the scheme is, everyone knows I hate it.
storedvalue= sqrt( pixelvalue* 4)
pixelvalue= ( storedvalue** 2)/4
Okay- two lines of Fortran. BUT- I need to modify the arrays and read/write routines to actually get to them...
C SIMPLE AVERAGE OF VALUES.
DO 5 J= 1, BADROW( LINE)
IMAGE( BAD, J)= ( IMAGE( BAD- 2, J)+ IMAGE( BAD+ 2, J))/ 2
5 CONTINUE
Simple averaging scheme.


I used "ART" to generate the jpegs from the 20MByte DNG files, used the pixel locater of the images. Whatever ART shows the column number, add 5 to get the actual stored column number.
At some point- I'll write a version of the code that works with the M8 compressed DNG files. They are 8-bit values derived from a square root function. Do not get me started on how bad the scheme is, everyone knows I hate it.
storedvalue= sqrt( pixelvalue* 4)
pixelvalue= ( storedvalue** 2)/4
Okay- two lines of Fortran. BUT- I need to modify the arrays and read/write routines to actually get to them...