depth_from_focus
— Bestimmung der Tiefe aus mehreren Fokusebenen.
depth_from_focus(MultiFocusImage : Depth, Confidence : Filter, Selection : )
depth_from_focus
bestimmt aus mehreren Bildern einer
Fokusserie die Tiefe. Die Bilder der Fokusserie werden dabei als
ein mehrkanaliges Bild in MultiFocusImage
übergeben.
Die Tiefe für jeden Bildpunkt wird als die Nummer des Kanals in
Depth
zurückgeben. Der Parameter Confidence
gibt die Sicherheit an, mit der die Tiefe für die Bildpunkte
geschätzt werden konnte. Große Werte bedeuten dabei eine große
Zuverlässigkeit der Schätzung.
Es wird dasjenige Pixel einer Fokusebene ausgewählt, das lokal am
schärfsten ist. Das verwendete Verfahren wird über die Parameter
Filter
und Selection
festgelegt.
Dem Parameter Filter
können die Werte 'highpass'
und 'bandpass' übergeben werden. Um die Schärfe im Bild zu
bestimmen, kann entweder ein Highpassfilter oder ein Bandpassfilter
verwendet werden. Je größer der resultierende Wert ist, desto
schärfer ist das Bild an dieser Stelle. Beim Bandpassfilter werden -
im Vergleich zum Highpassfilter - die ganz hohen Frequenzen
unterdrückt. Dies ist z.B. bei stark verrauschten Bildern nützlich.
Das gefilterte Bild kann optional noch mit dem Mittelwertfilter
geglättet werden, indem man zwei zusätzliche Integer-Werte für die
Maskengröße im Parameter Filter
übergibt
(z.B. ['highpass' , 7, 7]). Dadurch wird die
Schärfeinformation
über die benachbarten Pixel "verschmiert", so dass texturlose
Bereiche im Bild überbrückt werde können. Bitte beachten Sie, dass
diese Glättung kein Rauschen in den Originalbildern unterdrückt, da
sie erst nach der High- oder Bandpassfilterung angewendet wird.
Der Parameter Selection
bestimmt, wie die optimale
Fokusebene ausgewählt wird. Wenn der Wert 'next_maximum'
übergeben wird, wird das nächstliegende Schärfemaximum in der
Umgebung jedes Pixels verwendet. Bei 'local' werden dagegen
die für das Pixel ermittelten Schärfewerte aller Fokusebenen
verwendet. Mit 'next_maximum' erhält man i.d.R. ein etwas
robusteres und leicht geglättetes Ergebnis.
Eine solche zusätzliche Glättung ist nützlich, wenn zur Aufnahme der Fokussequenz keine telezentrische Optik verwendet wird. In diesem Fall verändert sich die Position eines Punktes innerhalb der Sequenz leicht. Durch geeignete Wahl einer zusätzlichen Glättung kann dieser Effekt teilweise kompensiert werden.
Besteht die Fokusserie MultiFocusImage
aus mehr als 255
Fokusleveln (Kanälen) so wird die Tiefe für Werte über 255
abgeschnitten, d.h. Tiefenwerte größer als 255 werden ignoriert.
Werden für die Filtermaske von Filter
gerade statt ungerade Werte
übergeben, verwendet die Routine an ihrer Stelle die nächstgrößeren
ungeraden Werte (damit ist der Schwerpunkt der Filtermaske immer eindeutig
bestimmt).
Wird Selection
auf 'local' gesetzt und als Filter
'highpass' oder 'bandpass' gewählt, kann
depth_from_focus
auf OpenCL-Geräten ausgeführt werden. Wird die
zusätzliche Glättung aktiviert, gelten die selben Einschränkungen und
Voraussetzungen wie für mean_image
.
Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.
MultiFocusImage
(input_object) multichannel-image(-array) →
object (byte)
Mehrkanaliges Graubild bestehend aus meheren Fokusebenen.
Depth
(output_object) singlechannelimage(-array) →
object (byte)
Tiefenbild.
Confidence
(output_object) singlechannelimage(-array) →
object (byte)
Sicherheit der Tiefenschätzung.
Filter
(input_control) string(-array) →
(string / integer)
Filter, um scharfe Pixel zu finden.
Defaultwert: 'highpass'
Wertevorschläge: 'highpass' , 'bandpass' , 3, 5, 7, 9
Selection
(input_control) string(-array) →
(string)
Methode scharfe Pixel zu finden.
Defaultwert: 'next_maximum'
Werteliste: 'local' , 'next_maximum'
Werteliste (für Compute Devices): 'local'
compose3(Focus0,Focus1,Focus2,&MultiFocus); depth_from_focus(MultiFocus,&Depth,&Confidence,'highpass','next_maximum'); mean_image(Depth,&Smooth,15,15); select_grayvalues_from_channels(MultiChannel,Smooth,SharpImage); threshold(Confidence,HighConfidence,10,255); reduce_domain(SharpImage,HighConfidence,ConfidentSharp);
compose2
,
compose3
,
compose4
,
add_channels
,
read_image
,
read_sequence
select_grayvalues_from_channels
,
mean_image
,
binomial_filter
,
gauss_filter
,
threshold
3D Metrology