Glättung

Liste der Operatoren ↓

Dieses Kapitel beschreibt Operatoren für Glättungsfilter. Für weitere Informationen über Filter und deren Anwendung verweisen wir auf die Einleitung zum Kapitel Filter.

Allgemeine Informationen über Glättungsfilter

Glättungsfilter sind Filter zur Unterdrückung des Rauschens eines Bildes. Zu diesem Zweck wird angenommen, dass im ungestörten oder richtigen Bild der Grauwert eines jeden Punktes sich nicht komplett von seiner Umgebung abhebt, im Idealfall gar nur wenig variiert. Dann kann es hilfreich sein, den gemessenen Wert durch eine Abschätzung anhand benachbarter Datenpunkte zu ersetzen. Eine solche Abschätzung kann auf verschiedene Arten erhalten werden. HALCON stellt daher verschiedene Glättungsfilter zur Verfügung.

Die verschiedenen Operatoren sind für verschiedene Arten von Rauschen geeignet und unterscheiden sich auch bezüglich ihrer Geschwindigkeit. Informationen zur Komplexität (wie die Skalierung) ist, wenn zur Verfügung stehend, in der spezifischen Operator-Referenz zu finden. Während die meisten Operatoren ein einzelnes Bild behandeln, gibt es auch solche, die ein Bild in Abhängigkeit eines anderen Bildes bearbeiten (z.B. Mehrkanalfilter wie mean_nmean_nMeanNMeanNMeanN und rank_nrank_nRankNRankNRankN oder kantenerhaltende Filter wie guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilter und bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilter, welche ein Führungsbild benutzen können). Es sei erwähnt, dass manche Filter beide Möglichkeiten haben und weitere Information jeweils in der spezifischen Operator-Referenz steht.

Glättungsfilter für ein Einzelbild mit zufälligem Rauschen

Diese Glättungsfilter wenden ihre Glättungsfunktion auf jedem Kanal des Eingabebildes separat an und geben ein geglättetes Bild mit gleicher Anzahl Kanäle zurück. In der folgenden Tabelle listen wir verschiedene, implementierte Glättungsfilter und wenden diese auf drei verschiedene Arten zufälligen Rauschens an. Die gezeigten Bilder geben bloß einen Hinweis auf die Möglichkeiten des Operators für das gegebene Rauschen. Das geglättete Bild ist stark von den verwendeten Parametern und dem Bild abhängig. Zum Vergleich zeigen wir die verschiedenen verrauschten Bilder ungefiltert in der ersten Zeile der Tabelle. Das unverrauschte Bild ist in der folgenden Abbildung zu sehen ((1) das ganze Bild sowie (2) der Bildausschnitt, der für eine deutlichere Visualisierung möglicher Effekte auf Kanten oder Überbleibsel des Salt & Pepper Rauschens verwendet wird).

