„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erkennung verschwommener Bilder in Laravel

Erkennung verschwommener Bilder in Laravel

Veröffentlicht am 04.11.2024
Durchsuche:970

Blurry Image Detection in Laravel

Artikel stammt von https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1

Das Speichern unscharfer Bilder ist ein entscheidender Aspekt der Benutzererfahrung und beeinträchtigt die Qualität einer Website oder Anwendung erheblich. In diesem Artikel wird erläutert, wie Sie mit Laravel mithilfe von Python und OpenCV verschwommene Bilder erkennen und verwalten können, um sicherzustellen, dass die Medien der Anwendung scharf und ansprechend bleiben.

Die Herausforderung verschwommener Bilder

Unscharfe Bilder sind mehr als nur ein optisches Ärgernis; Sie können die Professionalität Ihrer Website oder App untergraben. Im E-Commerce, bei Immobilienangeboten, in Online-Galerien oder auf anderen Plattformen, bei denen die Bildqualität von größter Bedeutung ist, ist die Gewährleistung von Klarheit von entscheidender Bedeutung. Die Herausforderung besteht darin, Unschärfe programmgesteuert zu erkennen.

Laravel zur Rettung

Laravel kann mit Python kombiniert werden, um eine effektive Lösung für dieses Problem zu schaffen. Durch die Nutzung der Dateivalidierung von Laravel zusammen mit einem Python-Skript unter Verwendung von OpenCV können Entwickler die Unschärfeerkennung nahtlos in ihre Datei-Upload-Prozesse integrieren.

Konzept zur Erkennung von Unschärfe

Zur Erkennung verschwommener Bilder gehört die Analyse der Bildschärfe. Dies erfolgt typischerweise mithilfe des Laplace-Operators, einem mathematischen Werkzeug, das in der Bildverarbeitung verwendet wird. Der Laplace-Operator misst die Rate, mit der sich die Pixelintensität ändert, und eine geringere Varianz des Laplace-Operators weist auf ein unschärferes Bild hin.

Implementierung in Laravel

In Laravel können wir eine benutzerdefinierte Validierungsregel erstellen, um die Bildunschärfe zu prüfen. Diese Regel führt ein Python-Skript aus, das den Laplace-Operator verwendet, um die Schärfe des Bildes zu bestimmen. Lassen Sie uns den Prozess aufschlüsseln:

Installation von OpenCV Python:

PIP (Ubuntu) installieren:


sudo apt install python3-pip


OpenCV mit PIP installieren


pip3 install opencv-python


Möglicherweise sollten Sie die Installation unter dem Benutzer **www-data** in Betracht ziehen, wenn Ihre Anwendung unter **www-data** ausgeführt wird. Wenn ja, befolgen Sie die folgenden Befehle, um

zu installieren.

sudo mkdir /var/www/.local
sudo mkdir /var/www/.cache
sudo chown www-data.www-data /var/www/.local
sudo chown www-data.www-data /var/www/.cache
sudo -H -u www-data pip3 install opencv-python




Python-Skript erstellen



import sys
import cv2

def get_image_laplacian_value(image_path):
image = cv2.imread(image_path)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
return cv2.Laplacian(gray_image, cv2.CV_64F).var()

if name == "main":
if len(sys.argv) != 2:
sys.exit(1)
image_path = sys.argv[1]
laplacian_value = get_image_laplacian_value(image_path)
print(laplacian_value)




Laravel-Regel erstellen:



class ImageBlurDetectionRule implements ValidationRule
{
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if ( ! $value instanceof UploadedFile) {
return;
}
// ignore if not image
if ('' !== $value->getPath() && ! in_array($value->guessExtension(), ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'])) {
return;
}
// get real path for the file
$path = $value->getRealPath();
$command = escapeshellcmd(config('image.python_path') . " blur_detection.py '{$path}'");
$result = Process::path(base_path('scripts'))->run($command);
if ( ! $result->successful()) {
return;
}
if (trim($result->output()) $fail(__('Blur image are not accepted. Please make sure your :attribute image is clearly visible.'));
}
}
}




Wie es funktioniert

Die Integration von Laravel mit einem Python-Skript zur Unschärfeerkennung funktioniert nahtlos und bietet einen anspruchsvollen und dennoch unkomplizierten Ansatz zur Sicherstellung der Bildqualität. So läuft der Prozess ab:

Bild-Upload

Wenn ein Benutzer ein Bild in die Laravel-Anwendung hochlädt, wird die benutzerdefinierte Validierungsregel (ImageBlurDetectionRule) ausgelöst.

Ausführung der Validierungsregel

