Laravel 中的模糊图像检测

Susan Sarandon
发布: 2024-10-06 14:10:29
原创
328 人浏览过

Blurry Image Detection in Laravel

記事の出典 https://medium.com/@hafiqiqmal93/blurry-image-detection-in-laravel-4c91168e00f1

ユーザー エクスペリエンスの重要な側面である、ぼやけた画像を保存すると、Web サイトやアプリケーションの品質が著しく損なわれます。この記事では、Python と OpenCV を利用して Laravel を使用してぼやけた画像を検出および管理し、アプリケーションのメディアを鮮明で魅力的な状態に保つ方法について詳しく説明します。

ぼやけた画像への挑戦

ぼやけた画像は、単に視覚的に迷惑なだけではありません。ウェブサイトやアプリの専門性を損なう可能性があります。電子商取引、不動産物件、オンライン ギャラリーなど、画質が最重要視されるプラットフォームでは、鮮明さを確保することが不可欠です。課題は、プログラムでぼやけを検出することにあります。

Laravel の救出

Laravel を Python と組み合わせて、この問題に対する効果的な解決策を作成できます。 OpenCV を利用した Python スクリプトと併せて Laravel のファイル検証を活用することで、開発者はぼやけ検出をファイルのアップロード プロセスにシームレスに統合できます。

ぼやけ検出の概念

ぼやけた画像の検出には、画像の鮮明度の分析が含まれます。これは通常、画像処理で使用される数学ツールであるラプラシアン演算子を使用して行われます。ラプラシアン オペレーターはピクセルの強度が変化する速度を測定し、ラプラシアンの分散が小さいほど画像がぼやけていることを示します。

Laravelでの実装

Laravel では、画像のぼやけをチェックするカスタム検証ルールを作成できます。このルールは、ラプラシアン演算子を使用して画像の鮮明さを決定する Python スクリプトを実行します。プロセスを詳しく見てみましょう:

OpenCV Python のインストール:

PIP (Ubuntu) をインストールします:


sudo apt install python3-pip


登录后复制

PIP を使用して OpenCV をインストールする


pip3 install opencv-python


登录后复制

アプリケーションが **www-data** で実行される場合は、**www-data** ユーザーにインストールすることを検討してください。 「はい」の場合は、以下のコマンドに従ってインストールします


<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>

登录后复制




Python スクリプトの作成



<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>

登录后复制




Laravel ルールの作成:



<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>

登录后复制




仕組み

ぼやけ検出のための Laravel と Python スクリプトの統合はシームレスに機能し、画像品質を確保するための洗練された簡単なアプローチを提供します。プロセスの展開は次のとおりです:

画像のアップロード

ユーザーが画像を Laravel アプリケーションにアップロードすると、カスタム検証ルール (ImageBlurDetectionRule) がトリガーされます。

検証ルールの実行

このルールは、まず拡張子を確認することで、アップロードされたファイルが実際に画像であるかどうかを確認します。ファイルが画像でない場合、プロセスはここで停止します。

Python スクリプトの呼び出し

ファイルが画像の場合、ルールは Python スクリプト Blur_detection.py を呼び出します。画像のパスはコマンドライン引数としてこのスクリプトに渡されます。

Python での画像処理:

  • Python スクリプトは OpenCV を使用して画像分析を処理します。
  • スクリプトは画像を読み取り、グレースケールに変換します。この単純化により、色の複雑さを排除したより単純な分析が可能になります。
  • 次に、ラプラシアン演算子をグレースケール画像に適用します。ラプラシアン オペレーターは、通常は画像内のエッジである、強度が急速に変化する領域を強調表示する数学的ツールです。ぼやけた画像ではエッジがますます少なくなり、その結果、ラプラシアンの分散が低くなります。

ぼけ度測定

スクリプトは、画像の鮮明さの尺度として機能するラプラシアンの分散を計算します。分散が小さいほど、画像がぼやけていることを示します。

結果の評価:

  • スクリプトはラプラシアン分散を数値として出力します。
  • Laravel に戻ると、検証ルールがこの出力をキャプチャし、値が事前定義されたしきい値を下回るかどうかをチェックします。このしきい値は、画像が十分に鮮明であるとみなされるかどうかを決定します。

検証のフィードバック

画像がぼやけすぎる場合 (例: ラプラシアン分散がしきい値を下回る場合)、検証ルールは失敗し、画像がぼやけているためチェックする必要があることを示すメッセージをユーザーが受け取ります。

ユーザーエクスペリエンスの向上

このソリューションは、低品質で不鮮明な画像のアップロードを防止することで、全体的なユーザー エクスペリエンスを向上させます。ユーザーは、アプリケーションの視覚標準を維持する、鮮明で高品質の画像のみをアップロードするように求められます。


这个过程是高度可定制的。开发人员可以根据应用程序的具体需求调整模糊阈值。请注意,阈值基于您的观察。对于高级使用,可能需要 ML 来确定阈值。此外,Laravel 中 Python 的集成允许进一步扩展到更先进的图像处理技术,为管理图像质量提供灵活而强大的解决方案。

实际应用

将此功能合并到 Laravel 应用程序中可以防止上传低质量图像,从而增强用户体验。这在图像清晰度至关重要的场景中特别有用,例如在线作品集、产品目录或用户个人资料图片。

定制化和灵活性

模糊阈值可以根据具体需求进行调整。此外,Laravel 中 Python 的集成提供了灵活性,可以在需要时结合更先进的图像处理技术。

结论

Laravel 和 Python 的结合用于检测模糊图像是一个强大的解决方案。它不仅可以确保应用程序的视觉质量,还可以增强整体用户体验。通过这种方法,开发人员可以保持媒体内容的高标准,从而打造更加精致和专业的在线形象。


您是否尝试过在 Laravel 项目中实现此解决方案?在下面的评论中分享您的经验和获得的任何见解。让我们一起继续提升Web开发水平!

以上是Laravel 中的模糊图像检测的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!