Berbagi teknologi

C: Ikhtisar singkat tentang fungsi filter2D

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

di OpenCVfilter2D Fungsi ini adalah alat yang sangat ampuh untuk menggabungkan gambar guna menerapkan berbagai filter linier. Fungsi ini memproses setiap piksel dalam gambar dan mengubah karakteristik gambar dengan menggabungkannya dengan kernel konvolusi (atau filter) tertentu.Berikut ini adalah tentangfilter2DPengenalan fungsi secara rinci:

prototipe fungsi

Di OpenCV,filter2DPrototipe fungsinya adalah sebagai berikut:

void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel,  
                  Point anchor = Point(-1,-1), double delta = 0,  
                  int borderType = BORDER_DEFAULT);

Deskripsi Parameter

  • sumber: Memasukkan gambar.
  • dst: Gambar keluaran, dan gambar masukansrcMemiliki ukuran dan jumlah saluran yang sama.
  • kedalaman : Kedalaman gambar keluaran yang diinginkan (tipe data). Jika -1 berarti gambar keluaran memiliki kedalaman yang sama dengan gambar masukan.
  • inti : Kernel konvolusi (atau filter), yang merupakan matriks floating point saluran tunggal. Matriks ini menentukan cara melakukan operasi konvolusi pada gambar masukan.
  • jangkar : Titik jangkar kernel, yang menunjukkan posisi relatif titik filter di kernel. Titik jangkar harus ditempatkan di dalam kernel; nilai default (-1,-1) berarti titik jangkar terletak di tengah kernel.
  • delta: Nilai opsional yang akan digunakan saat menyimpan piksel yang difilterdstsebelumnya ditambahkan ke piksel yang difilter.
  • tipeperbatasan : Metode ekstrapolasi piksel, digunakan untuk memproses piksel di luar batas gambar. Ini menentukan bagaimana piksel batas diproses ketika kernel konvolusi melebihi batas gambar.Pilihan umum meliputiBORDER_CONSTANTBORDER_REPLICATEBORDER_REFLECTTunggu.

prinsip bekerja

filter2D Fungsi tersebut sebenarnya melakukan operasi konvolusi (walaupun secara teknis ia menghitung korelasi daripada konvolusi ketat karena tidak ada pembalikan kernel yang terlibat). Operasi konvolusi melibatkan "menggeser" kernel konvolusi ke atas gambar masukan, mengalikan elemen yang sesuai dari setiap sub-matriks dengan ukuran yang sama dengan kernel konvolusi, dan kemudian menambahkan hasilnya. Proses ini menghasilkan nilai piksel baru yang ditempatkan pada lokasi yang sesuai pada gambar keluaran. Saat kernel konvolusi meluncur ke seluruh gambar masukan, proses ini diulangi hingga gambar keluaran lengkap dihasilkan.

Skenario aplikasi

Dengan mengubah kernel konvolusi,filter2DFungsi dapat mencapai berbagai efek pemrosesan gambar, termasuk namun tidak terbatas pada:

  • Penajaman gambar: Menggunakan kernel konvolusi penajaman tertentu dapat membuat tepi gambar lebih jelas.
  • berarti menyaring: Menggunakan kernel konvolusi rata-rata dapat mengurangi noise gambar, namun dapat membuat gambar menjadi buram.
  • Filter Gauss : Pemfilteran Gaussian adalah teknik penghalusan gambar yang umum digunakan yang dapat mengurangi noise gambar dengan tetap mempertahankan informasi tepi.Meskipunfilter2DFungsinya sendiri tidak secara langsung menyediakan pembuatan kernel Gaussian, tetapi dapat diteruskangetGaussianKernelfungsi menghasilkan kernel Gaussian dan menggunakannyafilter2DLakukan pemfilteran Gaussian.
  • deteksi tepi: Dengan merancang kernel konvolusi tertentu (seperti operator Sobel, operator Laplacian, dll.), tepi pada gambar dapat dideteksi.

Kode sampel

Berikut kegunaannyafilter2DContoh kode untuk pemfilteran rata-rata fungsi (versi Python):

#include