Diese Regel prüft zunächst, ob es sich bei der hochgeladenen Datei tatsächlich um ein Bild handelt, indem sie deren Erweiterung überprüft. Wenn es sich bei der Datei nicht um ein Bild handelt, stoppt der Vorgang hier.

Aufruf eines Python-Skripts

Wenn es sich bei der Datei um ein Bild handelt, ruft die Regel dann ein Python-Skript auf, „blur_detection.py“. Der Pfad des Bildes wird als Befehlszeilenargument an dieses Skript übergeben.

Bildverarbeitung in Python:

  • Das Python-Skript verwendet OpenCV, um die Bildanalyse durchzuführen.
  • Das Skript liest das Bild und wandelt es in Graustufen um. Diese Vereinfachung ermöglicht eine einfachere Analyse ohne die Komplexität der Farbe.
  • Anschließend wird der Laplace-Operator auf das Graustufenbild angewendet. Der Laplace-Operator ist ein mathematisches Werkzeug, das Bereiche mit schnellen Intensitätsänderungen hervorhebt, bei denen es sich typischerweise um Kanten in einem Bild handelt. Unscharfe Bilder haben weniger und weniger definierte Kanten, was zu einer geringeren Varianz des Laplace-Operators führt.

Unschärfemessung

Das Skript berechnet die Varianz des Laplace-Operators, die als Maß für die Bildschärfe dient. Eine geringere Varianz weist auf ein unschärferes Bild hin.

Ergebnisauswertung:

  • Das Skript gibt die Laplace-Varianz als numerischen Wert aus.
  • Zurück in Laravel erfasst die Validierungsregel diese Ausgabe und prüft, ob der Wert unter einen vordefinierten Schwellenwert fällt. Dieser Schwellenwert bestimmt, ob ein Bild als scharf genug angesehen wird.

Validierungs-Feedback

Wenn das Bild zu unscharf ist (z. B. die Laplace-Varianz liegt unter dem Schwellenwert), schlägt die Validierungsregel fehl und der Benutzer erhält eine Meldung, dass das Bild unscharf ist und überprüft werden sollte.

Verbesserung der Benutzererfahrung

Durch das Verhindern des Hochladens von minderwertigen, verschwommenen Bildern verbessert diese Lösung das gesamte Benutzererlebnis. Benutzer werden aufgefordert, nur klare, qualitativ hochwertige Bilder hochzuladen, wodurch der visuelle Standard der Anwendung erhalten bleibt.


Dieser Prozess ist hochgradig anpassbar. Entwickler können den Schwellenwert für Unschärfe entsprechend den spezifischen Anforderungen ihrer Anwendung anpassen. Beachten Sie, dass der Schwellenwert auf Ihrer Beobachtung basiert. Für die Vorabnutzung ist möglicherweise ML erforderlich, um den Schwellenwert zu bestimmen. Darüber hinaus ermöglicht die Integration von Python in Laravel eine weitere Erweiterung um fortschrittlichere Bildverarbeitungstechniken und bietet eine flexible und robuste Lösung für die Verwaltung der Bildqualität.

Praktische Anwendung

Die Integration dieser Funktionalität in Ihre Laravel-Anwendung verbessert das Benutzererlebnis, indem das Hochladen von Bildern mit geringer Qualität verhindert wird. Dies ist besonders nützlich in Szenarien, in denen die Bildklarheit von entscheidender Bedeutung ist, wie z. B. Online-Portfolios, Produktkataloge oder Benutzerprofilbilder.

Anpassung und Flexibilität

Der Schwellenwert für Unschärfe kann je nach Bedarf angepasst werden. Darüber hinaus bietet die Integration von Python in Laravel die Flexibilität, bei Bedarf fortschrittlichere Bildverarbeitungstechniken zu integrieren.

Abschluss

Die Kombination von Laravel und Python zur Erkennung verschwommener Bilder ist eine leistungsstarke Lösung. Es stellt nicht nur die visuelle Qualität Ihrer Anwendung sicher, sondern verbessert auch das gesamte Benutzererlebnis. Mit diesem Ansatz können Entwickler hohe Standards für Medieninhalte aufrechterhalten und so zu einer ausgefeilteren und professionelleren Online-Präsenz beitragen.


Haben Sie versucht, diese Lösung in Ihrem Laravel-Projekt zu implementieren? Teilen Sie Ihre Erfahrungen und Erkenntnisse, die Sie gewonnen haben, in den Kommentaren unten. Lassen Sie uns gemeinsam die Standards der Webentwicklung weiter erhöhen!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/afiqiqmal/blurry-image-detection-in-laravel-4d8d?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3