Home >Backend Development >Python Tutorial >Blurry Image Detection in Laravel

Blurry Image Detection in Laravel

Susan Sarandon
Susan SarandonOriginal
2024-10-06 14:10:29504browse

Blurry Image Detection in Laravel

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

Aspek penting dalam pengalaman pengguna, menyimpan imej kabur dengan ketara menjejaskan kualiti tapak web atau aplikasi. Artikel ini membincangkan cara anda boleh mengesan dan mengurus imej kabur menggunakan Laravel dengan bantuan Python dan OpenCV, memastikan media aplikasi kekal tajam dan menarik.

Cabaran Imej Kabur

Imej kabur bukan sekadar gangguan visual; mereka boleh menjejaskan profesionalisme tapak web atau apl anda. Dalam e-dagang, penyenaraian hartanah, galeri dalam talian atau mana-mana platform yang kualiti imej adalah diutamakan, memastikan kejelasan adalah penting. Cabarannya terletak pada mengesan kekaburan secara atur cara.

Laravel untuk Menyelamat

Laravel boleh dipasangkan dengan Python untuk mencipta penyelesaian yang berkesan untuk masalah ini. Dengan memanfaatkan pengesahan fail Laravel bersama skrip Python yang menggunakan OpenCV, pembangun boleh menyepadukan pengesanan kabur dengan lancar ke dalam proses muat naik fail mereka.

Konsep Pengesanan Kekaburan

Pengesanan imej kabur melibatkan analisis ketajaman imej. Ini biasanya dilakukan menggunakan operator Laplacian, alat matematik yang digunakan dalam pemprosesan imej. Pengendali Laplacian mengukur kadar perubahan intensiti piksel dan varians yang lebih rendah bagi Laplacian menunjukkan imej yang lebih kabur.

Melaksanakan dalam Laravel

Dalam Laravel, kami boleh membuat peraturan pengesahan tersuai untuk menyemak kekaburan imej. Peraturan ini melaksanakan skrip Python yang menggunakan operator Laplacian untuk menentukan ketajaman imej. Mari pecahkan prosesnya:

Pemasangan OpenCV Python:

Pasang PIP (Ubuntu) :


sudo apt install python3-pip


Pasang OpenCV menggunakan PIP


pip3 install opencv-python


Anda mungkin ingin mempertimbangkan untuk memasang di bawah **www-data** pengguna jika aplikasi anda berjalan di bawah **www-data**. Jika Ya, ikut arahan di bawah untuk memasang


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




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




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




Cara Ia Berfungsi

Penyepaduan Laravel dengan skrip Python untuk pengesanan kabur berfungsi dengan lancar, menawarkan pendekatan yang canggih namun mudah untuk memastikan kualiti imej. Begini cara proses itu berlaku:

Muat Naik Imej

Apabila pengguna memuat naik imej ke aplikasi Laravel, peraturan pengesahan tersuai (ImageBlurDetectionRule) akan dicetuskan.

Pelaksanaan Peraturan Pengesahan

Peraturan ini terlebih dahulu menyemak sama ada fail yang dimuat naik sememangnya imej dengan mengesahkan sambungannya. Jika fail itu bukan imej, prosesnya berhenti di sini.

Seruan Skrip Python

Jika fail ialah imej, peraturan itu kemudian memanggil skrip Python, blur_detection.py. Laluan imej dihantar ke skrip ini sebagai hujah baris perintah.

Pemprosesan Imej dalam Python:

  • Skrip Python menggunakan OpenCV untuk mengendalikan analisis imej.
  • Skrip membaca imej dan menukarnya kepada skala kelabu. Penyederhanaan ini membolehkan analisis yang lebih mudah tanpa kerumitan warna.
  • Ia kemudian menggunakan operator Laplacian pada imej skala kelabu. Pengendali Laplacian ialah alat matematik yang menyerlahkan kawasan perubahan intensiti pantas, yang biasanya merupakan tepi dalam imej. Imej kabur mempunyai bahagian tepi yang semakin berkurangan, menghasilkan varians Laplacian yang lebih rendah.

Pengukuran Kekaburan

Skrip mengira varians Laplacian, yang berfungsi sebagai ukuran ketajaman imej. Varians yang lebih rendah menunjukkan imej yang lebih kabur.

Penilaian Keputusan:

  • Skrip mengeluarkan varians Laplacian sebagai nilai berangka.
  • Kembali ke Laravel, peraturan pengesahan menangkap output ini dan menyemak sama ada nilai jatuh di bawah ambang yang telah ditetapkan. Ambang ini menentukan sama ada imej dianggap cukup tajam.

Maklum Balas Pengesahan

Jika imej terlalu kabur (cth: varians Laplacian berada di bawah ambang), peraturan pengesahan gagal dan pengguna menerima mesej yang menunjukkan bahawa imej itu kabur dan harus diperiksa.

Peningkatan Pengalaman Pengguna

Dengan menghalang muat naik imej kabur berkualiti rendah, penyelesaian ini meningkatkan keseluruhan pengalaman pengguna. Pengguna digesa untuk hanya memuat naik imej yang jelas dan berkualiti tinggi, yang mengekalkan standard visual aplikasi.


This process is highly customizable. Developers can adjust the threshold for blurriness according to the specific needs of their application. Note that, the threshold is based on your observation. For advance usage, may need ML to determine the threshold. Moreover, the integration of Python within Laravel allows for further expansion into more advanced image processing techniques, offering a flexible and robust solution for managing image quality.

Practical Application

Incorporating this functionality in your Laravel application enhances the user experience by preventing the upload of low-quality images. This is particularly useful in scenarios where image clarity is critical, such as online portfolios, product catalogs, or user profile pictures.

Customization and Flexibility

The threshold for blurriness can be adjusted according to specific needs. Additionally, the integration of Python within Laravel offers flexibility to incorporate more advanced image processing techniques if required.

Conclusion

The combination of Laravel and Python for detecting blurry images is a powerful solution. It not only ensures the visual quality of your application but also enhances the overall user experience. With this approach, developers can maintain high standards for media content, contributing to a more polished and professional online presence.


Have you tried implementing this solution in your Laravel project? Share your experiences and any insights you’ve gained in the comments below. Let’s continue to elevate the standards of web development together!

The above is the detailed content of Blurry Image Detection in Laravel. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn