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.