Xử lý tín hiệu số nâng cao
CHƯƠNG VI
Xử lý ảnh trong Matlab
Biến đổi histogram
Phép dãn Histogram
>> I = imread('pout.tif');
>> figure, imhist(I)
Phép dãn là phép thay đổi tuyến tính biểu đồ
Histogram, không làm thay đổi hình dạng của
ảnh
Công thức
Y (m, n)
Lmax Lmin
X (m, n)
s1 so
Lmax s1 Lmin so
s1 so
2
Biến đổi histogram
Trong matlab sử dụng lệnh imtool
3
Kết quả
4
Biến đổi histogram
5
Biến đổi histogram
San phẳng (cân bằng) Histogram
Cân bằng Histogram là phép biến đổi phi tuyến
nhằm thu được sự phân bố đều các giá trị mức
xám
Công thức
bk
bmax bmin
k
Pi bmin
i amin
6
Biến đổi histogram
Trong Matlab
I2 = imadjust(I);
Ví dụ với ảnh trên
7
Phép lọc tuyến tính
Cơ sở tính toán của phép lọc tuyến tính
là dựa trên phép nhân chập
Ảnh thu được sẽ là tổng hợp trọng số hay
là trung bình trọng số các điểm lân cận
với mặt nạ
Điểm chịu tác động của biến đổi là điểm
ở tâm mặt nạ
8
Phép lọc tuyến tính
Trong Matlab, sử dụng hàm fspecial để
tạo mặt nạ lọc
>> H= fspecial('type',parameter)
'average'
averaging filter
'disk'
circular averaging filter
'gaussian'
Gaussian lowpass filter
'motion'
motion filter
'prewitt'
Prewitt horizontal edge-emphasizing
filter
'sobel'
'unsharp'
Sobel horizontal edge-emphasizing filter
unsharp contrast enhancement filter
9
Phép lọc tuyến tính
Tự tạo bộ lọc
>>h=1/10*[1 1 1; 1 2 1; 1 1 1]
Sử dụng hàm imfilter để lọc ảnh
>> I2=imfilter(I1,H)
Trong đó:
I1: ma trận chứa dữ liệu điểm ảnh
H: mặt nạ lọc
I2: Ảnh đã qua phép lọc
10
Phép lọc tuyến tính
Mặt nạ average
H= fspecial('average',[r c])
Bộ lọc trung bình, kích thước mặc định 3x3
Ví dụ:
1
1
1
9
1
1
1
1
1
1
1
11
Phép lọc tuyến tính
Mặt nạ disk
H= fspecial('disk',r)
Bộ lọc tròn chung bình, r có mặc định bằng 5
Mặt nạ lọc có kích thước 2r+1
Ví dụ: H= fspecial('disk',3)
Mặt nạ gaussian
H= fspecial('gaussian',[r c],sig)
Mặc định là 3x3 và sig=0.5
Các hệ số của là các phần tử rời rạc của phân
bố Gauss
12
Phép lọc tuyến tính
Mặt nạ motion
H= fspecial('motion',len,theta)
Giá trị mặc định len=9, theta=0
Được sử dụng để làm nhòe ảnh có hướng
Ví dụ:
I = imread('saturn.tif');
subplot(1,2,1);imshow(I);title('Original');
H = fspecial('motion',50,45);
I2 = imfilter(I,H);
subplot(1,2,2);imshow(I2);title('Motion Blurred');
13
Phép lọc tuyến tính
Mặt nạ prewitt
H=fspecial('prewitt')
1
1
1
0
1
0
1
0
1
Mặt nạ sobel
H=fspecial('sobel')
1
0
1
2
0
2
1
0
1
14
Phép lọc tuyến tính
Mặt nạ unsharp
H= fspecial('unsharp',alpha)
Tăng cường độ nét và tương phản
Kích thước 3x3, tham số alpha mặc định = 0.2
Ví dụ:
I = imread('moon.tif');
h =fspecial('unsharp');
imshow(I)
I2 = imfilter(I,h);
figure,imshow(I2)
15
Phép lọc tuyến tính
16
Lọc tuyến tính
Mặt nạ Lapalacian
fspecial('laplacian', alpha)
Tăng độ sắc nét cho ảnh
17
Phép lọc tuyến tính
Ví dụ
I=imread('cameraman.tif');
H = fspecial('average');
I2 = imfilter(I,H);
imshow(I);figure,imshow(I2);
18
Loại bỏ viền đen
19
Loại bỏ viền đen
Để loại bỏ viền đen
I3 = imfilter(I,H,'replicate');
imshow(I2);figure,imshow(I3);
20
Phép lọc phi tuyến
Mục đích giảm nhiễu xung
Các loại bộ lọc phi tuyến
Bộ lọc hạng bậc
Bộ lọc trung vị
Bộ lọc co giãn
Bộ lọc bậc r
Bộ lọc k láng giềng
21
Lọc phi tuyến
Bộ lọc hạng: là phương pháp lọc trong
đó mức xám tại một điểm được tính dựa
trên sự xếp hạng các điểm ảnh lân cận.
Hàm ordfilt2 cung cấp cho ta bộ lọc dạng
này
g= ordfilt2(f, order, domain)
Ví dụ
g=ordfilt2(f,1,ones(m,n));
g=ordfilt2(f,m*n,ones(m,n));
22
Bộ lọc phi tuyến
Lọc trung vị
g=ordfilt2(f,median(1:m*n),ones(m,n));
Matlab cũng cung cấp hàm medfilt2 để thực
hiện lọc trung vị.
g=medfilt2(f);
Ví dụ
I = imread('eight.tif');
J = imnoise(I,'salt & pepper',0.02);
K = medfilt2(J);
imshow(J), figure, imshow(K)
23
Khôi phục ảnh
Khôi phục ảnh tập trung vào việc loại bỏ
hay giảm thiểu sự biến dạng xảy ra trong
quá trình thu nhận ảnh.
Sự biến dạng ảnh có thể bao gồm :
Nhiễu-là những sai khác trong giá trị của pixel,
Ảnh hưởng quang học : sự mở do việc chuyển
động của camera
Ta có dạng tổng quát của ảnh bị biến dạng:
g(x,y) = f(x,y)*h(x,y) + n(x,y)
24
Khôi phục ảnh
Nhiễu muối tiêu
I2= imnoise(I1,'salt & pepper')
25