«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Обнаружение размытых изображений в Laravel

Обнаружение размытых изображений в Laravel

Опубликовано 4 ноября 2024 г.
Просматривать:336

Blurry Image Detection in Laravel

Статья взята с https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1

Важнейший аспект взаимодействия с пользователем: хранение размытых изображений значительно снижает качество веб-сайта или приложения. В этой статье рассказывается, как вы можете обнаруживать размытые изображения и управлять ими с помощью Laravel с помощью Python и OpenCV, гарантируя, что медиафайлы приложения останутся четкими и привлекательными.

Проблема размытых изображений

Размытые изображения — это больше, чем просто визуальный дискомфорт; они могут подорвать профессионализм вашего веб-сайта или приложения. В электронной коммерции, объявлениях о недвижимости, онлайн-галереях или на любой другой платформе, где качество изображения имеет первостепенное значение, обеспечение ясности имеет решающее значение. Задача заключается в программном обнаружении размытости.

Ларавел спешит на помощь

Laravel можно объединить с Python, чтобы создать эффективное решение этой проблемы. Используя проверку файлов Laravel вместе со скриптом Python, использующим OpenCV, разработчики могут легко интегрировать обнаружение размытия в свои процессы загрузки файлов.

Концепция обнаружения размытости

Обнаружение размытых изображений включает анализ резкости изображения. Обычно это делается с помощью оператора Лапласа — математического инструмента, используемого при обработке изображений. Оператор Лапласа измеряет скорость изменения интенсивности пикселей, а более низкая дисперсия лапласиана указывает на более размытое изображение.

Реализация в Laravel

В Laravel мы можем создать собственное правило проверки для проверки размытости изображения. Это правило выполняет сценарий Python, который использует оператор Лапласа для определения резкости изображения. Давайте разберем процесс:

Установка OpenCV Python:

Установить PIP (Ubuntu):


sudo apt install python3-pip


Установите OpenCV с помощью PIP


pip3 install opencv-python


Возможно, вам стоит рассмотреть возможность установки от имени пользователя **www-data**, если ваше приложение работает под именем **www-data**. Если да, следуйте приведенным ниже командам для установки


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



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:



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




Как это работает

Интеграция Laravel со скриптом Python для обнаружения размытия работает без проблем, предлагая сложный, но простой подход к обеспечению качества изображения. Вот как разворачивается этот процесс:

Загрузка изображения

Когда пользователь загружает изображение в приложение Laravel, срабатывает пользовательское правило проверки (ImageBlurDetectionRule).

Выполнение правила проверки

Это правило сначала проверяет, действительно ли загруженный файл является изображением, проверяя его расширение. Если файл не является изображением, процесс останавливается здесь.

Вызов скрипта Python

Если файл представляет собой изображение, правило вызывает скрипт Python Blur_detection.py. Путь к изображению передается этому сценарию в качестве аргумента командной строки.

Обработка изображений в Python:

  • Скрипт Python использует OpenCV для анализа изображений.
  • Скрипт считывает изображение и преобразует его в оттенки серого. Это упрощение позволяет провести более простой анализ без сложностей с цветом.
  • Затем к изображению в оттенках серого применяется оператор Лапласа. Оператор Лапласа — это математический инструмент, который выделяет области быстрого изменения интенсивности, которые обычно представляют собой края изображения. Размытые изображения имеют все меньше и менее четко выраженных краев, что приводит к снижению дисперсии лапласиана.

Измерение размытости

Скрипт вычисляет дисперсию лапласиана, которая служит мерой резкости изображения. Меньшая дисперсия указывает на более размытое изображение.

Оценка результата:

  • Скрипт выводит дисперсию Лапласа в виде числового значения.
  • В Laravel правило проверки фиксирует эти выходные данные и проверяет, не падает ли значение ниже заранее определенного порога. Этот порог определяет, считается ли изображение достаточно резким.

Обратная связь по проверке

Если изображение слишком размытое (например, дисперсия Лапласа ниже порогового значения), правило проверки не выполняется, и пользователь получает сообщение о том, что изображение размыто и его следует проверить.

Улучшение пользовательского опыта

Предотвращая загрузку некачественных и размытых изображений, это решение повышает общее удобство использования. Пользователям предлагается загружать только четкие изображения высокого качества, которые соответствуют визуальным стандартам приложения.


Этот процесс легко настраивается. Разработчики могут настроить порог размытия в соответствии с конкретными потребностями своего приложения. Обратите внимание, что порог основан на ваших наблюдениях. Для предварительного использования может потребоваться ML для определения порога. Более того, интеграция Python в Laravel позволяет использовать более совершенные методы обработки изображений, предлагая гибкое и надежное решение для управления качеством изображений.

Практическое применение

Включение этой функции в ваше приложение Laravel повышает удобство работы пользователя, предотвращая загрузку изображений низкого качества. Это особенно полезно в сценариях, где четкость изображения имеет решающее значение, например, в онлайн-портфолио, каталогах продуктов или изображениях профилей пользователей.

Кастомизация и гибкость

Порог размытости можно настроить в соответствии с конкретными потребностями. Кроме того, интеграция Python с Laravel обеспечивает гибкость для использования более продвинутых методов обработки изображений, если это необходимо.

Заключение

Комбинация Laravel и Python для обнаружения размытых изображений — мощное решение. Это не только обеспечивает визуальное качество вашего приложения, но и улучшает общее впечатление от пользователя. Благодаря такому подходу разработчики могут поддерживать высокие стандарты медиаконтента, способствуя более безупречному и профессиональному присутствию в Интернете.


Вы пробовали реализовать это решение в своем проекте Laravel? Поделитесь своим опытом и любыми знаниями, которые вы получили, в комментариях ниже. Давайте продолжим повышать стандарты веб-разработки вместе!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/afiqiqmal/blurry-image-detection-in-laravel-4d8d?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3