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_nMeanNMeanNMeanNmean_n und rank_nrank_nRankNRankNRankNrank_n oder kantenerhaltende Filter wie guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilterguided_filter und bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilterbilateral_filter, 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 rauschfreie 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) Rauschfreies 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_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter(G)
1|2 gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusionisotropic_diffusion
smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image
2 | 9 binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusionisotropic_diffusion
mean_imagemean_imageMeanImageMeanImageMeanImagemean_image(G)
1 | 1 binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image
anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion(E)[2]
805|2568 bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilterbilateral_filter, guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilterguided_filter
guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilterguided_filter(E)[2,3]
13 | 62 bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilterbilateral_filter, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image
bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilterbilateral_filter(E)[3]
16 | 54 guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilterguided_filter, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image
gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter
1 | 4 binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusionisotropic_diffusion
isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusionisotropic_diffusion(E)[2]
11 | 51
sigma_imagesigma_imageSigmaImageSigmaImageSigmaImagesigma_image
10 | 33 anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion, rank_imagerank_imageRankImageRankImageRankImagerank_image
midrange_imagemidrange_imageMidrangeImageMidrangeImageMidrangeImagemidrange_image
3 | 11 sigma_imagesigma_imageSigmaImageSigmaImageSigmaImagesigma_image
median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image(E)
3 | 4 median_rectmedian_rectMedianRectMedianRectMedianRectmedian_rect, rank_imagerank_imageRankImageRankImageRankImagerank_image, rank_rectrank_rectRankRectRankRectRankRectrank_rect
median_rectmedian_rectMedianRectMedianRectMedianRectmedian_rect(K)
2 | 3 median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, rank_rectrank_rectRankRectRankRectRankRectrank_rect, rank_imagerank_imageRankImageRankImageRankImagerank_image
median_separatemedian_separateMedianSeparateMedianSeparateMedianSeparatemedian_separate(K)
7 | 24 median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image
median_weightedmedian_weightedMedianWeightedMedianWeightedMedianWeightedmedian_weighted
14 | 47 median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, trimmed_meantrimmed_meanTrimmedMeanTrimmedMeanTrimmedMeantrimmed_mean, sigma_imagesigma_imageSigmaImageSigmaImageSigmaImagesigma_image
rank_rectrank_rectRankRectRankRectRankRectrank_rect(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_imagerank_image, median_rect, median_image
rank_imagerank_imageRankImageRankImageRankImagerank_image(E)
3 | 15 rank_rectrank_rectRankRectRankRectRankRectrank_rect, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, median_rectmedian_rectMedianRectMedianRectMedianRectmedian_rect
mean_spmean_spMeanSpMeanSpMeanSpmean_sp
4 | 9 mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, median_separatemedian_separateMedianSeparateMedianSeparateMedianSeparatemedian_separate, eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max
eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max
11 | 42
eliminate_speliminate_spEliminateSpEliminateSpEliminateSpeliminate_sp
1 | 10 mean_spmean_spMeanSpMeanSpMeanSpmean_sp, mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max
trimmed_meantrimmed_meanTrimmedMeanTrimmedMeanTrimmedMeantrimmed_mean
7 | 29 sigma_imagesigma_imageSigmaImageSigmaImageSigmaImagesigma_image, median_weightedmedian_weightedMedianWeightedMedianWeightedMedianWeightedmedian_weighted, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image
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 Mittlung ü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 ImageImageImageImageimageimage 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_interlaceFillInterlaceFillInterlaceFillInterlacefill_interlace 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_smoothInfoSmoothInfoSmoothInfoSmoothinfo_smooth, welcher Informationen zum Operator smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image 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_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusion
Anisotrope Glättung eines Bildes.
bilateral_filterBilateralFilterbilateral_filterBilateralFilterbilateral_filter
Bilaterale Filterung eines Bildes.
binomial_filterBinomialFilterbinomial_filterBinomialFilterbinomial_filter
Glättung eines Bildes mit dem Binomialfilter.
eliminate_min_maxEliminateMinMaxeliminate_min_maxEliminateMinMaxeliminate_min_max
Ortsraumglättung zur Entfernung von Rauschspitzen.
eliminate_spEliminateSpeliminate_spEliminateSpeliminate_sp
Ersetzen der Werte außerhalb der Schwellen durch den Mittelwert.
fill_interlaceFillInterlacefill_interlaceFillInterlacefill_interlace
Interpolation von 2 Video-Halbbildern.
gauss_filterGaussFiltergauss_filterGaussFiltergauss_filter
Glättung mit diskreten Gaußfunktionen.
guided_filterGuidedFilterguided_filterGuidedFilterguided_filter
Geführte Filterung eines Bildes.
info_smoothInfoSmoothinfo_smoothInfoSmoothinfo_smooth
Informationen zum Glättungsfilter smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image.
isotropic_diffusionIsotropicDiffusionisotropic_diffusionIsotropicDiffusionisotropic_diffusion
Isotrope Glättung eines Bildes.
mean_imageMeanImagemean_imageMeanImagemean_image
Glättung durch Mittelwertbildung.
mean_nMeanNmean_nMeanNmean_n
Mittlung der Grauwerte zwischen mehreren Kanälen.
mean_spMeanSpmean_spMeanSpmean_sp
Unterdrückung von Salz- und Pfeffer-Rauschen.
median_imageMedianImagemedian_imageMedianImagemedian_image
Medianfilterung mit verschiedenen Masken.
median_rectMedianRectmedian_rectMedianRectmedian_rect
Medianfilterung mit rechteckigen Masken.
median_separateMedianSeparatemedian_separateMedianSeparatemedian_separate
Separierte Medianfilterung mit Rechteckmasken.
median_weightedMedianWeightedmedian_weightedMedianWeightedmedian_weighted
Gewichtete Medianfilterung mit verschiedenen Rangmasken.
midrange_imageMidrangeImagemidrange_imageMidrangeImagemidrange_image
Mittelwert aus Maximum und Minimum innerhalb einer beliebigen Maske.
rank_imageRankImagerank_imageRankImagerank_image
Rangfilterung mit beliebigen Masken.
rank_nRankNrank_nRankNrank_n
Rückgabe der Grauwerte mit angegebenem Rang aus mehreren Kanälen.
rank_rectRankRectrank_rectRankRectrank_rect
Rangfilterung mit rechteckigen Rangmasken.
sigma_imageSigmaImagesigma_imageSigmaImagesigma_image
Nichtlineare Glättung mit dem Sigmafilter.
smooth_imageSmoothImagesmooth_imageSmoothImagesmooth_image
Glättung mit verschiedenen Filtern.
trimmed_meanTrimmedMeantrimmed_meanTrimmedMeantrimmed_mean
Glättung mit einer beliebigen Rangmaske.