MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 213

Nâng cao chất lượng ảnh

192

Trong đó,

f

là ảnh gốc, cửa sổ lọc có kích thước

m

x

n

,

fun

là một hàm phi tuyến đã được

định nghĩa trước và

parameters

là các thông số tuỳ chọn khác (dùng lệnh

help colfilt

hoặc

help nlfilter

để biết thêm về các thông số này).

Cũng như phương pháp lọc tuyến tính, trước khi lọc phi tuyến, ta cần chèn thêm các điểm phụ
ở ngoài biên của ảnh bằng cách sử dụng hàm padarray:

>> fp = padarray(f, [r c], method, direction)

Trong đó

[r c]

là số cột và số hàng thêm vào,

method

có thể là

‘replicate’

,

‘symmetric’

hoặc

‘circular’

với ý nghĩa tương tự như hàm imfilter,

direction

có thể

‘pre’

,

’post’

hoặc

‘both’

cho phép lựa chọn giữa các phương án thêm vào trước phần

tử đầu tiên của mỗi chiều, hoặc sau phần tử cuối của mỗi chiều hoặc cả hai (mặc định).

Ví dụ, nếu

f = [1 2;3 4]

thì lệnh dưới đây:

>> fp = padarray(f, [3 2], 'replicate', 'post')

sẽ tạo ra ma trận fp như sau:

fp =

1 2 2 2

3 4 4 4

3 4 4 4

3 4 4 4

3 4 4 4

Ví dụ 12-10. Sử dụng hàm colfilt:
Sau đây là một ví dụ minh hoạ cách sử dụng hàm colfilt. Đầu tiên ta định nghĩa hàm phi tuyến
gmean, sau đó thêm các điểm phụ bằng cách dùng hàm padarray. Cuối cùng gọi hàm colfilt
với các thông số cần thiết.

%% Định nghĩa hàm phi tuyến

function v = gmean(A)

mn = size(A, 1);

v = prod(A, 1).^(1/mn);

%% Kết thúc định nghĩa

>> f = padarray(f, [m n], 'replicate');

% Chèn thêm các pixel

>> g = colfilt(f, [m n], 'sliding', @gmean);

% Lọc phi tuyến

Ngoài các hàm thực hiện bộ lọc phi tuyến tổng quát nói trên, trong MATLAB có sẵn một hàm
lọc phi tuyến cụ thể, đó là bộ lọc hạng (rank filter hoặc order-statistic filter), thực hiện bởi
hàm ordfilt2. Đồng thời, một trường hợp đặc biệt của bộ lọc này, đó là bộ lọc trung vị
(median filter), cũng có thể thực hiện bằng hàm medfilt2.

>> g = ordfilt2(f,order,domain,padopt)

>> g = medfilt2(f,[m n],padopt)

Hàm ordfilt sẽ sắp thứ tự từ nhỏ đến lớn các điểm nằm trong một miền xác định bởi

domain

(

domain

là một ma trận kích thước m x n (kích thước cửa sổ lọc) gồm các giá trị 0 hoặc 1,

trong đó các điểm có giá trị 0 sẽ không thuộc miền khảo sát), sau đó thay thế pixel của ảnh
gốc bằng giá trị mức xám sắp hạng thứ

order

. Ví dụ, muốn lấy phần tử nhỏ nhất trong lân

cận mxn của một pixel, ta dùng lệnh:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.