>  기사  >  백엔드 개발  >  Laravel의 흐린 이미지 감지

Laravel의 흐린 이미지 감지

Susan Sarandon
Susan Sarandon원래의
2024-10-06 14:10:29451검색

Blurry Image Detection in Laravel

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

Das Speichern verschwommener 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 zur Installation


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




Erstellen Sie ein Python-Skript



<p>import sys<br>
import cv2</p>

<p>def get_image_laplacian_value(image_path):<br>
    image = cv2.imread(image_path)<br>
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)<br>
    return cv2.Laplacian(gray_image, cv2.CV_64F).var()</p>

<p>if <strong>name</strong> == "<strong>main</strong>":<br>
    if len(sys.argv) != 2:<br>
        sys.exit(1)<br>
    image_path = sys.argv[1]<br>
    laplacian_value = get_image_laplacian_value(image_path)<br>
    print(laplacian_value)</p>




Erstellen Sie eine Laravel-Regel:



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




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.
  • Dann 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

Indem diese Lösung das Hochladen minderwertiger, verschwommener Bilder verhindert, verbessert sie das allgemeine Benutzererlebnis. Benutzer werden aufgefordert, nur klare, qualitativ hochwertige Bilder hochzuladen, um den visuellen Standard der Anwendung beizubehalten.


이 프로세스는 고도로 맞춤설정 가능합니다. 개발자는 애플리케이션의 특정 요구 사항에 따라 흐림 임계값을 조정할 수 있습니다. 임계값은 관찰을 기반으로 합니다. 사전 사용의 경우 임계값을 결정하기 위해 ML이 필요할 수 있습니다. 또한 Laravel에 Python을 통합하면 고급 이미지 처리 기술로 더욱 확장할 수 있어 이미지 품질 관리를 위한 유연하고 강력한 솔루션을 제공할 수 있습니다.

실제 적용

Laravel 애플리케이션에 이 기능을 통합하면 낮은 품질의 이미지 업로드를 방지하여 사용자 경험이 향상됩니다. 이는 온라인 포트폴리오, 제품 카탈로그 또는 사용자 프로필 사진과 같이 이미지 선명도가 중요한 시나리오에서 특히 유용합니다.

맞춤화 및 유연성

흐림의 임계값은 특정 요구에 따라 조정될 수 있습니다. 또한 Laravel 내 Python 통합은 필요한 경우 고급 이미지 처리 기술을 통합할 수 있는 유연성을 제공합니다.

결론

흐릿한 이미지를 감지하기 위한 Laravel과 Python의 조합은 강력한 솔루션입니다. 이는 애플리케이션의 시각적 품질을 보장할 뿐만 아니라 전반적인 사용자 경험도 향상시킵니다. 이러한 접근 방식을 통해 개발자는 미디어 콘텐츠에 대한 높은 표준을 유지하여 더욱 세련되고 전문적인 온라인 환경을 조성하는 데 기여할 수 있습니다.


Laravel 프로젝트에서 이 솔루션을 구현해 보셨나요? 아래 의견에 귀하의 경험과 얻은 통찰력을 공유하십시오. 계속해서 함께 웹 개발의 수준을 높여갑시다!

위 내용은 Laravel의 흐린 이미지 감지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.