depth_from_focusdepth_from_focusDepthFromFocusDepthFromFocusdepth_from_focus (Operator)

Name

depth_from_focusdepth_from_focusDepthFromFocusDepthFromFocusdepth_from_focus — Bestimmung der Tiefe aus mehreren Fokusebenen.

Signatur

depth_from_focus(MultiFocusImage : Depth, Confidence : Filter, Selection : )

Herror depth_from_focus(const Hobject MultiFocusImage, Hobject* Depth, Hobject* Confidence, const char* Filter, const char* Selection)

Herror T_depth_from_focus(const Hobject MultiFocusImage, Hobject* Depth, Hobject* Confidence, const Htuple Filter, const Htuple Selection)

void DepthFromFocus(const HObject& MultiFocusImage, HObject* Depth, HObject* Confidence, const HTuple& Filter, const HTuple& Selection)

HImage HImage::DepthFromFocus(HImage* Confidence, const HTuple& Filter, const HTuple& Selection) const

HImage HImage::DepthFromFocus(HImage* Confidence, const HString& Filter, const HString& Selection) const

HImage HImage::DepthFromFocus(HImage* Confidence, const char* Filter, const char* Selection) const

HImage HImage::DepthFromFocus(HImage* Confidence, const wchar_t* Filter, const wchar_t* Selection) const   (Nur Windows)

static void HOperatorSet.DepthFromFocus(HObject multiFocusImage, out HObject depth, out HObject confidence, HTuple filter, HTuple selection)

HImage HImage.DepthFromFocus(out HImage confidence, HTuple filter, HTuple selection)

HImage HImage.DepthFromFocus(out HImage confidence, string filter, string selection)

def depth_from_focus(multi_focus_image: HObject, filter: MaybeSequence[Union[str, int]], selection: MaybeSequence[str]) -> Tuple[HObject, HObject]

Beschreibung

depth_from_focusdepth_from_focusDepthFromFocusDepthFromFocusDepthFromFocusdepth_from_focus bestimmt aus mehreren Bildern einer Fokusserie die Tiefe. Die Bilder der Fokusserie werden dabei als ein mehrkanaliges Bild in MultiFocusImageMultiFocusImageMultiFocusImageMultiFocusImagemultiFocusImagemulti_focus_image übergeben. Die Tiefe für jeden Bildpunkt wird als die Nummer des Kanals in DepthDepthDepthDepthdepthdepth zurückgeben. Der Parameter ConfidenceConfidenceConfidenceConfidenceconfidenceconfidence 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 FilterFilterFilterFilterfilterfilter und SelectionSelectionSelectionSelectionselectionselection festgelegt.

Dem Parameter FilterFilterFilterFilterfilterfilter können die Werte 'highpass'"highpass""highpass""highpass""highpass""highpass" und 'bandpass'"bandpass""bandpass""bandpass""bandpass""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 FilterFilterFilterFilterfilterfilter übergibt (z.B. ['highpass'"highpass""highpass""highpass""highpass""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 SelectionSelectionSelectionSelectionselectionselection bestimmt, wie die optimale Fokusebene ausgewählt wird. Wenn der Wert 'next_maximum'"next_maximum""next_maximum""next_maximum""next_maximum""next_maximum" übergeben wird, wird das nächstliegende Schärfemaximum in der Umgebung jedes Pixels verwendet. Bei 'local'"local""local""local""local""local" werden dagegen die für das Pixel ermittelten Schärfewerte aller Fokusebenen verwendet. Mit 'next_maximum'"next_maximum""next_maximum""next_maximum""next_maximum""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.

Achtung

Besteht die Fokusserie MultiFocusImageMultiFocusImageMultiFocusImageMultiFocusImagemultiFocusImagemulti_focus_image 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 FilterFilterFilterFilterfilterfilter 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 SelectionSelectionSelectionSelectionselectionselection auf 'local'"local""local""local""local""local" gesetzt und als FilterFilterFilterFilterfilterfilter 'highpass'"highpass""highpass""highpass""highpass""highpass" oder 'bandpass'"bandpass""bandpass""bandpass""bandpass""bandpass" gewählt, kann depth_from_focusdepth_from_focusDepthFromFocusDepthFromFocusDepthFromFocusdepth_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_imagemean_imageMeanImageMeanImageMeanImagemean_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.

Ausführungsinformationen

Parameter

MultiFocusImageMultiFocusImageMultiFocusImageMultiFocusImagemultiFocusImagemulti_focus_image (input_object)  multichannel-image(-array) objectHImageHObjectHImageHobject (byte)

Mehrkanaliges Graubild bestehend aus meheren Fokusebenen.

DepthDepthDepthDepthdepthdepth (output_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject * (byte)

Tiefenbild.

ConfidenceConfidenceConfidenceConfidenceconfidenceconfidence (output_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject * (byte)

Sicherheit der Tiefenschätzung.

FilterFilterFilterFilterfilterfilter (input_control)  string(-array) HTupleMaybeSequence[Union[str, int]]HTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

Filter, um scharfe Pixel zu finden.

Defaultwert: 'highpass' "highpass" "highpass" "highpass" "highpass" "highpass"

Wertevorschläge: 'highpass'"highpass""highpass""highpass""highpass""highpass", 'bandpass'"bandpass""bandpass""bandpass""bandpass""bandpass", 3, 5, 7, 9

SelectionSelectionSelectionSelectionselectionselection (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Methode scharfe Pixel zu finden.

Defaultwert: 'next_maximum' "next_maximum" "next_maximum" "next_maximum" "next_maximum" "next_maximum"

Werteliste: 'local'"local""local""local""local""local", 'next_maximum'"next_maximum""next_maximum""next_maximum""next_maximum""next_maximum"

Werteliste (für Compute Devices): 'local'"local""local""local""local""local"

Beispiel (C++)

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);

Vorgänger

compose2compose2Compose2Compose2Compose2compose2, compose3compose3Compose3Compose3Compose3compose3, compose4compose4Compose4Compose4Compose4compose4, add_channelsadd_channelsAddChannelsAddChannelsAddChannelsadd_channels, read_imageread_imageReadImageReadImageReadImageread_image, read_sequenceread_sequenceReadSequenceReadSequenceReadSequenceread_sequence

Nachfolger

select_grayvalues_from_channelsselect_grayvalues_from_channelsSelectGrayvaluesFromChannelsSelectGrayvaluesFromChannelsSelectGrayvaluesFromChannelsselect_grayvalues_from_channels, mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, thresholdthresholdThresholdThresholdThresholdthreshold

Siehe auch

count_channelscount_channelsCountChannelsCountChannelsCountChannelscount_channels

Modul

3D Metrology