Bildschärfe erkennen
-
Hallo zusammen,
ich mache mit einem Mikroskop digitale Aufnahmen. Um das Bild scharf zu stellen, kann ich die Position der Linsen verändern. Ich bräuchte nun eine Methode oder Algorithmus, wie man die Position finden kann, in der das Bild scharf ist. Hat irgendjemand eine Idee, was ein Maß für die Schärfe eines Bildes ist?
Gruss
Lodo2609
-
Moin,
ich kann dir leider keine Lösung bieten, aber evtl. einen Ansatz.
Ich würde ein Algo. einsetzen der Kanten in einem Bild erkennt.
Umso besser bzw. umso mehr Kanten der Algo. findet, desto schärfer ist das Bild, jedenfals so wie ich es mir gerade Vorstelle.
Evtl. kannst du damit etwas anfangen.MFG
-
berechne zu jedem pixel den farbabstand zu den nachbarpixeln.
also for_each(..) Sum+=(rot-rot)(rot-rot)+(gruen-gr... blau...;
dort wo Sum am groesten ist, hast du wohl die schaerfste einstellung.
btw. http://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
-
Ich würde mir an Deiner Stelle mal die Arbeit da durchlesen:
-
wenn der abstand zwischen probe und linsen immer gleich bleiben kann (probe ist z.b. zwischen zwei glasplättchen geklemmt), würd ich wahrscheinlich eine einmalige kalibration auf den optimalen abstand vorziehen. kalibration bedeutet dabei, dass du eine definierte probe aufnimmst (ein fadenkreuz oder schachbrettmuster wäre wahrscheinlich gut), mit der es sehr einfach ist, die optimale schärfe automatisiert zu ermitteln.
-
ich habe in einem Labview-Forum folgende Methode gefunden:
Das ist zwar ein UraltTread aber ich möchte erzählen wie ich das gelöst habe:
* ROI definieren da es meist interessant ist nur in einem Bereich scharf zu sein (nein nix Sex sondern IMAQ)
* Das ROI ausschneiden
* Diesen Teil differenzieren (IMAQ Edge Detection - Differenciate)
* ein Histogramm dieses Bildes machen
* Die Y-Werte (das sind die Häufigkeiten) LOG10 nehmen
* eine Gerade durchlegen
* je steiler die Gerade umso schärferIts simple as that -or?
Gottfried
ich möchte das ganze nun mit OpenCV machen, die Schritte 1 -2 und 4- 7 sind klar, nur wie mache ich den dritten Schritt
Diesen Teil differenzieren (IMAQ Edge Detection - Differenciate)
Oder gibt es eine andere Bibliothek als OpenCv, mit der man das machen kann?
Vielen Dank im Voraus
Gruss
Lodo2609
-
IMAQ sagt mir so ca. null. aber was gemeint ist, ist eigentlich sehr eindeutig: kantendetektor über das bild laufen lassen. kantendetektoren differenzieren das bild, bilden also eine ableitung.
der kern des algorithmus, den du da gefunden hast, ist also: suche kanten im bild, je mehr kanten du findest, desto schärfer ist. genau das, was NetZwerg bereits sagte.