(1) (2)
(1) Unverrauschtes Bild, (2) gewählter Bildausschnitt zur besseren Visualisierung der Filtereigenschaften
Zusätzlich markiert sind Filter, die speziell in Bezug auf Geschwindigkeit (G), Erhaltung von Kanten (E) oder einen Kompromiss (K) zwischen den beiden entworfen wurden. Die Zahlen in Klammern verweisen auf weitere Informationen am Ende der Tabelle.
Weißes Rauschen Gauß'sches Rauschen Salt & Pepper Rauschen Zeitdauer[1] Alternativen
Verrauschtes Bild
binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter(G)
1|2 gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion
smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage
2 | 9 binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, mean_imagemean_imageMeanImageMeanImageMeanImage, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion
mean_imagemean_imageMeanImageMeanImageMeanImage(G)
1 | 1 binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage
anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusion(E)[2]
805|2568 bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilter, guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilter
guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilter(E)[2,3]
13 | 62 bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilter, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusion, median_imagemedian_imageMedianImageMedianImageMedianImage
bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilter(E)[3]
16 | 54 guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilter, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusion, median_imagemedian_imageMedianImageMedianImageMedianImage
gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter
1 | 4 binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion
isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion(E)[2]
11 | 51
sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage
10 | 33 anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusion, rank_imagerank_imageRankImageRankImageRankImage
midrange_imagemidrange_imageMidrangeImageMidrangeImageMidrangeImage
3 | 11 sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage
median_imagemedian_imageMedianImageMedianImageMedianImage(E)
3 | 4 median_rectmedian_rectMedianRectMedianRectMedianRect, rank_imagerank_imageRankImageRankImageRankImage, rank_rectrank_rectRankRectRankRectRankRect
median_rectmedian_rectMedianRectMedianRectMedianRect(K)
2 | 3 median_imagemedian_imageMedianImageMedianImageMedianImage, rank_rectrank_rectRankRectRankRectRankRect, rank_imagerank_imageRankImageRankImageRankImage
median_separatemedian_separateMedianSeparateMedianSeparateMedianSeparate(K)
7 | 24 median_imagemedian_imageMedianImageMedianImageMedianImage
median_weightedmedian_weightedMedianWeightedMedianWeightedMedianWeighted
14 | 47 median_imagemedian_imageMedianImageMedianImageMedianImage, trimmed_meantrimmed_meanTrimmedMeanTrimmedMeanTrimmedMean, sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage
rank_rectrank_rectRankRectRankRectRankRect(E)
2 | 8 rank_image, median_rect, median_imagerank_image, median_rect, median_imageRankImage, median_rect, median_imageRankImage, median_rect, median_imageRankImage, median_rect, median_image
rank_imagerank_imageRankImageRankImageRankImage(E)
3 | 15 rank_rectrank_rectRankRectRankRectRankRect, median_imagemedian_imageMedianImageMedianImageMedianImage, median_rectmedian_rectMedianRectMedianRectMedianRect
mean_spmean_spMeanSpMeanSpMeanSp
4 | 9 mean_imagemean_imageMeanImageMeanImageMeanImage, median_imagemedian_imageMedianImageMedianImageMedianImage, median_separatemedian_separateMedianSeparateMedianSeparateMedianSeparate, eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax
eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax
11 | 42
eliminate_speliminate_spEliminateSpEliminateSpEliminateSp
1 | 10 mean_spmean_spMeanSpMeanSpMeanSp, mean_imagemean_imageMeanImageMeanImageMeanImage, median_imagemedian_imageMedianImageMedianImageMedianImage, eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax
trimmed_meantrimmed_meanTrimmedMeanTrimmedMeanTrimmedMean
7 | 29 sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage, median_weightedmedian_weightedMedianWeightedMedianWeightedMedianWeighted, median_imagemedian_imageMedianImageMedianImageMedianImage
Anmerkungen zu den Zahlen in den eckigen Klammern in der obigen Tabelle:
  1. Die Zahlen in der Spalte 'Zeitdauer' geben Hinweise zur Laufzeit, welche der Operator für die Bildverarbeitung benötigt. Die Zeitangaben sind in willkürlichen Einheiten. Erhalten wurden sie durch Mittelung über mehrere Glättungen der unterschiedlich verrauschten Bilder. Die Laufzeit des Operators hängt von vielen Faktoren ab, nicht zuletzt von den Parametern oder der Bildgröße. Für jeden Filter steht die erste Zahl für ein Bild der Größe 800x600, die Zweite für ein Bild der Größe 1497x1160. Die gezeigten Bilder sind Ausschnitte des geglätteten kleineren Bildes mit uns vernünftig erscheinenden Parameterwerten (dabei führen die verwendeten Parameter weder notwendigerweise zu den besten Resultaten noch zur schnellsten Laufzeit). Selbst wenn zwei Filter den selben Parameternamen als Eingabegröße verwenden, haben wir nicht notwendigerweise die selben Werte verwendet. Die Zeitangaben dienen also eher zur groben Orientierung.

  2. Dieser Operator kann iterativ verwendet werden.

  3. Dieser Operator verwendet ein Führungsbild (welches auch das Bild ImageImageImageImageimage selbst sein kann).

Glättungsfilter für ein Einzelbild mit systematischem Rauschen

Videobilder, die aus zwei Halbbildern zusammengesetzt sind, können systematische Fehler enthalten. In solchen Fällen kann der Operator fill_interlacefill_interlaceFillInterlaceFillInterlaceFillInterlace helfen.

