Bộ lọc gauss trong xử lý ảnh

4. Lọc Gaussian
- Bộ lọc Gaussian rất quan trọng đối với cả lý thuyết và thực tiễn. Chúng ta lọc hình ảnh bằng cách sử dụng một kernel dạng đối xứng xuyên tâm của hàm Gauss 2-D liên tục được xác định như sau:

- Xấp xỉ rời rạc để hàm liên tục này sử dụng hai tham số tự do là :
[1] các kích thước mong muốn của các kernel [như là một mặt nạ lọc N × N];
[2] giá trị độ lệch chuẩn của hàm Gaussian.
- Ứng dụng của bộ lọc Gaussian là làm mịn ảnh, nó khác với bộ lọc trung bình ở chổ là: thứ nhất,mức độ làm mịn được điều khiển bởi sự lựa chọn các tiêu chuẩn thông số độ lệch, chứ không phải bởi giá trị tuyệt đối của kích thước hạt nhân,thứ 2, hàm Gaussian có một thuộc tính khá đặc biệt, đó là biến đổi Fourier của nó là một hàm Gaussian, điều đó rất thuận tiện cho việc phân tích miền tần số của bộ lọc.

- Một hàm Gauss với giá trị lớn của s là một ví dụ về bộ lọc thông thấp, trong đó hàm lượng tần số không gian cao[ví dụ: các tính năng cạnh sắc nét] của hình ảnh được loại bỏ. Để hiểu được điều này đòi hỏi chúng ta có nền tảng tốt trong các biến đổi Fourier và phân tích trong miền tần số.
- VÍ DỤ MATLAB

Mã:

I=imread['eight.tif']; % Read in image
Isp = imnoise[I,'salt & pepper']; % add 3% [0.03] salt and pepper noise
Ig = imnoise[I,'gaussian',0.02]; % add Gaussian noise [with 0.02 variance]
k = fspecial['gaussian', [5 5], 2];    % define Gaussian filter
I_g = imfilter[I,k]; % apply to original image
Isp_g = imfilter[Isp,k]; % apply to salt and pepper image
Ig_g = imfilter[Ig,k]; % apply tp gaussian image
subplot[1,3,1], imshow[I_g]; % Display result image
subplot[1,3,2], imshow[Isp_g]; % Display result image
subplot[1,3,3], imshow[Ig_g]; % Display result image


- Chúng ta tạo một kernel bộ lọc Gaussian 5x5, với giá trị độ lệch chuẩn là 2 bằng hàm fspecial[].
5. Một số bộ lọc khác
- Bộ lọc trung bình hài [ Harmonic Mean filter]:

+ Bộ lọc này làm việc tốt với nhiễu Salt, nhưng lại không hiệu quả với nhiễu Pepper.
- Bộ lọc điểm giửa [ Midpoint filter]:

Bộ lọc tính điểm trung bình giữa giá trị Max và giá trị Min trong vùng bao quanh bởi S xy .
Bộ lọc làm việc tốt với những nhiễu có phân phối ngẫu nhiên như nhiễu Gaussian.

Down toàn bộ CODE MATLAB:
CODE MATLAB
HINH ẢNH

 

Bài viết này sẽ giới thiệu cách sử dụng tích chập trong OpenCV và một số bộ lọc cơ bản để thực hiện lọc hình ảnh ví dụ như làm mờ hoặc tăng độ sắc nét cho ảnh gốc.

Bài viết gồm các nội dung chính sau:

Trước khi bắt đầu vào từng phần cụ thể, hãy quan sát đoạn code mẫu dùng để lọc ảnh. Chi tiết chức năng từng đoạn code sẽ được giới thiệu ở các phần tương ứng.

Python

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

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 

Chủ Đề