Zur Druckansicht wechseln Visit the English version of this page

www.jb-electronics.de » Programmieren » freeBASIC » EasyBlur

EasyBlur

EasyBlur (die Anglizisten unter uns wissen ja: blur bedeutet verschwimmen) ist ein kleines nützliches Programm, dass dazu dient, Bilder unscharf werden zu lassen.

wozu sollte jemand heutzutage wollen, dass ein Bild unscharf ist? kann man sich jetzt sicher fragen. Nun, viele Menschen (darunter ich selber) besitzen keine teuren und hochwertigen Bildbearbeitungsprogramme und können daher nicht auf tolle Features wie Kantenglättung zurückgreifen. Und genau das übernimmt dieses Programm.

Man stelle sich vor, man hat folgendes Bild:

Das Bild vorher

Das ist ein einfacher Beispieltext. Der Übergang von schwarz nach weiß ist jedoch sehr krass. Nun kommt EasyBlur ins Spiel.

Man öffnet das Bild (muss im Bitmap-Format sein, also Dateiendung: bmp) mit EasyBlur. Dazu klickt man mit der rechten Maustaste aufs Bild und wählt "Öffnen mit ->" und wählt dann die Datei "EasyBlur.exe" aus. Es erscheint folgendes Bild:

Das Programm

Nun drückt man einfach eine Taste, die den Grad des gewollten Verschwimmens entspricht. Möglich sind Zahlen von 0 bis 9, wobei die Zahl 0 nichts bewirkt und die Zahl 9 den höchsten Grad an Verschwimmen. Der gewählte Grad erscheint dann oben links im Display, z.B. hier:

Das Programm

Hier sieht man die unterschiedlichen Resultate der Grade 0 bis 9:

Die verschiedenen Stufen

Wir erkennen, dass der Grad 1 wohl schon der geeigneteste ist. Hier sieht man den Übergang von 0 nach 1 detailliert:

Der Übergang

EasyBlur speichert die geblurrte Datei im selben Verzeichnis ab, jedoch unter anderem Namen nach dem Schema AlterName_eb_grad.bmp. Dabei ist AlterName der komplette alte Dateiname (jedoch ohne die Endung .bmp), eb steht für EasyBlur und grad ist der gewählte Grad von 0 bis 9.

Beispiel: Aus der Datei test.bmp unter Grad 5 wird: test_eb_5.bmp.

Sollte aus Versehen mal ein zu großes Bild mit EasyBlur auf zu hohem Grad (z.B. 8) bearbeitet werden, kann es sein, dass der Rechner überlastet wird, da EasyBlur nur freeBASIC-eigene Routinen verwendet und daher nicht allzu schnell ist. Das Programm kann daher jederzeit mit Escape abgebrochen werden.

Aber wie funktioniert der Algorithmus nun?

Das ist eigentlich gar nicht so schwer. Es wird jeder Pixel des Ursprungsbildes abgescannt. Jeder Pixel bekommt nun allerdings nicht seine eigene Farbe zurück, sondern den Farbmittelwert der ihn umgebenden Punkte. Wie weit dieser Umgebungsradius ist, wird vom Verschwimmungs-Faktor bestimmt. Das ist auch logisch, denn wenn der Faktor 0 ist, dann wird der Mittelwert der eigenen Farbe gebildet, und der ist die Farbe eines jeden Punktes selber, also verändert sich bei 0 nichts, wie wir ja auch gesehen haben.

Wenn man genau hinsieht, bemerkt man, dass bei Stufe 8 und 9 ein weiterer Effekt auftritt: Die dicken schwarzen Balken (zum Beispiel beim "L") werden in der Mitte heller. Das liegt daran, dass dieser Balken genau 9 Pixel dick ist, und der Faktor 9 also somit zum mittlersten schwarzen Punkt von jeder Seite zu viele weiße Punkte hinzurechnet.

Gerade bei dreieckigen Objekten wird das deutlich; der Effekt beginnt, bis die Dicke 18 Pixel überschreitet, da dann keine störenden Pixel mehr in die Mitte vordringen:

Der Fehler

Dieser Effekt teilt hier nahezu das Dreieck und das ist natürlich überhaupt nicht erwünscht. Bei geringeren Graden (z.B. Grad 5) fällt der Effekt gar nicht so stark auf:

Der Fehler

Es wird schnell klar, dass sich dieses Phänomen bei diesem Bild bei geringeren Grade immer weiter nach rechts verschiebt; der Vollständigkeit halber hier ein Bild der Grade 0 und 1:

Der Fehler

Hier fällt dieser Fehler schon gar nicht mehr auf.

Alternativ kann auch einfach der Filter in der Stufe 1 mehrere Male hintereinander angewendet werden, dann tritt dieser Fehler nicht auf.

Aber garade zur Kantenglättung eignet sich dieser Algorithmus jedoch hervorragend, wie es am obigen Test-/Bildbeispiel ja deutlich geworden ist, und letztlich sollte er ja auch nur diesen Zweck erfüllen.

Für alle Interessierten gibt es das Programm hier zum Download: EasyBlur.zip (56 KB).

Nach oben

show print layout Die deutsche Version der Seite besuchen

www.jb-electronics.de » Programming » freeBASIC » EasyBlur

EasyBlur

My apologies...

There is no English translation of this page available yet. It will take some more time for me to translate the whole website.

If you have a particular interest in this page getting translated as fast as possible, please contact me; I will see what I can do. Please click here for the German version.

To the top