Matlab trong xử lý ảnh: Lọc tuyến tính trong xử lý ảnh

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
119
43
31
One piece
vimach.net
- Trong bộ lọc không gian tuyến tính các giá trị mới của điểm ảnh đích được xác định là sự tổ hợp tuyến tính của các giá trị điểm ảnh trong vùng lân cận. Hay nói cách khác, lọc tuyến tính là phương pháp lọc trong đó điểm ảnh của ảnh mới bằng mỗi pixel lân cận sẽ được nhân với một hệ số tương ứng rồi được cộng lại để được đáp ứng tại điểm ảnh trung tâm.
- Sự tổ hợp tuyến tính các điểm ảnh lân cận đó được xác định bởi bộ lọc kernel (thường được gọi là mặt nạ). Cơ chế của bộ lọc này là trượt kernel trên tất cả các vị trí điểm ảnh trong ảnh gốc và tính tổng các tích của điểm ảnh lân cận với hệ số bộ lọc.Kích thước bộ lọc là lẻ. Kích thước nhỏ nhất có ý nghĩa là 3x3. Hình bên dưới cho chúng ta thấy rõ được cách thực hiện của bộ lọc.
upload_2016-6-26_10-35-47.png

- Bộ lọc này có kích thước là 3x3 với các chỉ số là w1...w9, chúng ta sẽ trượt lần lượt bộ lọc này lên trên ảnh gốc. Sau đó, nhân các chỉ số tương ứng với các chỉ số của ảnh gốc và cộng tất cả lại chúng ta sẽ có điểm ảnh mới.Kích thước ảnh mới sẽ nhỏ hơn kích thước ảnh gốc. Ta có công thức tính tổng quát sau:
upload_2016-6-26_10-58-22.png

- Các chỉ số i=0,j=0 tương ứng với các điểm ảnh trung tâm của kernel với kích thước là
upload_2016-6-26_11-0-43.png

- Một công thức khác là sử dụng các chỉ số tuyến tính.
upload_2016-6-26_11-1-53.png

- Có hai khái niệm khi chúng ta thực hiện phương pháp lọc tuyến tính, đó là tương quan(correlation) và tích chập(convolution).Tương quan là quá trình dịch bộ lọc qua từng điểm ảnh như ta đã đề cập. Tích chập cũng sử dụng quá trình tương tự, ngoại trừ bộ lọc w quay 180 trước khi tiến hành dịch bộ lọc.
- Các điểm ảnh ở biên được thực hiện một trong 3 phương pháp sau:
+ Đơn giản nhất là chỉ cần bỏ qua các điểm ảnh này.
+ Thêm các điểm ảnh bên ngoài lặp lại giá trị của điểm ảnh biên.
+ Các mức xám bên ngoài đối xứng gương với các điểm ảnh bên trong qua biên.
- Kết quả là ảnh sau lọc có kích thước nhỏ hơn so với ảnh gốc nhưng toàn bộ điểm ảnh đều được xử lý.
- Trong các ứng dụng, chúng ta cũng có thể áp dụng bộ lọc tuyến tính trong một vùng được chọn thay vì toàn bộ ảnh. Bộ lọc sẽ phức tạp hơn, bộ lọc sẽ thay đổi tùy thuộc vào sự phân bố các giá trị điểm ảnh lân cận, được gọi là bộ lọc adaptive (thích nghi).
Ví dụ về code MATLAB.
Mã:
A=imread('peppers.png'); % Read in image
subplot(1,2,1), imshow(A); % Display image
k = fspecial('motion', 50, 54); % create a 5x5 convolution kernel
B = imfilter(A, k, 'symmetric'); % apply using symmetric mirroring at edges
subplot(1,2,2), imshow(B); % Display result image B
upload_2016-6-26_12-22-59.png

- Hàm fspecial () chức năng để tạo một kernel tương tự hiệu ứng của chuyển động mờ, chỉ ra chiều dài tính bằng pixel ( 50 ) và góc mờ tính theo độ ( 54). Hàm imfilter() là hàm lọc tuyến tính, trong đó A là ảnh cần lọc, k là bộ lọc kernel, symmetric: các mức xám bên ngoài đối xứng gương với các điểm ảnh bên trong qua biên.

Link down toàn bộ code và ảnh:
CODE MATLAB
HÌNH ẢNH