Operatoren zur Glättung über mehrere Kanäle

Diese Glättungsfilter nehmen als Eingabe ein Bild mehrerer Kanäle und geben ein Bild mit nur einem Kanal (Graubild) zurück. In HALCON sind folgende Filter dieser Gruppe implementiert:

Weitere Operatoren

Mit den Glättungsfiltern verbunden ist der folgende Operator: info_smoothinfo_smoothInfoSmoothInfoSmoothInfoSmooth, welcher Informationen zum Operator smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage zurück gibt.

Glossar

Im Folgenden werden die wichtigsten Begriffe, die im Umfeld von Glättungsfiltern verwendet werden, beschrieben:

Glättung

Glättung bezeichnet das Anwenden einer Filterfunktion auf ein gegebenes Bild, um die wichtigsten Datenmuster zu erfassen und gleichzeitig das Rauschen zu unterdrücken.

Zufälliges Rauschen

Als zufälliges Rauschen verstehen wir stationäre Änderungen der Helligkeits- oder Farbinformation der Pixel um einen zufälligen Wert, wobei ein Mittelwert von 0 über das ganze Bild angenommen wird.

Systematisches Rauschen

Systematisches Rauschen ist berechenbares Rauschen, verursacht z.B. durch den spezifischen Aufbau zur Bildgewinnung.


Liste der Operatoren

anisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion
Anisotrope Glättung eines Bildes.
bilateral_filterBilateralFilterBilateralFilterbilateral_filter
Bilaterale Filterung eines Bildes.
binomial_filterBinomialFilterBinomialFilterbinomial_filter
Glättung eines Bildes mit dem Binomialfilter.
eliminate_min_maxEliminateMinMaxEliminateMinMaxeliminate_min_max
Ortsraumglättung zur Entfernung von Rauschspitzen.
eliminate_spEliminateSpEliminateSpeliminate_sp
Ersetzen der Werte außerhalb der Schwellen durch den Mittelwert.
fill_interlaceFillInterlaceFillInterlacefill_interlace
Interpolation von 2 Video-Halbbildern.
gauss_filterGaussFilterGaussFiltergauss_filter
Glättung mit diskreten Gaußfunktionen.
guided_filterGuidedFilterGuidedFilterguided_filter
Geführte Filterung eines Bildes.
info_smoothInfoSmoothInfoSmoothinfo_smooth
Informationen zum Glättungsfilter smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage.
isotropic_diffusionIsotropicDiffusionIsotropicDiffusionisotropic_diffusion
Isotrope Glättung eines Bildes.
mean_imageMeanImageMeanImagemean_image
Glättung durch Mittelwertbildung.
mean_nMeanNMeanNmean_n
Mittelung der Grauwerte zwischen mehreren Kanälen.
mean_spMeanSpMeanSpmean_sp
Unterdrückung von Salz- und Pfeffer-Rauschen.
median_imageMedianImageMedianImagemedian_image
Medianfilterung mit verschiedenen Masken.
median_rectMedianRectMedianRectmedian_rect
Medianfilterung mit rechteckigen Masken.
median_separateMedianSeparateMedianSeparatemedian_separate
Separierte Medianfilterung mit Rechteckmasken.
median_weightedMedianWeightedMedianWeightedmedian_weighted
Gewichtete Medianfilterung mit verschiedenen Rangmasken.
midrange_imageMidrangeImageMidrangeImagemidrange_image
Mittelwert aus Maximum und Minimum innerhalb einer beliebigen Maske.
rank_imageRankImageRankImagerank_image
Rangfilterung mit beliebigen Masken.
rank_nRankNRankNrank_n
Rückgabe der Grauwerte mit angegebenem Rang aus mehreren Kanälen.
rank_rectRankRectRankRectrank_rect
Rangfilterung mit rechteckigen Rangmasken.
sigma_imageSigmaImageSigmaImagesigma_image
Nichtlineare Glättung mit dem Sigmafilter.
smooth_imageSmoothImageSmoothImagesmooth_image
Glättung mit verschiedenen Filtern.
trimmed_meanTrimmedMeanTrimmedMeantrimmed_mean
Glättung mit einer beliebigen Rangmaske.