Einführung
Scharfe Kanten sind, ehrlich gesagt, einfach gefährlich. Wenn Sie ein PNG als Eingabe verwenden, können Sie das Bild mit der unten beschriebenen Methode verwischen und die verdammten scharfen Kanten stumpf machen.
Methode
Verwenden Sie die folgenden drei Gleichungen, um den RGB-Wert jedes Pixels zu ermitteln:
Wobei die Summe der jedes der benachbarten quadrierten Pixel ist. Der Wert von ist die Anzahl benachbarter Pixel (z. B. hat ein Eckpixel einen Wert von 3, während ein Pixel um die Bildmitte einen Wert von 8 hat).
Ein benachbartes Pixel ist ein Pixel, das in alle Richtungen (links, rechts, oben, unten und auf allen Diagonalen) 1 Pixel vom ursprünglichen Pixel entfernt ist.
Zum Beispiel im folgenden 3 x 1-Bild:
Der unscharfe RGB-Wert des mittleren Pixels ist:
Dabei werden Dezimalausgaben auf die nächste Einheit gerundet. Sie sollten das Ergebnis nicht einfach verraten.
Daher hat das mittlere Pixel die Farbe (0, 221, 221) oder:
Ergebnis im Bild:
Sie sollten diesen Vorgang für jedes Pixel im Bild wiederholen. (Beachten Sie, dass Sie dies mit den Originalpixeln und nicht mit den geänderten Pixeln tun. Grundsätzlich sollten Sie das Originalbild nicht überschreiben und es vollständig von dem neuen, unscharfen Bild trennen .)
Wenn Sie Werte berechnen, die größer als 255 sind, nehmen Sie an, dass der Wert 255 ist (dh, ein Wert von 374 würde auf 255 gesetzt).
Die resultierende Ausgabe sollte ein separates PNG-Bild sein (Sie können dies beliebig benennen).
Beispiele
Super Mario
Original:
Verschwommen:
Schachbrett
Original:
Verschwommen:
Kartoffelchips
Original
Verschwommen
Nicht mehr so knusprig
Amerikanische Gotik
Original:
Verschwommen:
Um die Unschärfe auf größeren Bildern zu sehen, führen Sie das Programm am besten erneut auf dem unscharfen Bild aus:
Herausforderung
Der kürzeste Code, um ein bestimmtes PNG-Bild zu verwischen, gewinnt.
Sie können Bildverarbeitungsbibliotheken (wie PIL) verwenden, aber Sie dürfen keine integrierten Unschärfefunktionen verwenden (Mathematica, ich sehe Sie an).
Hinweis
Wie @orlp unten sagt:
Für die Aufzeichnung ist dies (meines Wissens) keine Standard-Unschärfemethode. Diese Herausforderung ist keine Bildungsressource.
quelle
n
sollte im Nenner erscheinen.Antworten:
Python,
354313 BytesNicht das beste, aber hey ...
Verwenden von Leerzeichen für Einrückungen der ersten Ebene, Tab für die zweite Ebene, dann Tab + Leerzeichen und Tab + Tab
math.sqrt()
durch()**.5
dank Beta-Zerfallmin
zum Spannen (Einsparung viel!) Und0
fürpass
dank Loovjo+=[]
zum.append()
Speichern von 5 Bytess
für die Schablonequelle
n**0.5
doch kürzer alsimport math;math.sqrt(n)
? Gibt es einen Grund für Letzteres?v if v<256 else 255
kann verkürzt werden aufmin(v,255)
pass
mit0
from PIL import Image as I
.MATLAB, 130 Bytes
Nimmt ein Bild als Eingabe und speichert die Ausgabe als
b.png
.quelle