<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi All:<br>
    </p>
    <p>Sorry, for long email...</p>
    <p>I've built a Qt app as a proof of concept for the optimal sub
      exposure calculation. The Qt project source can be found on my
      google drive, (I did not want to "pollute" the Kstars git with
      what might be considered pool quality design and my sloppy
      (java-like) code: my last real c++ project was in 1998, and this
      was my first experience with Qt).  <br>
    </p>
    <p>A link to this project is here:  
<a class="moz-txt-link-freetext" href="https://drive.google.com/drive/folders/11BIS5tyPeJcZeoysgjdrG2j_J8Cbu0zj?usp=sharing">https://drive.google.com/drive/folders/11BIS5tyPeJcZeoysgjdrG2j_J8Cbu0zj?usp=sharing</a></p>
    <p>I may be have bugs in this code... I have not taken the time to
      validate all test results back to Dr Glover calculations. But the
      results this tool is producing for my camera are matching what my
      old, (and validated), Java code produced.</p>
    <p>Before you run it, please be aware that this implementation does
      not include any compensation for the effect of a filter in the
      optical train. So the results of the calculation would only be
      relevant for an unfiltered exposure.  My Java code from years ago
      attempted to apply compensation for two broadband filters that I
      use, but my calculation method for filters was only based on some
      comments found on cloudy nights web site; it was not from the
      presentation of Dr Glover.  <br>
    </p>
    <p>Since I'm not applying filter compensation in this POC
      application, the results will not translate to your real-world
      experience of imaging with filters.  It is likely that the
      calculated exposure times from this application could be on the
      order of 10x lower that what you would expect with a filtered
      exposure.  I plan to continue my research on how best to implement
      filter compensation.  (I might be sending a separate email on this
      topic).<br>
    </p>
    <p>This POC application relies upon gain to read-noise data for a
      few specific ZWO cameras.  I've created xml files to provide this
      data, (in a folder named "ImageSensorData"). This POC app will
      read the folder and add the files names into a QComboBox for ease
      of selection. The format of the xml files is simple, and new files
      can be added to the folder to expand the options for testing.</p>
    <p>When launched, the application will present a window with two
      frames. The small frame on the left represents data that we might
      pull from KStars Ekos/Indi.  This will be used to initialize the
      calculator in the frame on the right.  The panel on the right
      would be the only display a user would experience in KStars.   So
      there are two SQM controls in this application for a reason, the
      SQM control on the left frame would not exist in KStars, the SQM
      control on the "user" interface (right frame) will present to the
      user and allow the user to experiment with SQM values of different
      locations.<br>
    </p>
    <p><img src="cid:part1.jixPDm0E.eGPOm6Tc@sbcglobal.net" alt="">
    </p>
    <p>To initialize the calculator, select an imaging camera, a focal
      ratio and the desired "initial" SQM value, then click "Apply". 
      The calculator will present a graph of the optimal sub-exposures
      based on the initial data, (I have gain defaulted to 50). <br>
    </p>
    <p><br>
    </p>
    <p><img src="cid:part2.wti03FLZ.rKaokz1P@sbcglobal.net" alt=""></p>
    <p>To find an optimal exposure time for a given gain, simply adjust
      the gain slider relative to the x-axis values on the graph. For
      this example camera, notice there is a severe step in the exposure
      times caused by the camera read-noise having a prominent step at
      gain 100. For this camera, moving gain just above 100 will
      drastically reduce the exposure time, and the noise for the
      sub-exposure. <br>
    </p>
    <p>To calculate for a different location, the (right) SQM control
      can be adjusted. A higher SQM will naturally produce longer
      optimal exposures, since there will be reduced light pollution. 
      Here is the same case in a darker sky; the optimal exposure graph
      and results changed to a longer exposure. Notice that the exposure
      noise remained the same, but we have a longer exposure... so the
      proportion  signal to noise is better.  And the predicted noise on
      the stacked images is significantly reduced for roughly the same
      integration times.<br>
    </p>
    <p><img src="cid:part3.mkZ628uC.XSBp4nbF@sbcglobal.net" alt=""></p>
    <p>The calculations by Dr Glover also included a value for a
      tolerance of the increased noise. The default is 5% which he
      stated was a good "general" value. This value can be adjusted
      based upon personal preference. Adjusting this will effect the
      allowed noise for the single exposure, and that will also effect
      the stack noise. <br>
    </p>
    <p>On the subject of trying to capture read-noise data from bias
      frames; I encountered a hurdle, so I may be sending another email
      in a day or so.</p>
    <p>Finally,  I don't claim to fully comprehend the physics that Dr
      Glover presented. But as I have tested his equations with this
      application, the results seem make sense, his equations lead to
      exposures times that provide a higher signal to noise value.<br>
    </p>
    <p>Please feel free to openly criticize what I'm suggesting with
      this tool being added to KStars.  I think it will add some value,
      but supporting data for cameras may not be easy, and so the
      implementation of this tool may need to be limited to only those
      cameras where we can easily find the needed gain read-noise data.
      <br>
    </p>
    <p>Please experiment with this tool, let me know what you think,
      (good or bad).</p>
    <p>Thanks<br>
    </p>
    <p><br>
    </p>
    <p>Qt Project source code can be found here:<br>
    </p>
    <p><a class="moz-txt-link-freetext" href="https://drive.google.com/drive/folders/11BIS5tyPeJcZeoysgjdrG2j_J8Cbu0zj?usp=sharing">https://drive.google.com/drive/folders/11BIS5tyPeJcZeoysgjdrG2j_J8Cbu0zj?usp=sharing</a></p>
    <p></p>
    <div class="moz-cite-prefix">On 3/7/23 04:00,
      <a class="moz-txt-link-abbreviated" href="mailto:kstars-devel-request@kde.org">kstars-devel-request@kde.org</a> wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:mailman.15.1678190403.8999.kstars-devel@kde.org">
      <pre class="moz-quote-pre" wrap="">Send Kstars-devel mailing list submissions to
        <a class="moz-txt-link-abbreviated" href="mailto:kstars-devel@kde.org">kstars-devel@kde.org</a>

To subscribe or unsubscribe via the World Wide Web, visit
        <a class="moz-txt-link-freetext" href="https://mail.kde.org/mailman/listinfo/kstars-devel">https://mail.kde.org/mailman/listinfo/kstars-devel</a>
or, via email, send a message with subject or body 'help' to
        <a class="moz-txt-link-abbreviated" href="mailto:kstars-devel-request@kde.org">kstars-devel-request@kde.org</a>

You can reach the person managing the list at
        <a class="moz-txt-link-abbreviated" href="mailto:kstars-devel-owner@kde.org">kstars-devel-owner@kde.org</a>

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Kstars-devel digest..."
</pre>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">Today's Topics:

   1. Re: Optimal Exposure and Noise Calculator (Jens Scheidtmann)
</pre>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Kstars-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Kstars-devel@kde.org">Kstars-devel@kde.org</a>
<a class="moz-txt-link-freetext" href="https://mail.kde.org/mailman/listinfo/kstars-devel">https://mail.kde.org/mailman/listinfo/kstars-devel</a>
</pre>
    </blockquote>
  </body>
</html>