3. Các loại bộ lọc ảnh.
a. Mean filtering( bộ lọc trung bình)
- Bộ lọc trung bình là thay thế mỗi giá trị điểm ảnh trong một hình ảnh với giá trị trung bình của giá trị các điểm ảnh lân cận, trong đó có điểm ảnh đó. Đây là một bộ lọc tuyến tính đơn giản với tác dụng làm mịn ảnh, khử nhiễu,.. Ví dụ về bộ lọc trung bình với kernel 3x3:
- Bộ lọc trung bình hiệu quả nhất trong việc khử nhiễu Gaussian nhưng đổi lại là sự mất các chi tiết hình ảnh cao tần. Kích thước kernel lớn hơn sẽ có hiệu quả lọc lơn hơn nhưng làm giảm chất lượng hình ảnh nên lọc này không hiệu quả trong việc khử nhiễu ‘salt and pepper’ . Một biến thể phổ biến khác của bộ lọc này là tạo một ngưỡng và chỉ thay thế các giá trị điểm ảnh hiện tại với giá trị trung bình của vùng lân cận nếu độ lớn của giá trị trung bình nằm nằm dưới ngưỡng này.
** CODE MATLAB:
b. Median filtering ( Lọc trung vị)
- Bộ lọc thường được sử dụng trong xử lý ảnh. Lọc Median vượt qua những hạn chế của bộ lọc Mean. Bộ lọc này thay thế điểm ảnh đích bằng giá trị trung vị của các điểm ảnh lân cận và chính điểm ảnh đó. Bộ lọc Median sẽ tìm giá trị trung vị trong tất cả các điểm anh và thay vào điểm ảnh trung tâm. Các bộ lọc trung vị là cấp trên bộ lọc trung bình ở chỗ nó giữ độ nét tần số cao trong khi vẫn loại bỏ nhiễu. Ví dụ:
** Code MATLAB:
c. Rank filtering
- Các bộ lọc trung vị chỉ là một trường hợp đặc biệt của bộ lọc Rank. Bộ lọc Rank là một bộ lọc phi tuyến tính với các bước thực hiện như sau:
(1) Xác định các vùng lân cận của điểm ảnh mục tiêu (N × N).
(2) Sắp xếp chúng theo thứ tự tăng dần (đầu tiên là giá trị thấp nhất, (N × N), giá trị cao nhất).
(3) Chọn bậc của các bộ lọc (từ 1 đến N).
(4) Thiết lập giá trị lọc bằng với giá trị của điểm ảnh đã chọn.
- Tùy vào bậc bộ lọc mà chúng ta đã chọn có giá trị tối đa hay tối thiểu trong vùng lân cận được gọi là các bộ lọc tối đa hay tối thiểu.
** CODE MATLAB:
DOWN TOÀN BỘ CODE VÀ ẢNH
- CODE MATLAB
- hÌNH ẢNH
a. Mean filtering( bộ lọc trung bình)
- Bộ lọc trung bình là thay thế mỗi giá trị điểm ảnh trong một hình ảnh với giá trị trung bình của giá trị các điểm ảnh lân cận, trong đó có điểm ảnh đó. Đây là một bộ lọc tuyến tính đơn giản với tác dụng làm mịn ảnh, khử nhiễu,.. Ví dụ về bộ lọc trung bình với kernel 3x3:
- Bộ lọc trung bình hiệu quả nhất trong việc khử nhiễu Gaussian nhưng đổi lại là sự mất các chi tiết hình ảnh cao tần. Kích thước kernel lớn hơn sẽ có hiệu quả lọc lơn hơn nhưng làm giảm chất lượng hình ảnh nên lọc này không hiệu quả trong việc khử nhiễu ‘salt and pepper’ . Một biến thể phổ biến khác của bộ lọc này là tạo một ngưỡng và chỉ thay thế các giá trị điểm ảnh hiện tại với giá trị trung bình của vùng lân cận nếu độ lớn của giá trị trung bình nằm nằm dưới ngưỡng này.
** CODE 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 = ones(3,3) / 9; % define mean filter
I_m = imfilter(I,k); % apply to original image
Isp_m = imfilter(Isp,k); % apply to salt and pepper image
Ig_m = imfilter(Ig,k); % apply tp gaussian image
subplot(1,3,1), imshow(I_m); % Display result image
subplot(1,3,2), imshow(Isp_m); % Display result image
subplot(1,3,3), imshow(Ig_m); % Display result image
b. Median filtering ( Lọc trung vị)
- Bộ lọc thường được sử dụng trong xử lý ảnh. Lọc Median vượt qua những hạn chế của bộ lọc Mean. Bộ lọc này thay thế điểm ảnh đích bằng giá trị trung vị của các điểm ảnh lân cận và chính điểm ảnh đó. Bộ lọc Median sẽ tìm giá trị trung vị trong tất cả các điểm anh và thay vào điểm ảnh trung tâm. Các bộ lọc trung vị là cấp trên bộ lọc trung bình ở chỗ nó giữ độ nét tần số cao trong khi vẫn loại bỏ nhiễu. Ví dụ:
** Code 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)
I_m = medfilt2(I,[3 3]); % apply to original image
Isp_m = medfilt2(Isp,[3 3]); % apply to salt and pepper image
Ig_m =medfilt2(Ig,[3 3]); % apply tp gaussian image
subplot(1,3,1), imshow(I_m); % Display result image
title('loc anh goc');
subplot(1,3,2), imshow(Isp_m); % Display result image
title('loc salt and pepper');
subplot(1,3,3), imshow(Ig_m); % Display result image
title('loc gaussian');
c. Rank filtering
- Các bộ lọc trung vị chỉ là một trường hợp đặc biệt của bộ lọc Rank. Bộ lọc Rank là một bộ lọc phi tuyến tính với các bước thực hiện như sau:
(1) Xác định các vùng lân cận của điểm ảnh mục tiêu (N × N).
(2) Sắp xếp chúng theo thứ tự tăng dần (đầu tiên là giá trị thấp nhất, (N × N), giá trị cao nhất).
(3) Chọn bậc của các bộ lọc (từ 1 đến N).
(4) Thiết lập giá trị lọc bằng với giá trị của điểm ảnh đã chọn.
- Tùy vào bậc bộ lọc mà chúng ta đã chọn có giá trị tối đa hay tối thiểu trong vùng lân cận được gọi là các bộ lọc tối đa hay tối thiểu.
** CODE 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)
I_m = ordfilt2(I,25,ones(5,5)); % apply to original image
Isp_m = ordfilt2(Isp,25,ones(5,5)); % apply to salt and pepper image
Ig_m =ordfilt2(Ig,25,ones(5,5)); % apply tp gaussian image
subplot(1,3,1), imshow(I_m); % Display result image
title('loc anh goc');
subplot(1,3,2), imshow(Isp_m); % Display result image
title('loc salt and pepper');
subplot(1,3,3), imshow(Ig_m); % Display result image
title('loc gaussian');
DOWN TOÀN BỘ CODE VÀ ẢNH
- CODE MATLAB
- hÌNH ẢNH