Bagaimana Anda menggunakan konvolusi dalam gambar dengan python?

Dalam tutorial ini, kita akan melihat cara menerapkan dua filter low-pass yang berbeda untuk memuluskan [menghilangkan noise dari] gambar. Kedua filter tersebut adalah filter2D dan boxFilter. Filter ini adalah filter 2D di luar angkasa

Menerapkan filter 2D ke gambar juga dikenal sebagai "operasi Konvolusi 2D". Filter ini biasanya disebut sebagai filter rata-rata

Kerugian utama dari filter ini adalah filter ini juga memperhalus bagian tepi gambar. Jika Anda tidak ingin menghaluskan tepinya, Anda dapat menerapkan "filter bilateral". Operasi filter bilateral mempertahankan tepinya

Sintaksis

Berikut ini adalah sintaks dari Filter2D dan BoxFilter

cv2.filter2D[img, ddepth, kernel]
cv2.boxFilter[img, ddepth, ksize]

Parameter

  • img - Gambar input tempat operasi filter diterapkan

  • ddepth - Kedalaman gambar keluaran yang diinginkan. Jika "kedalaman = -1", ia mengembalikan gambar keluaran dengan kedalaman yang sama dengan gambar masukan

  • kernel − Kernel konvolusi. Di filter2D, kami melewatkan kernel sebagai larik numpy

  • ksize - Ukuran kernel. Di boxFilter, kami hanya mengirimkan ukuran kernel sebagai tuple

Langkah

Untuk melakukan operasi filter bilateral, Anda dapat mengikuti langkah-langkah yang diberikan di bawah ini −

Impor perpustakaan yang diperlukan. Dalam semua contoh Python berikut, pustaka Python yang diperlukan adalah OpenCV. Pastikan Anda sudah menginstalnya

import cv2
_

Baca gambar input dan ubah menjadi gambar skala abu-abu

img = cv2.imread['vehicle.jpg']
img = cv2.cvtColor[img, cv2.COLOR_BGR2GRAY]

Tentukan kernel untuk menerapkan filter2D

Define kernel in case to apply filter2D.
kernel = np.ones[[5,5],np.float32]/25

Terapkan pemfilteran filter2D atau boxFilter pada gambar masukan. Kami meneruskan ddepth, kernel, atau ksize sebagai argumen ke fungsi filter

Pernahkah Anda mencoba mengaburkan atau mempertajam gambar di Photoshop, atau dengan bantuan aplikasi seluler? . Di sini, kami akan menjelaskan cara menggunakan konvolusi di OpenCV untuk pemfilteran gambar.  

Anda akan menggunakan kernel konvolusi 2D dan pustaka OpenCV Computer Vision untuk menerapkan teknik pengaburan dan penajaman yang berbeda pada gambar. Kami akan menunjukkan kepada Anda bagaimana menerapkan teknik ini, baik dengan Python dan C++

Mari kita mulai dengan melihat kode yang akan digunakan untuk memfilter gambar. Setiap baris kode akan dibahas secara detail agar Anda benar-benar memahaminya

Piton

import cv2
import numpy as np

image = cv2.imread['test.jpg']

# Print error message if image is null
if image is None:
    print['Could not read image']

# Apply identity kernel
kernel1 = np.array[[[0, 0, 0],
                    [0, 1, 0],
                    [0, 0, 0]]]

identity = cv2.filter2D[src=image, ddepth=-1, kernel=kernel1]

cv2.imshow['Original', image]
cv2.imshow['Identity', identity]
    
cv2.waitKey[]
cv2.imwrite['identity.jpg', identity]
cv2.destroyAllWindows[]

# Apply blurring kernel
kernel2 = np.ones[[5, 5], np.float32] / 25
img = cv2.filter2D[src=image, ddepth=-1, kernel=kernel2]

cv2.imshow['Original', image]
cv2.imshow['Kernel Blur', img]
    
cv2.waitKey[]
cv2.imwrite['blur_kernel.jpg', img]
cv2.destroyAllWindows[]
_

Unduh Kode Untuk mengikuti tutorial ini dengan mudah, silakan unduh kode dengan mengklik tombol di bawah ini. Gratis

Unduh Kode

C++

// Import dependencies
#include 
#include 

// Using namespaces to nullify use of c::function[]; syntax and std::function[]; syntax
using namespace std;
using namespace cv;

int main[]
{
    // Read Image
    Mat image = imread["test.jpg"];

    // Print Error message if image is null
    if [image.empty[]] 
        {
            cout 

Bài mới nhất

Chủ Đề