Nguyên tắc hoạt động của bộ lọc trung bình năm 2024
Lọc Trung vị là một kĩ thuật lọc phi tuyến (non-linear), nó khá hiệu quả đối với hai loại nhiễu: nhiễu đốm (speckle noise) và nhiễu muối tiêu (salt-pepper noise). Kĩ thuật này là một bước rất phổ biến trong xử lý ảnh. Ý tưởng chính của thuật toán lọc Trung vị như sau: ta sử dụng một cửa sổ lọc (ma trận 3×3) quét qua lần lượt từng điểm ảnh của ảnh đầu vào input. Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong vùng 3×3 của ảnh gốc “lấp” vào ma trận lọc. Sau đó sắp xếp các điểm ảnh trong cửa sổ này theo thứ tự (tăng dần hoặc giảm dần tùy ý). Cuối cùng, gán điểm ảnh nằm chính giữa (Trung vị) của dãy giá trị điểm ảnh đã được sắp xếp ở trên cho giá trị điểm ảnh đang xét của ảnh đầu ra output. Sẽ dễ hình dung hơn bằng mô tả trong hình dưới đây: Sơ lược một cách ngắn gọn các bước của giải thuật:
Một lưu ý nhỏ trong khi lập trình là với cửa số 2 chiều 3×3 ở trên sẽ khó xử lý nên tất cả sẽ được gán qua mảng 1 chiều gồm 9 phần tử. Mình nhắc lại là ta không chắc kết quả của quá trình của biến đổi ảnh khi mà ta không thử trước. Công việc xử lý ảnh không phải là công việc ngày một ngày hai mà là quan trọng là kinh nghiệm của người lập trình trải qua nhiều lần thử nghiệm các phép lọc, phép biến đổi khác nhau. Nhiều phép biến đổi lạ lẫm ta phải thử đi thử lại để đạt được kết quả mong muốn. Có phép biến đổi hợp lý có phép biến đổi chả ra kết quả gì. Ở đây phép biến đổi DFT cho ta cấu trúc hình học chủ yếu của ảnh. Hai ảnh dưới đây cho ta mường tượng hiệu quả của phép biến đổi DFT như thế nào. Ảnh kết quả của chữ in thẳng. Ảnh kết quả của ảnh có chữ bị nghiêng Sau đó, việc còn lại là ta sẽ dùng các phép lọc, phép biến đổi khác để nhận ra được kết quả mong muốn. Khoa Công nghệ thông tin – VLUTE Xử lý ảnh - TH1335 Tài liệu thực hành 51 BÀI 3: XỬ LÝ LÂN CẬN (LỌC ẢNH TRONG MIỀN KHÔNG GIAN)
1.1 Lọc tuyến tính với imfilter - Hàm imfilter (https://www.mathworks.com/help/images/ref/imfilter.html) của MATLAB IPT cho phép thực hiện lọc ảnh tuyến tínhbằng tương quan (mặc định) hoặc tích chập. - Cú pháp: g \= imfilter(f, h, mode, boundary_options, size_options); Trong đó: + g: ảnh đầu ra + f: ảnh đầu vào + h: bộ lọc tuyến tính + mode có thể là ’conv’ hoặc ’corr’, tương ứng, cho biết việc lọc sẽ được thực hiện bằng cách sử dụng tích chập hoặc tương quan (mặc định);
ảnh. Có bốn khả năng: X: Các biên của mảng đầu vào (hình ảnh) được mở rộng bằng cách đệm với giá trị X. Đây là tùy chọn mặc định (với X = 0). ‘symmetric’: Các biên của mảng đầu vào (hình ảnh) được mở rộng bằng cách ánh xạ hình ảnh qua đường viền của nó. ‘replicate’: Các biên của mảng đầu vào (hình ảnh) được mở rộng bằng cách sao chép các giá trị gần nhất với đường viền hình ảnh. ‘circular’: Các biên của mảng đầu vào (hình ảnh) được mở rộng bằng cách giả định rằng mảng đầu vào là tuần hoàn, nghĩa là coi hình ảnh là một chu kỳ của hàm tuần hoàn 2D.
ra là kết quả được lọc đầy đủ, nghĩa là kích thước của ảnh được mở rộng / đệm) hoặc ‘same’ (hình ảnh đầu ra có cùng kích thước với hình ảnh đầu vào hình ảnh). Tùy chọn thứ hai là tùy chọn mặc định. 1.2 Tạo bộ lọc với hàm fspecial - fspecial (https://www.mathworks.com/help/images/ref/fspecial.html) là một hàm IPT được thiết kế để đơn giản hóa việc tạo những bộ lọc ảnh 2 chiều phổ biến. - Cú pháp: h \= fspecial(type, parameters) |