Meten van field curvature (beeldveldwelving) en tilt (kanteling)

Viewing 15 posts - 1 through 15 (of 28 total)
  • Author
    Posts
  • #22829

    han.k
    Participant
    posts: 68

    Velen kennen waarschijnlijk CCDinspector. Dit programma meet de field  curvature/beeldveldwelving en tilt/beeldkanteling door  de verschillen in FWHM ofwel HFD waarden van de de verschillende gebieden in het beeld. Dit lukt met een enkele opname en alleen als het beeld in het centrum perfect in focus is.

    Met deze mail wil ik een ander experimentele methode voorstellen die geïmplementeerd is in het programma ASTAP.

    Ik neem aan dat CCDinspecter de beeldveldwelving berekent door ((A / B) -1) * 100%. Waarbij B de gemiddelde fwhm / hfd van het midden van de opname en A van de buitengebieden van de opname is. Dit werkt alleen als de opname voor het centrum pefect in focus is. Is het beeld niet in focus dan klopt de meting totaal niet. bovendien heet de off-axis aberratie ook een invloed. Het zou beter zijn als de beeldveldwelving  gemeten wordt al C en uitgedrukt in stappen van de focuser.

    Om het focuspunt te vinden van een aantal gebieden van de sensor is het nodig om een aantal opnames te maken en van de gemeten hfd’s een V-curve/grafiek op te bouwen of met “curve fitting” het focus punt te vinden.

    Dit idee is nu geïmplementeerd in het gratis programma ASTAP, tabblad “inspector”.

    Om dit idee te toetsten zoek ik gebruikers die dit will testen met hun systeem.

    De rest nu in het Engels:

    Fotos:

    • 1) Factors A,B, C explained
    • 2) Graph of the focus curves of  100mm APO astrograph, focal length 580 mm. Plotted are hfd values of median=all, the center of the image, outer area and the image split in four parts:
    • 3) In the program, the data is presented as a table which can be selected and copied to the clipboard:

     

    The usage is as follows:

    • Prepare a series of short exposure images with different focuser positions and a lot of stars. Exposure time a few seconds. Move for each image the focuser a small step but only in one way to prevent backlash problems. Images with stars having an hfd above 12-14 will not be analysed correctly since this was historically not implemented.
    • Browse with ASTAP to the images.
    • Press analyse
    • Optional:  Select all rows by ctrl+a, copy with ctrl+c and paste to your favorite spreadsheet.
    • Press curve fitting for report on best focus point for each image area.

     

    This is experimental. I’m interested in more test images.  If anybody can assist, make them as indicated below.

    Han

    • This topic was modified 4 weeks ago by  han.k.
    Attachments:
    You must be logged in to view attached files.
    • 3 people like this.
    #22834

    InFINNity Deck
    Participant
    posts: 224

    Hoi Han,

    Erg interessant, mooi dat dit in nu ASTAP zit. Momenteel is mijn C11 even weg voor onderhoud, maar zodra mijn observatorium weer operationeel is (hopelijk over een week of 3-4) en het weer meewerkt, zal ik wat foto’s produceren. Ben erg benieuwd naar het resultaat.

    Nicolàs

    #22836

    han.k
    Participant
    posts: 68

    Hallo Nicolàs,

    Het principe is gelijk aan een autofocus routine in programmas. Wat ik ook moet vermelden is dat de stap grootte constant moet zijn. Hier in het Engels een korte toelichting:

    Han

    For the images to analyse in the “inspector tab”, please use a fixed focuser step since for all curve offsets the same weight factor is used in curve fitting routine. It is possible to make more then one exposure per focuser position but do the same for all focuser positions.

    For example if your focuser is focused around position 1007 and the range to reach hfd=12 on both sides is 900-1100 do the following:

    move to 800 {to remove backlash}

    move to 900 and make image of 5 or 10 seconds exposure

    move to 910 and make image

    move to 920 and make image

    ..

    ..

    ..

    move to 1100 and make image

    This makes 20 steps but probably 10 steps or even less will do. The direction is not important. You could also do 1100 to 900. You should also be able to mix the test series. The detection doesn’t work above hfd=12 since it was designed for the alignment & solver and not finding the focus point.

    #22855

    InFINNity Deck
    Participant
    posts: 224

    Hoi Han,

    ik lees dat jij curve fitting gebruikt. Onlangs heb ik meegewerkt aan het verbeteren van de autofocus-routine van SGP. Mijn bijdrage daar was vooral het robuust detecteren en verwijderen van uitschieters, het testen van algoritmes en het leveren van data. Er was op dat moment al gekozen voor een kwadratische best-fit (dus een parabool). Zolang de stapgrootte klein genoeg is, zodat de Y-waarden niet te groot worden, is de parabolische fit een redelijke benadering. Net als jouw routine leveren autofocus-routines grafieken die bij grotere afstand vanaf best focus lineair worden en daarom beter gefit kunnen worden met een hyperbolische fit zoals beschreven door Carsten van Lost Infinity (inclusief source code).

    Uiteraard ben ik dus benieuwd welke methode jij gevolgd hebt. 🙂

    Nicolàs

    #22863

    han.k
    Participant
    posts: 68

    Hallo Nicolàs,

    The focussering curve fitting heb ik voor CCDCiel  ontwikkeld en gaat uit van een hyperbool. De totale fout wordt bepaald door de bekende RMS methode dus de fout in het kwadraat, het dan middelen en dan de wortel nemen. Dan is het een kwestie van schuiven met de hyperbool parameters.

    Over de beste benadering is onlangs nog flink gediscuteerd op Cloudynights, maar ik heb de beste resultaten met een hyperbool. Dat was ook de conclusie van de Focusmax ontwikkelaars. Het hangt natuurlijk ook af hoe goed je hfd meting van de sterren werkt. Is de hfd meting niet goed dan wordt je V-curve ook anders. Ik vermoed dat de voortstanders van een parabool fit een slechtere hfd meting hebben.

    De kwaliteit van de curve fit kan je testen. Alle data is te kopiëren in Excel en de hyperbool parameters word gegeven in de oplossing (focus, a, b). Dan krijg je zo iets in Excel (voor mijn 100 APO astrograph) als bijgevoegd. Wat opvalt is dat de curve fit voor het centrum perfect is. Voor de buitengebieden is de hyperbool smaller en gaat de curve fit bij het focus lager. Voor het focus punt van de buitengebieden ligt de gemeten hfd net iets hoger dan voor het centrum wat licht in de lijn van de verwachting. Voor de volledigheid bijgevoegd een van de Excel files waarin je de gemeten data kan kopiëren.

    Het uiteindelijke ASTAP rapport ziet er dan zo uit:

    13:22:39  median        Focus=35972    a=1,23909     b=143,37264    _____________        lowest error=0,01187     iteration_cycles=4
    13:22:39  center        Focus=35925    a=1,87688     b=212,46136    _____________        lowest error=0,00540     iteration_cycles=4
    13:22:39  outer ring        Focus=36028    a=0,30912     b= 37,90557    offset=  103        lowest error=0,02590     iteration_cycles=6
    13:22:39  bottom left        Focus=36000    a=1,47225     b=169,40969    offset=   75        lowest error=0,01023     iteration_cycles=2
    13:22:39  bottom right    Focus=35825    a=1,52325     b=167,86880    offset= -100        lowest error=0,00695     iteration_cycles=2
    13:22:40  top left        Focus=36094    a=1,39523     b=159,90826    offset=  169        lowest error=0,00958     iteration_cycles=4
    13:22:40  top right        Focus=35934    a=1,74906     b=200,38594    offset=    9        lowest error=0,00777     iteration_cycles=4
    My focuser makes about 1500 steps per mm, so the found differences up to 169 steps are very small a little more then 0.1 mm or 0.004 inch

    E.a is natuurlijk in ontwikkeling

    Han

    De gemeten waarden zijn blauw. De curve-fit data is rose

    Attachments:
    You must be logged in to view attached files.
    • 1 person likes this.
    #22865

    han.k
    Participant
    posts: 68

    Het artikel van Carsten van Lost Infinity (inclusief source code). is interessant. De factor d gebruik ik niet. Wel negeer ik de hyperbool onder de laagste gemeten hfd waarde. Daar overheerst de seeing. Toen ik het algorithm in 2018 ontwikkelde zocht ik naar de differentieel van een hyperbool maar kon die niet vinden. Uiteindelijk was het relatief gemakkelijk een routine te schrijven door gebruik te maken van sinh() en cosh() functies voor de hyperbool. Hiermee kon ik ook de inverse functie van de hyperbool beschrijven. Code is beschikbaar bij CCDCiel en ASTAP.

    Na de discusssie op CloudyNights doet het programma Nina iets soortgelijks.

    • 1 person likes this.
    #22871

    InFINNity Deck
    Participant
    posts: 224

    Dank voor de link naar het CN-draadje. Mocht je het interessant vinden: het vinden van uitschieters is in de focusroutine van SGP geregeld met een Mean Absolute Deviation. Deze is bijzonder robuust, vooral als het om kleine steekproeven gaat. Ik heb dit jaren geleden al eens toegepast in een applicatie voor automatische beeldverwerking bij waterpasinstrumenten.

    Nicolàs

    #22873

    han.k
    Participant
    posts: 68

    Dat artikel over Mean Absolute Deviation is zware kost. Ik ben van huis een electrical engineer en geen wiskundige. De post op het SGP forum was interessant. Nietemin de gekozen parabool is minder geschikt zeker voor de hoge hfd waarden. Het voordeel van de parabool is dat je de differentiaal functie kan bepalen en gebruiken in het curve fitten.

    E.a. heeft me er toe aangezet nog eens naar de curve fit routine te kijken. De least square fout die ik in de iteratief loop zo klein mogelijk probeer te maken is gebaseerd op de delta hfd dus de y as. Dat is volgens Wikipedia een  algebraic fit. Waarschijnlijk is een geometric fit beter. Ik kan ook de fout in x  dus focuser positie bepalen. Deze kan ik aanvullend meenemen en mogelijk een betere fit bepalen.  Advies of hulp kan ik daarbij gebruiken. 🙂 De code staat hier

    Han

    #22874

    InFINNity Deck
    Participant
    posts: 224

    Ik zie nu dat ik een schrijffout maakte, ik bedoelde de Median Absolute Deviation, die wijkt iets af van de Mean Absolute Deviation, en is nog een stuk robuuster. Normaal gesproken worden uitschieters bepaald door het gemiddelde en standaardafwijking van een serie waarnemingen te berekenen. Vervolgens wordt aangenomen dat iedere waarneming die plus en min [kappa x standaardafwijking] van het gemiddelde afzit, een uitschieter is (met kappa 1, 2, 3 etc. voor een waarschijnlijkheid van respectievelijk 68%, 95%, 98%). Het probleem daarbij is, dat het gemiddelde direct beïnvloedt wordt door die uitschieter(s), vooral bij kleine populaties. De Median Absolute Deviation doet een robuuste inschatting van het gemiddelde en de standaardafwijking aan de hand van de mediaan. Ik heb mijn code destijds geschreven aan de hand van een artikel van Peter Rousseeuw en Christophe Croux. De methode wordt op de eerste pagina ervan uitgelegd.

    In het kort komt de methode er op neer dat je eerst de mediaan bepaalt van de waarnemingen, vervolgens het absolute verschil tussen de waarnemingen en deze mediaan. Van die absolute verschillen neem je vervolgens nogmaals de mediaan. Deze tweede mediaan is de MAD (formule 1.2 in het artikel). Vervolgens loop je nogmaals door alle waarnemingen en kijk je of de absolute verschillen tussen die waarnemingen en die eerste mediaan kleiner zijn dan de MAD x 1.4826 x kappa (1.4826 staat uitgelegd in het artikel, kappa wederom 1, 2, 3, etc.). Zijn de verschillen groter, dan zijn de bijbehorende waarnemingen uitbijters.

    Het voordeel van de kwadratische fit is inderdaad dat de beste focuspositie direct berekend kan worden, maar ik neem aan dat dit ook bij een hyperbool mogelijk is (heb ik me nog nooit in verdiept). Wellicht dat de code van Carsten dit verduidelijkt. Zolang de focusstappen klein blijven en daarmee het totale focusbereik klein, dan is de bodem van de hyperbolische curve goed te fitten met een parabool.

    Nicolàs

    PS Zie ik goed dat jouw code in een soort Pascal geschreven is? Het is alweer 25 jaar geleden dat ik daarin liep te rommelen… 🙂

    #22890

    han.k
    Participant
    posts: 68

    In de routine is het moeilijk om outliers van de meetdata  te definieren. De hyperbool functie bestaat uit drie parameters die allemaal uitgeprobeerd moeten worden. De fouten d.w.z. het verschil tussen de gemeten en voorgestelde hyperbool zijn erg variabel doordat de hyperbolen mekaar kunnen kruisen in het fit process. Een kruising is geen goede fit maar op dat punt ontstaat er wel tijdelijk een kleine fout.

    Ik zou de mediaan fout ofwel MAD kunnen bepalen i.p.v de gemiddelde(fout*fout)  Misschien krijg je dan een betere fit. Het probleem is dat dit enige duizenden keren moet  gebeuren, Dit kan snel te veel tijd kosten. Ik zal het eens proberen want de mediaan heb ik al in de code.

    Het programma is geschreven in object Pascal (Lazarus).  Dat wordt nog steeds actief ontwikkelt en gebruikt maar is geen mainstream meer.

    Han

    #22895

    han.k
    Participant
    posts: 68

    Daar komt toch wat moois uit. De mediaan error werkt goed en negeert een outlier. Nu nog testen of het altijd robuust is 🙂

    Han

    • 1 person likes this.
    #22925

    han.k
    Participant
    posts: 68

    MAD, median absolute deviation is niet onfeilbaar voor curve fitting van een V-curve. In sommige situaties gaat het mis met het bepalen van de mediaan van de errors. In de onderstaande situtatie was de mediaan fout vrijwel nul door de 7 punten links en werden de 6 meetpunten rechts genegeerd,

    Han

    • 1 person likes this.
    #22926

    InFINNity Deck
    Participant
    posts: 224

    Hoi Han,

    ja, dat ziet er inderdaad niet netjes uit. Nu valt het mij op dat de onderkant van de data best smal is en dat de rechter flank niet netjes oploopt, alleen de bovenste vier punten lopen in dezelfde richting als de best fit curve, het onderste deel loopt steiler op. Ik heb jouw plaatje even bewerkt en de best magenta fit opnieuw gepositioneerd (de groene lijn), dan valt dat meteen op. Ik begrijp alleen niet helemaal waarom de hele rechte kant verworpen wordt. Het zou twee dingen kunnen betekenen:

    – je filtert te zwaar (kappa = 3 of hoger);
    – je model past niet goed bij de werkelijkheid.

    Ik heb natuurlijk geen idee hoe jouw script de hyperbool oplost, maar ik neem aan dat de helling van de flanken automatisch bepaald worden, of zijn deze afhankelijk van de gebruikte instellingen?

    Werd dat hoge punt in de linker flank dus niet verworpen?

    Nicolàs

    #22928

    InFINNity Deck
    Participant
    posts: 224

    ah, plaatje vergeten….

    • 1 person likes this.
    #22929

    han.k
    Participant
    posts: 68

    Hallo Nicolàs

    Hopelijk is deze technische draad niet storend voor de andere leden.

    De mad word als volgt berekend:  mad:= median(abs(x – median(x)))    Waarbij x een array is.

    Zie:  https://eurekastatistics.com/using-the-median-absolute-deviation-to-find-outliers/

    De eerste median(x) is de vervanger for mean=gemiddelde. Het probleem met curve fitten is dat je alle combinaties uitprobeert. Stel je heb een hyperbool met aan een kant een iets langere vleugel. Dat dan kan het zijn dat langere vleugel voor de 55% van de gemeten waarden (afwijkingen)  zorgt. De mediaan ligt dan bij 50% van de gemeten waarden en dan is de mediaan gelijk aan een fout van de lange vleugel en kan dicht bij nul liggen. De waarde van de korte vleugel worden dan allemaal als outlier gezien. De outlier grens had ik bij 2* 1.48*mad gelegd wat overeenkomt met 2 * standaard deviatie ofwel  96% bij een normale verdeling.

    Misschien zou je de mad van elke vleugel apart moeten bepalen…

    Mijn conclusie is nu dat de standaard methode om outliers te vinden betrouwbaarder werkt bij curve fitten dan mad. Bij mad locked de routine soms op de langere hyperbool vleugel.  Een van de problemen is dat de populatie totaal geen normale verdeling heeft (tijdens het curve fitten).

    Het verwijderen van outliers is veel lastiger dan ik dacht.

    Han

     

     

     

     

     

     

Viewing 15 posts - 1 through 15 (of 28 total)

You need to log in or to reply to this topic.