Image Filtering və Convolution
Convolution Nədir?
Convolution (konvolyusiya) şəklin hər pixelinə kiçik bir matris (kernel/filter) tətbiq edərək yeni şəkil əldə etmə əməliyyatıdır. Bu, image processing-də ən fundamental əməliyyatlardan biridir.
Əsas konsepsiyalar:
- Kernel (Filter) - Kiçik matris (məsələn, 3×3, 5×5)
- Convolution - Kernel ilə şəkil arasında riyazi əməliyyat
- Spatial filtering - Məkan domenində filtrleme
- Linear filtering - Xətti əməliyyatlar
Convolution Əməliyyatı
Riyazi Təsvir
2D diskret convolution:
G(x,y) = (I * K)(x,y) = ΣΣ I(i,j) × K(x-i, y-j)
Burada:
I(x,y)- Orijinal şəkilK(x,y)- Kernel (filter)G(x,y)- Nəticə şəkli*- Convolution operatoru
Vizual Təsvir
Addım-addım Prosess
1. Kernel placement:
- Kernel şəklin üzərinə qoyulur
- Center pixel üzərində mərkəzləşir
2. Element-wise multiplication:
- Kernel dəyərləri ilə pixel dəyərləri vurulur
3. Summation:
- Bütün vurma nəticələri toplanır
4. Result assignment:
- Toplam yeni pixel dəyəri olur
Praktik Misal
3×3 Kernel Convolution
Orijinal şəkil bloğu:
10 20 30 40 50
15 25 35 45 55
20 30 40 50 60
25 35 45 55 65
30 40 50 60 70
Kernel (3×3 averaging filter):
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
Hesablama (center pixel 40 üçün):
Result = (25×1/9 + 35×1/9 + 45×1/9 +
30×1/9 + 40×1/9 + 50×1/9 +
35×1/9 + 45×1/9 + 55×1/9)
= 360/9 = 40
Ümumi Kernel Növləri
1. Smoothing (Blurring) Filters
Box Filter (Average Filter)
Bütün pixel qonşuları üzrə orta dəyər hesablayır.
3×3 Box Filter:
┌─────────────┐
│ 1/9 1/9 1/9│
│ 1/9 1/9 1/9│
│ 1/9 1/9 1/9│
└─────────────┘
Xüsusiyyətlər:
- Noise reduction
- Blur effekti
- Detail loss
- Fast computation
Gaussian Filter
Gaussian paylanmasına əsaslanan yumuşaq blur.
3×3 Gaussian Filter (σ=1.0):
┌───────────────┐
│ 1/16 2/16 1/16│
│ 2/16 4/16 2/16│
│ 1/16 2/16 1/16│
└───────────────┘
5×5 Gaussian Filter (σ=1.4):
┌─────────────────────────┐
│ 1 4 6 4 1 │
│ 4 16 24 16 4 │ × 1/256
│ 6 24 36 24 6 │
│ 4 16 24 16 4 │
│ 1 4 6 4 1 │
└─────────────────────────┘
Xüsusiyyətlər:
- Smooth blur
- Detail qorunması box filter-dən yaxşıdır
- Noise reduction
- Pre-processing üçün geniş istifadə
2. Sharpening Filters
Şəkildə edge və detail-ləri gücləndirir.
Basic Sharpening
3×3 Sharpen Filter:
┌──────────────┐
│ 0 -1 0 │
│ -1 5 -1 │
│ 0 -1 0 │
└──────────────┘
İzah:
- Center pixel gücləndirilir (5)
- Qonşular çıxılır (-1)
- High-frequency detail-lər artırılır
Unsharp Masking
Sharpened = Original + α × (Original - Blurred)
Kernel:
┌─────────────────┐
│ -1 -1 -1 │
│ -1 9 -1 │ × 1/9
│ -1 -1 -1 │
└─────────────────┘
3. Edge Detection Filters
Sobel Operator
Horizontal və vertikal gradient-ləri hesablayır.
Sobel X (horizontal edges):
┌──────────────┐
│ -1 0 1 │
│ -2 0 2 │
│ -1 0 1 │
└──────────────┘
Sobel Y (vertical edges):
┌──────────────┐
│ -1 -2 -1 │
│ 0 0 0 │
│ 1 2 1 │
└──────────────┘
Gradient magnitude:
G = √(Gx² + Gy²)
Gradient direction:
θ = arctan(Gy / Gx)
Prewitt Operator
Sobel-ə bənzər, lakin uniform weights.
Prewitt X: Prewitt Y:
┌──────────────┐ ┌──────────────┐
│ -1 0 1 │ │ -1 -1 -1 │
│ -1 0 1 │ │ 0 0 0 │
│ -1 0 1 │ │ 1 1 1 │
└──────────────┘ └──────────────┘
Laplacian Operator
İkinci dərəcə törəmə, edge detection üçün.
Laplacian 4-neighborhood:
┌──────────────┐
│ 0 1 0 │
│ 1 -4 1 │
│ 0 1 0 │
└──────────────┘
Laplacian 8-neighborhood:
┌──────────────┐
│ 1 1 1 │
│ 1 -8 1 │
│ 1 1 1 │
└──────────────┘
4. Emboss Filter
3D relief effekti yaradır.
Emboss Filter:
┌──────────────┐
│ -2 -1 0 │
│ -1 1 1 │
│ 0 1 2 │
└──────────────┘
Effekt:
- Light source sol yuxarıdan
- Shadow və highlight yaradır
- 3D görünüş
Boundary (Sərhəd) İdarəsi
Convolution zamanı şəkil sərhədlərində problem yaranır - kernel şəkildən kənara çıxır.
Padding Metodları
1. Zero Padding:
Original: With padding:
┌────────┐ ┌──────────────┐
│ a b c │ │ 0 0 0 0 0│
│ d e f │ → │ 0 a b c 0│
│ g h i │ │ 0 d e f 0│
└────────┘ │ 0 g h i 0│
│ 0 0 0 0 0│
└──────────────┘
2. Replicate Padding:
┌──────────────┐
│ a a b c c│
│ a a b c c│
│ d d e f f│
│ g g h i i│
│ g g h i i│
└──────────────┘
3. Mirror Padding:
┌──────────────┐
│ e d e f e│
│ b a b c b│
│ e d e f e│
│ h g h i h│
│ e d e f e│
└──────────────┘
Separable Filters
Bəzi 2D kernel-lər iki 1D kernel-ə ayrıla bilər - bu performans üçün çox effektivdir.
Separability Şərti
K(x,y) = Kx(x) × Ky(y)
Əsas üstünlük:
- 2D convolution: O(M × N × k²) əməliyyat
- Separable: O(M × N × 2k) əməliyyat
Misal: Gaussian Filter
3×3 Gaussian:
┌───────────────┐
│ 1 2 1 │
│ 2 4 2 │ × 1/16
│ 1 2 1 │
└───────────────┘
Ayrılır:
Row kernel: [1 2 1] × 1/4
Column kernel: [1 2 1]ᵀ × 1/4
Result: [1 2 1]ᵀ × [1 2 1] × 1/16
Praktik Tətbiqlər
1. Noise Reduction
2. Feature Enhancement
- Sharpening - Text, details üçün
- Edge detection - Object recognition üçün
- Emboss - Texture analysis üçün
3. Pre-processing
- Image segmentation əvvəl
- Machine learning pipeline-da
- Medical imaging-də
Implementation Nümunəsi
Python/NumPy
import numpy as np
from scipy import signal
# Şəkil (grayscale)
image = np.array([...])
# 3×3 Gaussian kernel
kernel = np.array([
[1, 2, 1],
[2, 4, 2],
[1, 2, 1]
]) / 16.0
# Convolution
result = signal.convolve2d(image, kernel, mode='same', boundary='symm')
OpenCV
import cv2
import numpy as np
# Şəkil oxu
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# Box filter
blurred = cv2.boxFilter(image, -1, (5, 5))
# Gaussian filter
gaussian = cv2.GaussianBlur(image, (5, 5), sigmaX=1.4)
# Sobel edge detection
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)
magnitude = np.sqrt(sobel_x**2 + sobel_y**2)
# Custom kernel
kernel = np.array([[-1, -1, -1],
[-1, 9, -1],
[-1, -1, -1]])
sharpened = cv2.filter2D(image, -1, kernel)
Performance Considerations
Kernel Size
Optimization Texnikaları
-
Separable filters istifadə et:
- 2D convolution → 2× 1D convolution
-
Integral image (box filter üçün):
- O(k²) → O(1)
-
FFT-based convolution (böyük kernel-lər üçün):
- Frequency domain-də convolution = multiplication
-
SIMD/GPU acceleration:
- Parallel processing
- Vectorization
Əsas Nəticələr
- Convolution - Kernel ilə weighted sum əməliyyatıdır
- Kernel - Filter xüsusiyyətlərini müəyyən edir
- Smoothing - Noise reduction, blur əldə etmək üçün
- Sharpening - Detail və edge-ləri gücləndirir
- Edge detection - Gradient-based kernel-lər istifadə edir
- Boundary handling - Padding metodları tələb olunur
- Separable filters - Performans üçün kritik optimizasiya
- Kernel size - Quality və performance arasında trade-off