Schärfen Messung



  • Hallo,

    ich habe eine z-achse, die einem substrat entgegen faert, hierbei
    messe ich alle 15microns die schärfe eines Ausschnittes:

    float SpreadOf(CRect rc,float z)
    	{
    		CStatistic stat;
    		BYTE tb[256]={0};
    
    		for(int x(m_rc.left); x < m_rc.right; x++)
            for(int y(m_rc.top); y < m_rc.bottom; y++)
    		 tb[g_drw.GetBWPix24((DWORD)g_pPat->m_pImage,x,y)]++; 
    
    		for(int n(0); n<256; n++)
    	     stat.Calc(tb[n]);
    
    		if(m_alias.find("1") != -1)
    		{
    			  TRACE("%0.4f  %0.4f\r\n",stat.m_RMS,z);
    		}
    
            return stat.m_1SIG;
    	}
    

    im Prinzip wird jeder pixel verwendet um eine tabelle mit 256 Eintraegen
    zu indizieren, daraus leite ich die Streuung ab, ist die streuung am
    groessten ist das bild am schaerfsten.

    Leider ist das nicht sehr genau, trotz einer rauscharmen Kamera
    variiert der messwert zu stark, gibt es noch bekannte bessere
    andere Verfahren ?

    Danke fuer Hinweise



  • Es erschliesst sich mir nicht ganz, wie man den Fokusierungsgrad vom Histogramm ablesen koennen soll.
    Ich wuerde stattdessen versuchen, die mittlere/maximale Amplitude der Sobel-Gradienten zu finden.



  • Danke für deinen Hinweis, da werde ich wohl noch
    etwas weiter forschen müssen, in dem Histogramm
    messe ich die Streuung , soweit Wunderbar.. geht aber noch
    besser Da hast Du recht. Ich teste mal weitere Filter.


Anmelden zum Antworten