CeroNoice - HDR tool inspired from ZeroNoise

Started by a1ex, December 15, 2013, 04:47:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

garry23

OK, this is simply a test of my ability to post a low res image, plus show what CeroNoice-based processing can do (all be it low res):



PS: I didn't pick up on the 900 limit!!

garry23

OK: can someone help me.

The image link I embedded was 900x674.

Why don't I see it?

Stupid from New Mexico!

a1ex

You need to link to a plain jpeg image, not to a HTML page.


a1ex

Your link goes to this page:

<!DOCTYPE html><html lang="en" xmlns:fb="http://ogp.me/ns/fb#" xml:lang="en" class="media-desktop" xmlns="http://www.w3.org/1999/xhtml"><head><script type="text/javascript">
                window._document_observe_listeners = [];
                document.observe = function(event, func) {
....


A JPEG looks like this:

00000000  ff d8 ff e0 00 10 4a 46  49 46 00 01 00 01 00 48  |......JFIF.....H|
00000010  00 48 00 00 ff e1 20 0e  45 78 69 66 00 00 49 49  |.H.... .Exif..II|
00000020  2a 00 08 00 00 00 0b 00  00 01 03 00 01 00 00 00  |*...............|
00000030  a4 16 00 00 01 01 03 00  01 00 00 00 3c 1e 00 00  |............<...|
00000040  02 01 03 00 03 00 00 00  92 00 00 00 12 01 09 00  |................|
00000050  01 00 00 00 01 00 00 00  15 01 03 00 01 00 00 00  |................|
...


So, try placing the JPEG in the Public folder, where you can get a direct link to the JPEG (not to a HTML page).

garry23

Alex

As I said, I'm dumb.

Thanks for spending time to educate me n

Unfortunately, Dropbox free doesn't allow public folders.

In future I will simply put links to an image, as I don't intend to post many images  :)

a1ex


garry23

Alex

No trick, I'm afraid it just asked me for money to upgrade to pro.

Thanks for looking into this.

Cheers

alexpok

Quote from: a1ex on December 15, 2013, 04:47:48 PM
After having some trouble getting ZeroNoise working, I coded my own version of the algorithm (well, only the part I understood) and ran a little experiment to check whether you should really take as many brackets as you can, or whether you can get away with just 2 or 3 pictures spaced at 4 EV or more.

I've called my program CeroNoice, pronounced pretty much like ZeroNoise, with a Spanish "ce" ("hay que sacar la lengua").


I test this program lots of times, the image quality in result is amaizing, thanks for that a1ex - i also have a problems with original ZeroNoise.

I found some problems as well, i will try to describe them below, may be it helps to improve this wonderfull tool.

1. I decided to limit testing  by only 2 shots, 3EV difference. The reason - the quality already very good in case of no problems, in case of some problems additional files only makes it worse.

2. I made 2 sequences by 2 shots, run CeroNoice, run DNG_validate as described. The only difference between these sequences was one additional lamp turned on - it produces some highlights on scene. In good case (lamp off) i just process out.dng in Adobe Photoshop camera RAW 8.3 - i did not noticed any problems, just huge quality increase. In bad case (lamp on) green color cast appears on some objects - with highlights (best visible on white cups behind). Most important, that when checking resulting 32 bit tiff file  - it still exists and i can not imagine any transofmation, that can eliminate it - the area in wich it ocuurs has almost identical 
lighting, so you cant apply any curve (transformation).
  I think, that here some sort of rounding problem - this problem already exist in this huge 256 Mb tiff file.

I put a link to my Google  drive here  with these examples. I can say, that situation is quite repeatable in different conditions, in case of using 3 files blue color cast begins etc.
I have tried to make these examples illustrative, but may be made some mistake.

https://drive.google.com/folderview?id=0B72zfsjcoFZGanVIeVM5RDM4ZXc&usp=sharing

PS. I also did a comparison to the dual ISO in this case - also very good improvment over original version, but some noticable color artifacts (looks like chromatic aberrations, beter visible on a sauce bottle text on the left and power outlet on the wall). But very usable image in result. I also put it into the same directory.
WB - grey point below the name of coffemachine on the left. All image provided are Canon 5dIII .cr2

garry23

As some may have picked up, I now have a quasi-plug-in for CeroNoice working in Lightroom (but Windows only I'm afraid).

In addition to CerioNoice.exe, dng_validate.exe and dcraw.exe, you need my "CeroNoice Bracketing.exe", which is the 'glueware' processor between CeroNoice.exe, dng_validate.exe and Lightroom.

My workflow is as follows:
1.   Set up once:
a.   Create a processing folder anywhere in your system;
b.   Place CeroNoice Bracketing.exe in that folder with the three other three .exes;
c.   Create a sub-folder in your processing folder called "ceronoice watched folder";
d.   In LR, under file & auto input settings, point at the "ceronoice watched folder" (and create a destination folder in LR);
e.   Create an export preset (called it anything you like) with the following attributes: export to the processing folder you created, ie with the .exes in; select export format as original (it works with .cr2 or .dng); under post processing after export, point to "CeroNoice Bracketing.exe"

2.   To use:
a.   Select the images to be processed in ascending order of 'brightness', ie by ctrl + left mouse clicking;
b.   Export by selecting the preset you set up above, ie right click + export;
c.   Wait a few seconds and in the auto import destination folder will appear your 32-bit TIFF. All working files will have been deleted. Also my .exe carries out some simple error handling, ie throw some .jpgs at it!

In conclusion, although my approach is not a fully-fledged plug-in (like kichetof achieved - well done), the .exe and auto-input approach achieves auto/one-click-like processing of CeroNoice from within a Windows Lightroom environment.

a1ex

@alexpok: nice samples, will take a look. Can you include the result of the original ZeroNoise with these files?

(I'm just curious to see how it works, since I couldn't run it)

alexpok

Quote from: a1ex on April 23, 2014, 07:37:58 AM
@alexpok: nice samples, will take a look. Can you include the result of the original ZeroNoise with these files?

(I'm just curious to see how it works, since I couldn't run it)

In case of these examples it crashes on the last stage. I spent lot of time, push it to work - missing DLL in system, i have to set previous date on computer, compatibility mode with WinXP etc. But sometime (depends on files) it crashes on last stage - not enougth memory. Too much for me ( I have 64Gb (Win64)) - i decided to stop trying.

But i have cheked your patched Ufraw version ( i am not sure, that i know how to set all necessary options, but i dit what i can). The same problem - i put small jpeg files - how it looks to the same folder, and add the third file - you can see another (i think so) type of artifacts.

More interesting, i think - i try some (new for me) Photoshop workflow, emulating your program. I put processed cr2 files on separate layers, and try to use very nice option - layer blending with comdition. I simply take (not very precise) highlights from one image, and rest from brighter one. It works, but this procedure is time consuming and nonlinear by itself. Whats interesting - i have the same artifacts in the same place (on a cups), but have some walkaround - in Photoshop you can "split" the border of this algoritm, after this some of the pixels you take from first, some - from second, and certain critical amount on the border - mixed. This works. The result is not so bright and nice that in your program, but it works. Thats why i am sure, that particular this problem could be solved with moderate time.

[Addition of the next day].

I put the results (jpegs, but full res around 4 megs each) of both CeroNoice and my Photoshop method in the same subdir CeroNoice.Bad
The result of CeroNoice was processed 2 ways - by Adobe Camera Raw 8.3, and modified UFRAw. I should say, that result of UFraw looks much better - it doesnt have greenish color cast, and all artifacts much less prominent.
Now my image a little bit brighter - i modified method a little.

[endOfAddition]


PS.
The numbers (on the border) in this huge tif are pretty close, but i found this problem (much less prominent tho) even in "Good" situation.  May be performing all calculations in double (8 byte) could help. For example, with FFT i can perform multiplications of numbers with  millions decimal digits(nvidia CUDA) with double and only 10000 or so with float.  Even one wrong constant and conversion(8-4-8) can ruin all algorithm.

PPS. Thanks for your great work - its realy amaizing. I even did not believed my eyes trying RAW video and Dual ISO.

garry23

Alex

Just to let you know that I went to use CeroNoice.exe tonight and my Norton security remove your .exe!

This is the data Norton created:

acoutts.com
Web Site Location       United States of America
icoCaution
CAUTION
Site Owner? Click here
Norton Rating
Safeweb Share
Norton Safe Web has analyzed acoutts.com for safety and security problems. Below is a sample of the threats that were found.
Summary

    Computer Threats: 1
    Identity Threats: 0
    Annoyance factors: 0

I now need to download again!

lureb74

Quote from: garry23 on April 23, 2014, 06:50:00 AM
In addition to CerioNoice.exe, dng_validate.exe and dcraw.exe, you need my "CeroNoice Bracketing.exe", which is the 'glueware' processor between CeroNoice.exe, dng_validate.exe and Lightroom.

What exactly is the meaning of "CeroNoice Bracketing.exe, which is the 'glueware' processor between CeroNoice.exe, dng_validate.exe and Lightroom"? And where I can find this "CeroNoice Bracketing.exe", if it is shared?

Sorry for the question, but I tried many times to obtain DNGs with +/-10 exp stops il LR with CeroNoice, I really don't understand how to...
The only ways that I've found since now are with PS (merge with HDR Pro), Photomatix or many other HDR softwares. Great softwares, because they have deghosting tools too, but they are expensives...

josepvm

I get lots of pink and also green dots when trying to make an HDR picture of a sunset with CeroNoice, from a bracketed series, EOS 500D



Image

The pink and green dots must be blown highlights in the brighter exposures. And I suppose the issue is related with bad white level info in the cr2 files.

As suggested in the ufraw-mod thread, I've tried to convert the cr2 files to DNG with Adobe DNG converter, and then process the DNG series wih CeroNoice, but this does not solve the issue. Checking the black and white levels for the DNG's (with "exiftool -BlackLevel -WhiteLevel *.dng") I get values of 1024 for black level and 13200 for white level. I've tried to reduce the white level value in the DNG's using:

exiftool -WhiteLevel=10000 *.dng

and even

exiftool -WhiteLevel=4000 *.dng


and then compose the HDR with CeroNoice again, but this does not solve the problem, either.

Here is a link to a Dropbox folder with the original frames in cr2 format, the same frames converted to DNG, and the resuting HDR with CeroNoice (jpg format. processed with ufraw-mod, the 32 bit float DNG is huge)


The issue is not exclusive to CeroNoice. Using Darktable (that also gets a HDR picture in DNG format directly merging the cr2 files) I also get these pink dots in sun's reflection on the sea surface.


The original Zeronoise, by Guillermo Luijk, (to be precise, the Linux port by Juanma Font ), that first converts every cr2 file with dcraw and then merges the resulting tiff files, brings good results, no pink and green dots (some further adjustments done with Darktable):



Image 2

Any suggestion, to avoid these issues?




a1ex

These are motion artifacts (known limitation). Not sure what to suggest, need to research the topic first.

josepvm

Quote from: a1ex on August 19, 2014, 07:09:04 PM
These are motion artifacts (known limitation). Not sure what to suggest, need to research the topic first.

Ok, thanks, I had not taken into account that the water was moving  ??? At least a mistery solved for me, when using both CeroNoice or Darktable. This is also a tracked issue in Darktable for quite a long time.

Thanks again, A1ex. And a further question: would be possible to get a Linux build of CeroNoice? In case you don't want to share the source code for any reason, I have not found it in your Bitbucket repository...


a1ex

Here's the source, but building it requires some serious patching of ML DNG code (to add floating point support).

CeroNoice.c

From what I remember, you need to upgrade to DNG 1.4, remove the bad pixel opcodes, and tag the file as floating point. Building it with 16-bit integer output should be easier, but the dynamic range is very limited (only useful for those cases where dual iso is enough).

josepvm

Ok, thanks. I will try, but it seems too hard for me by now ... and considering that the Windows executable works fine with wine  :)

josepvm

I have taken a closer look at the HDR image processed with the original Zeronoise, and the motion artifacts are also present. This is a 100% crop of the same sunset scene in my previous post:



Done with Zeronoise, with no progressive blending and no antighosting.


In CeroNoice and Darktable's HDR merging, the artifacts are a lot more visible, probably because the merging is done with not debayered files, and the artifacts produce, after debayering, zones with highly saturated magenta and green artifacts.

I have played with "Progressive blending" and "Antighost" settings in Zeronoise. And the artifacts can be reduced a little. Here are some samples:



Progressive blending set to 3 pixels, Antighost set to 0.



Progressive blending set to 0, Antighost set to 3 pixels.



Progressive blending set to 3 pixels, Antighost set to 6 pixels.

The transition from a zone taken from a darker exposure to a zone taken from a brighter one is much less apparent, but other artifacts appear (see some circles on the water with a light blue halo), and also some detail is lost, and some of the people on the beach are erased.

josepvm

Quote from: a1ex on August 19, 2014, 07:27:34 PM
Here's the source, but building it requires some serious patching of ML DNG code (to add floating point support).

CeroNoice.c

From what I remember, you need to upgrade to DNG 1.4, remove the bad pixel opcodes, and tag the file as floating point. Building it with 16-bit integer output should be easier, but the dynamic range is very limited (only useful for those cases where dual iso is enough).

I have succesfully built it for Linux, in 16 bit integer mode.

It's quite easy. I have placed CeroNoice.c in "modules/dual_iso" directory, created a "Makefile.CeroNoice" file using "Makeflile.cr2hdr" as a template, replacing the "cr2hdr" or "CR2HDR" strings with CeroNoice or CERONOICE, respectively. And then adding a entry for "Makefile.CeroNoice" to the "Makefile" file in the same directory, similar to the already existing entry for "Makefile.cr2hdr". And at last, a simple "make CeroNoice" in the command line builds it.

It works, and the DR is not as wide as the 32 float version, of course, but is wide enough to merge a bracketed series of 2 exposures spaced 4EV. And both being Dual-ISO 100/800 shots. I process first the 2 Dual-ISO cr2 files with cr2hdr (20bit) and then I merge the resulting DNG files with CeroNoice.

This is enough for me to cover a lot of HDR scenes where a single Dual-ISO shot is not enough. And with only 2 frames, the delay between shots is short enough to minimize a lot of motion artifacts.

So this 16 bit integer version of CeroNoice seems to me a quite useful tool for creating HDR pictures.

It clips more highlights (both 16 bit integer and 32 bit float versions) than Zeronoise applied to the same frames. But is a lot faster and easier to use. So I only need to avoid exposing too much the darkest frame.

Guillermo Luijk

I think you are asking too much from a pixel selection algorithm, it will never work properly on moving scenes. What I do with ZN (the genuine one!) when moving parts of the scene affect differently lit areas, is to manually edit the blending map, forcing all pixels are taken from the same RAW source file. That would have worked perfect on the sea waves.

Automated anti-ghosting:




Manual anti-ghosting:



Regards

Guillermo Luijk

I don't know how to quote someone's post on this forum so I copy&paste here a comment by alexpok:

"I found some problems as well, i will try to describe them below, may be it helps to improve this wonderfull tool.

1. I decided to limit testing  by only 2 shots, 3EV difference. The reason - the quality already very good in case of no problems, in case of some problems additional files only makes it worse.

2. I made 2 sequences by 2 shots, run CeroNoice, run DNG_validate as described. The only difference between these sequences was one additional lamp turned on - it produces some highlights on scene. In good case (lamp off) i just process out.dng in Adobe Photoshop camera RAW 8.3 - i did not ..."



You will never get good results with the ZN algorithm if your images are not linearly correlated in exposure. If you switch on a lamp, not all pixels of the scene get the same extra amount of exposure, so the ZN algorithm will produce terrible artifacts in the merged composite. You would need a very wide progressive blending parameter (no idea if alex's ceronoice implements it) and even in that case the results can be wrong.

For such type of differently exposed images, I have found the Enfuse algorithm (actually I always use the Tufuse implementation by Max Lyons) very robust. It is capable of even merging quite finely 2 shots where a flash was used only on one of the captures.

Regards


josepvm

Quote from: Guillermo Luijk on August 28, 2014, 07:59:23 PM
I think you are asking too much from a pixel selection algorithm, it will never work properly on moving scenes. What I do with ZN (the genuine one!) when moving parts of the scene affect differently lit areas, is to manually edit the blending map, forcing all pixels are taken from the same RAW source file. That would have worked perfect on the sea waves.

Thanks, Guillermo, I will try it.

And thanks for your programs (Zeronoise, Histogrammar) and your great tutorials and articles (Gracias por tus programas y los magníficos tutoriales y artículos en tu web  ;))



josepvm

Just to inform that CeroNoice 32-bit float DNGs can be sucessfully processed with Darktable.

This is the trick that Johannes Hanika has suggested me in Darktable's developers mailing list:

Quote
it's only that our float dng are normalised to clipping at 1.0, and these have crazy high values in them. so you need to disable the highlight reconstruction module (see screenshot) and stop down by like 15ev (right click and type in the respective slider in the exposure module, the range will dynamically expand).