"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Détection d'images floues dans Laravel

Détection d'images floues dans Laravel

Publié le 2024-11-04
Parcourir:205

Blurry Image Detection in Laravel

Article provenant de https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1

Aspect crucial de l'expérience utilisateur, le stockage d'images floues nuit considérablement à la qualité d'un site Web ou d'une application. Cet article explique comment détecter et gérer les images floues à l'aide de Laravel avec l'aide de Python et OpenCV, garantissant que les médias de l'application restent nets et attrayants.

Le défi des images floues

Les images floues sont plus qu'une simple nuisance visuelle ; ils peuvent nuire au professionnalisme de votre site Web ou de votre application. Dans le commerce électronique, les annonces immobilières, les galeries en ligne ou toute plateforme où la qualité de l’image est primordiale, garantir la clarté est essentiel. Le défi réside dans la détection du flou par programmation.

Laravel à la rescousse

Laravel peut être associé à Python pour créer une solution efficace à ce problème. En tirant parti de la validation de fichiers de Laravel ainsi que d'un script Python utilisant OpenCV, les développeurs peuvent intégrer de manière transparente la détection de flou dans leurs processus de téléchargement de fichiers.

Concept de détection de flou

La détection d’images floues consiste à analyser la netteté de l’image. Cela se fait généralement à l'aide de l'opérateur laplacien, un outil mathématique utilisé dans le traitement d'images. L'opérateur laplacien mesure la vitesse à laquelle l'intensité des pixels change, et une variance plus faible du laplacien indique une image plus floue.

Implémentation dans Laravel

Dans Laravel, nous pouvons créer une règle de validation personnalisée pour vérifier le flou de l'image. Cette règle exécute un script Python qui utilise l'opérateur laplacien pour déterminer la netteté de l'image. Décomposons le processus :

Installation d'OpenCV Python :

Installer PIP (Ubuntu) :


sudo apt install python3-pip


Installer OpenCV à l'aide de PIP


pip3 install opencv-python


Vous souhaiterez peut-être envisager d'installer sous un utilisateur **www-data** si votre application s'exécute sous **www-data**. Si oui, suivez les commandes ci-dessous pour installer


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




Créer un script Python



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)




Créer une règle Laravel :



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.'));
}
}
}




Comment ça marche

L'intégration de Laravel avec un script Python pour la détection du flou fonctionne de manière transparente, offrant une approche sophistiquée mais simple pour garantir la qualité de l'image. Voici comment se déroule le processus :

Téléchargement d'images

Lorsqu'un utilisateur télécharge une image sur l'application Laravel, la règle de validation personnalisée (ImageBlurDetectionRule) est déclenchée.

Exécution des règles de validation

Cette règle vérifie d'abord si le fichier téléchargé est bien une image en vérifiant son extension. Si le fichier n'est pas une image, le processus s'arrête ici.

Invocation de script Python

Si le fichier est une image, la règle appelle alors un script Python, blur_detection.py. Le chemin de l'image est transmis à ce script en tant qu'argument de ligne de commande.

Traitement d'images en Python :

  • Le script Python utilise OpenCV pour gérer l'analyse des images.
  • Le script lit l'image et la convertit en niveaux de gris. Cette simplification permet une analyse plus simple sans la complexité de la couleur.
  • Il applique ensuite l'opérateur laplacien à l'image en niveaux de gris. L'opérateur laplacien est un outil mathématique qui met en évidence les zones de changement rapide d'intensité, qui sont généralement les bords d'une image. Les images floues ont des bords de moins en moins définis, ce qui entraîne une variance plus faible du Laplacien.

Mesure du flou

Le script calcule la variance du Laplacien, qui sert de mesure de la netteté de l'image. Une variance plus faible indique une image plus floue.

Évaluation des résultats :

  • Le script génère la variance laplacienne sous forme de valeur numérique.
  • De retour dans Laravel, la règle de validation capture cette sortie et vérifie si la valeur tombe en dessous d'un seuil prédéfini. Ce seuil détermine si une image est considérée comme suffisamment nette.

Commentaires de validation

Si l'image est trop floue (ex : la variance laplacienne est inférieure au seuil), la règle de validation échoue et l'utilisateur reçoit un message indiquant que l'image est floue et doit être vérifiée.

Amélioration de l'expérience utilisateur

En empêchant le téléchargement d'images floues de mauvaise qualité, cette solution améliore l'expérience utilisateur globale. Les utilisateurs sont invités à télécharger uniquement des images claires et de haute qualité, ce qui préserve le niveau visuel de l'application.


Ce processus est hautement personnalisable. Les développeurs peuvent ajuster le seuil de flou en fonction des besoins spécifiques de leur application. Notez que le seuil est basé sur votre observation. Pour une utilisation avancée, le ML peut être nécessaire pour déterminer le seuil. De plus, l'intégration de Python dans Laravel permet une expansion ultérieure vers des techniques de traitement d'image plus avancées, offrant une solution flexible et robuste pour gérer la qualité de l'image.

Application pratique

L'intégration de cette fonctionnalité dans votre application Laravel améliore l'expérience utilisateur en empêchant le téléchargement d'images de mauvaise qualité. Ceci est particulièrement utile dans les scénarios où la clarté de l'image est essentielle, comme les portefeuilles en ligne, les catalogues de produits ou les photos de profil utilisateur.

Personnalisation et flexibilité

Le seuil de flou peut être ajusté en fonction des besoins spécifiques. De plus, l'intégration de Python dans Laravel offre la flexibilité d'incorporer des techniques de traitement d'image plus avancées si nécessaire.

Conclusion

La combinaison de Laravel et Python pour détecter les images floues est une solution puissante. Cela garantit non seulement la qualité visuelle de votre application, mais améliore également l’expérience utilisateur globale. Grâce à cette approche, les développeurs peuvent maintenir des normes élevées en matière de contenu multimédia, contribuant ainsi à une présence en ligne plus soignée et professionnelle.


Avez-vous essayé d'implémenter cette solution dans votre projet Laravel ? Partagez vos expériences et toutes les idées que vous avez acquises dans les commentaires ci-dessous. Continuons ensemble à élever les normes du développement Web !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/afiqiqmal/blurry-image-detection-in-laravel-4d8d?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3