「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Laravelでのぼやけた画像の検出

Laravelでのぼやけた画像の検出

2024 年 11 月 4 日に公開
ブラウズ:297

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** ユーザーにインストールすることを検討してください。 「はい」の場合は、以下のコマンドに従って

をインストールします。

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 が必要になる場合があります。さらに、Laravel 内での Python の統合により、より高度な画像処理技術へのさらなる拡張が可能になり、画像品質を管理するための柔軟で堅牢なソリューションが提供されます。

実用化

この機能を Laravel アプリケーションに組み込むと、低品質の画像のアップロードが防止され、ユーザー エクスペリエンスが向上します。これは、オンライン ポートフォリオ、製品カタログ、ユーザー プロフィール写真など、画像の鮮明さが重要なシナリオで特に役立ちます。

カスタマイズと柔軟性

ぼやけのしきい値は、特定のニーズに応じて調整できます。さらに、Laravel 内での Python の統合により、必要に応じてより高度な画像処理技術を組み込むことができる柔軟性が提供されます。

結論

ぼやけた画像を検出するための Laravel と Python の組み合わせは、強力なソリューションです。これにより、アプリケーションの視覚的な品質が保証されるだけでなく、全体的なユーザー エクスペリエンスも向上します。このアプローチにより、開発者はメディア コンテンツの高い基準を維持し、より洗練されたプロフェッショナルなオンライン プレゼンスに貢献できます。


このソリューションを Laravel プロジェクトに実装してみましたか?あなたの経験や得た洞察を以下のコメント欄で共有してください。これからも一緒に Web 開発の基準を高めていきましょう!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/afiqiqmal/blurry-image-detection-in-laravel-4d8d?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3