Tìm hiểu bài toán khôi phục ảnh, mô hình quan sát ảnh kỹ thuật lọc wiener và khảo sát ứng dụng
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
BÀI TẬP LỚN
XỬ LÝ ẢNH
Đề tài: Tìm hiểu bài toán khôi phục ảnh, mô hình quan sát ảnh
kỹ thuật lọc Wiener và khảo sát ứng dụng
Giảng viên hướng dẫn: Nguyễn Thị Hoàng Lan
Sinh viên thực hiện: Nguyễn Văn Thiện
Lớp: KSTN-CNTT-K56
MSSV: 20112282
Trang 2MỤC LỤC
1 Bài toán khôi phục ảnh 3
2 Mô hình quan sát ảnh 4
2.1 Mô hình ảnh bị xuống cấp bởi nhiễu cộng ngẫu nhiên 4
2.1.1 Bộ lọc Wiener 4
2.2 Mô hình ảnh bị xuống cấp vì nhòe 8
2.3 Mô hình ảnh bị xuống cấp bởi cả nhòe và nhiễu cộng 9
2.4 Mô hình ảnh nhiễu phụ thuộc tín hiệu 10
3 Khảo sát ứng dụng của bộ lọc Wiener 11
4 Tài liệu tham khảo 15
Danh mục các hình vẽ Hình 1 Mô hình nhiễu cộng 4
Hình 2 Sơ đồ khối thực hiện bộ lọc 5
Hình 3 Mô phỏng bộ lọc Wiener 6
Hình 4 Ảnh bị nhoè 8
Hình 5 Ảnh bị nhòe nhưng không biết về hàm gây nhòe 9
Hình 6 Mô hình bộ lọc trường hợp nhiễu cộng nhòe 10
Hình 7 Kết quả khôi phục ảnh bị nhiễu 12
Hình 8 Kết quả khôi phục ảnh bị nhòe do chuyển động 13
Hình 9 Kết quả khôi phục ảnh do nhòe và nhiễu 14
Trang 31 Bài toán khôi phục ảnh
Khái niệm: Khôi phục ảnh đề cập tới các kỹ thuật loại bỏ hay tối thiểu hoá các ảnh hưởng
của môi trường bên ngoài hoặc từ các hệ thống thu nhận và lưu trữ ảnh đến ảnh thu nhận được Nói cách khác: nếu coi x m là ảnh số gốc, y m là ảnh số bị giảm chất lượng (đầu vào) và ˆx m là ảnh số đã xử lý (đầu ra) Mục đích của bài toán khôi phục ảnh là làm cho ảnh đã xử lý ˆx m gần giống như ảnh ban đầu x m
Kỹ thuật khôi phục ảnh nhằm có thể ước lượng lại ảnh gốc hay ảnh lý tưởng từ ảnh quan sát được bằng cách đo ngược lại những hiện tượng gây biến dạng Vì vậy để khôi phục được ảnh có kết quả, điều cần thiết là phải biết được các nguyên nhân, các hàm (hay dạng) gây ra biến dạng ảnh Các nguyên nhân biến dạng thường do:
• Do camera, đầu thu ảnh chất lượng kém
• Do môi trường, ánh sáng, hiện trường (scene), khí quyển, nhiễu xung
• Do chất lượng
Việc khôi phục ảnh phụ thuộc vào loại hình xuống cấp hay khôi phục ảnh là nhằm xác định mô hình toán học của quá trình gây ra biến dạng Các loại hình xuống cấp ta xét là nhiễu cộng ngẫu nhiên, nhoè và nhiễu phụ thuộc tín hiệu, như nhiễu nhân Các thuật toán làm giảm nhiễu cộng ngẫu nhiên khác với các thuật toán làm giảm nhoè ảnh
Ước lượng sự xuống cấp: Có hai cách tiếp cận để có thông tin về sự xuống cấp
Một cách tiếp cận là thu thập thông tin từ chính ảnh bị xuống cấp Nếu ta có thể tìm ra các vùng cường độ xấp xỉ đồng đều trong ảnh, chẳng hạn bầu trời, thì có thể ước lượng phổ công suất hoặc hàm mật độ xác suất của nhiễu nền ngẫu nhiên từ sự thăng giáng cường độ trong các vùng có nền đồng đều Một ví dụ khác như, khi ảnh bị nhoè nếu ta tìm được trong ảnh đã xuống cấp một vùng
mà tín hiệu gốc đã biết, thì có thể ước lượng hàm nhoè n m Ký hiệu tín hiệu ảnh gốc ở một vùng đặc biệt của ảnh là x m và ảnh bị xuống cấp trong vùng đó là y m , thì quan hệ gần đúng giữa
y m và x m là:
y m x m n m
Trang 4Theo giả thiết x m và y m đều đã biết, nên có thể được ước lượng được n m .
Một cách tiếp cận khác để hiểu biết về sự xuống cấp là nghiên cứu cơ chế gây ra xuống cấp Ví dụ, xét một ảnh tương tự bị nhoè bởi sự dịch chuyển phẳng của máy ảnh lúc chớp Một ví dụ khác ở đó
sự xuống cấp có thể được ước lượng từ cơ chế của nó là nhiễu hạt của phim, làm nhoè ảnh là do nhiễu
xạ quang và gây ra nhiễu lốm đốm
2 Mô hình quan sát ảnh
Như đã nêu trên, quá trình gây ra biến dạng ảnh gốc phụ thuộc vào hệ thống quan sát và tạo ảnh Do vậy, trước hết ta cần xem ảnh quan sát được biểu diễn thế nào, trên cơ sở đó mô hình hoá nhiễu sinh ra Tiếp theo là dùng biến đổi ngược (lọc ngược) để khử nhiễu và thu lại ảnh gốc Đó là cơ
sở lý thuyết của kỹ thuật khôi phục ảnh
2.1 Mô hình ảnh bị xuống cấp bởi nhiễu cộng ngẫu nhiên
Xét một ảnh x quan sát được có thêm nhiễu cộng n được thể hiện trong công thức sau:
y m x m n m
Hình 1 Mô hình nhiễu cộng
Giả thiết nhiễu cộng ngẫu nhiên độc lập với tín hiệu (không tương quan)
2.1.1 Bộ lọc Wiener
Một trong những phương pháp đầu tiên được triển khai để làm giảm nhiễu cộng ngẫu nhiên trong ảnh là phép lọc Wiener
Trang 5Nguyên lí dựa trên ước lượng được thực hiện bằng cách hạ thấp sai số bình phương trung bình (Mean Square Error) giữa tín hiệu mong muốn và tín hiệu ước lượng Trong xử lý ảnh số thì là sai số giữa ảnh gốc và ảnh đang có
Một bộ lọc Wiener có thể là một trong hai loại IIR hoặc FIR Tuy nhiên bộ lọc Wiener thường được gắn với các công trình xây dựng bộ lọc FIR Điều này là bởi vì các hệ số bộ lọc Wiener thay đổi theo thời gian, và bộ lọc IIR có thể trở nên không ổn định cho các giá trị hệ số nhất định Để ngăn chặn điều không ổn định này, chúng ta thường xây dựng các bộ lọc thích nghi với cấu trúc FIR
Bộ lọc Wiener được biểu diễn bởi một vector trọng số T 0, 1, , 1,
P
Quan hệ lọc giữa đầu vào và đầu ra: 1
0
P
T k
k
Vìw y là một vô hướng nên bằng chuyển vị của nó, tức là: T w y T yw T
Tín hiệu lỗi m được xác định bởi sự sai khác giữa tín hiệu mong muốn x m với tín hiệu thu được ˆx m được tính bằng:
Hình 2 Sơ đồ khối thực hiện bộ lọc
Đối với bộ lọc Wiener, hàm hiệu năng được chọn là sai số bình phương trung bình 2
E m Trong đó ký hiệu là kỳ vọng thống kê
2
2 =
Trang 6Ta định nghĩa vector tương quan chéo giữa đầu vào và tín hiệu mong muốn là r xy E x m y m ,
và ma trận tự tương quan của tín hiệu đầu vào là : R yy E y m y T m , ta được :
2
E m r w r w R w
Để thu được các trọng số ứng với 2
E m có giá trị cực tiểu, ta cần phải giải hệ phương trình
được tạo thành từ đạo hàm bậc nhất của E đối với mỗi trọng số bằng không, tức là:
2
0
T
w
Trong đó toán tử gradian được xác định:
, , ,
T P
yy yx yy yx
R wr w R r khi đó:
2
E m r w R w
Hình 3 Mô phỏng bộ lọc Wiener
(nguồn: Tham khảo [2])
Trong miền tần số, nhiễu cộng được biễu diễn:
Y f X f N f
Trang 7Khi đó sai khác giữa X f thu được với mong muốn ˆ X f bằng:
ˆ
Bình phương sai khác:
2
Tương tự cách làm trên, ta tính đạo hàm theo W thu được:
2
W
0
W
ta thu được đáp ứng xung của bộ lọc Wiener bằng:
XX 1
W f
Trong đó P và XX P là phổ công suất của tín hiệu và nhiễu NN Nếu giả thiết rằng phổ công suất P và XX
NN
P của chúng đã biết, thì có thể nhận được ước lượng tuyến tính tối ưu sai số quân phương tối thiểu
của X f bằng cách cho Y f qua bộ lọc Wiener mà đáp ứng tần số W f
Trong những bài toán thường gặp, ước lượng phổ công suất nhiễu P tương đối dễ làm, nhưng ước NN
lượng phổ công suất ảnh P thì không đơn giản Một phương pháp được sử dụng là lấy trung bình XX
2
X f cho nhiều ảnh x m khác nhau
Chia cả tử cả mẫu của (1) cho P và đặt NN XX
NN
SNR f
là tỉ số tín hiệu trên nhiễu ta thu được:
1
SNR f
W f
SNR f
Khi SNR0 thì W f
Trong nhiễu cộng, đáp ứng xung của bộ lọc Wiener là một số thực và 0W f 1
Bây giờ chúng ta hãy xem xét hai trường hợp:
i) Ảnh không có nhiễu P NN 0 SNR và W f 1
ii) Ảnh toàn nhiễu P XX 0 SNR0 và W f 0
Như vậy bộ lọc Wiener giữ nguyên SNR của các phần hợp thành tần số cao nhưng làm giảm SNR của các phần hợp thành tần số thấp Đặc điểm bộ lọc Wiener là thông thấp
Trang 82.2 Mô hình ảnh bị xuống cấp vì nhòe
Một ảnh bị xuống cấp vì nhoè có thể mô hình hoá như sau:
y m x m h m
Trong mô hình trên ảnh bị xuống cấp y m là kết qủa nhân chập ảnh gốc x m với một đáp ứng xung h m h m được gọi là hàm nhoè
Hình 4 Ảnh bị nhoè
(Nguồn: http://www.svi.nl/BlindDeconvolution)
Sự xuống cấp này có thể được mô hình hoá bằng nhân chập với nhoè do các nguyên nhân như thấu kính lệch tiêu cự, máy bị rung và nhiễu loạn của khí quyển Bài toán làm giảm nhoè có thể chia thành
hai loại Loại thứ nhất là giải tích chập (deconvolution), trong đó khi hàm nhoè h đã biết, một cách
tiếp cận để khử nhoè là bộ lọc ngược Từ:
* Y f
N f
Loại thứ hai là giải tích chập mù (blind deconvolution), trong đó nhòe h là không biết và phải ước
lượng từ những thông tin sẵn có trước khi đưa tới bộ lọc ngược
Trang 9Hình 5 Ảnh bị nhòe nhưng không biết về hàm gây nhòe
(Nguồn: http://www.svi.nl/BlindDeconvolution)
Vì ta muốn chia chậpy m khi không có hiểu biết chi tiết về h m , nên phép xử lý này được gọi là bài toán chia chập mù
Trong phạm vi đề tài bài tập lớn này không đi sâu vào giải quyết vấn đề này
2.3 Mô hình ảnh bị xuống cấp bởi cả nhòe và nhiễu cộng
Thực tế thì sự xuống cấp của ảnh thường là tổ hợp của nhòe và nhiễu
Thông thường ta chỉ xét trường hợp nhiễu nhòe như là một bộ lọc tuyến tính với đáp ứng xung h m
và nhiễu là nhiễu cộng n m Tín hiệu đầu ra được mô hình dưới dạng:
0
*
P k
Một cách tiếp cận hợp lý để khôi phục ảnh x m là áp dụng một hệ làm giảm nhiễu để từ y m ước lượng u m x m *h m sau đó áp dụng một hệ khử nhoè để từ u m ước lượng ra x m
Cách tiếp cận lần lượt khử các loại xuống cấp từng cái một, cho phép chúng ta khai triển những thuật toán khôi phục riêng cho mỗi loại, sau đó cứ kết hợp chúng lại một cách đơn giản nếu ảnh bị xuống cấp vì nhiều loại nguyên nhân khác nhau
Trong miền tần số, mô hình nhiễu có dạng:
Trang 10Hình 6 Mô hình bộ lọc trường hợp nhiễu cộng nhòe
(nguồn: Tham khảo [1])
Lỗi: f X f X fˆ , giả thiết x m và n m là những mẫu độc lập tuyến tính Ngoài ra, giả thiết h m đã biết Vậy thì bộ ước lượng tuyến tính tối ưu (optimal linear estimator) có thể tối thiểu hoá 2
ˆ
là một hệ LSI, tương tự như biến đổi ở trên (mục 2.1.1) ta sẽ thu được đáp
ứng xung của bộ lọc Wiener trên miền tần số:
*
2
XX
W f
Trong đó giả thiết nhiễu và tín hiệu không tương quan với nhau Nếu không có nhiễu thì P NN f 0
và bộ lọc Wiener trở thành bộ lọc ngược với 1
2.4 Mô hình ảnh nhiễu phụ thuộc tín hiệu
Một ảnh bị xuống cấp y m bất kỳ có thể biễu diễn bởi mô hình:
y m D x m x m d m Trong đó D[.] là toán tử xuống cấp được áp dụng vào x Nếu d m không là hàm của tín hiệu x m
thì nó được gọi là nhiễu cộng không phụ thuộc tín hiệu Nếu d m là hàm của tín hiệu x m thì
d m được gọi là nhiễu cộng phụ thuộc tín hiệu Những ví dụ về nhiễu phụ thuộc tín hiệu là nhiễu đốm, nhiễu hạt trên phim và nhiễu lượng tử
Một cách tiếp cận để làm giảm nhiễu phụ thuộc tín hiệu là biến đổi y m vào một miền, ở đó nhiễu trở thành nhiễu cộng không phụ thuộc tín hiệu và sau đó làm giảm nhiễu không phụ thuộc tín hiệu Một cách tiếp cận khác là làm giảm nhiễu trực tiếp trong miền tín hiệu Trong phạm vi bài tập lớn này không đi sâu vào giải quyết mà chỉ nêu vấn đề
Trang 113 Khảo sát ứng dụng của bộ lọc Wiener
Việc khảo sát ứng dụng của bộ lọc dựa trên công cụ Matlab 7.11.0 (R2010b), đây là một công
cụ mạnh cho xử lý, hỗ trợ nhiều hàm cho việc thực hiện nhanh chóng và thuận tiện
Dùng 1 ảnh có chất lượng tốt, coi như là ảnh lý
Tạo ra sự xuống cấp lên ảnh như tạo nhiễu hay làm tác động quang học do chuyển động
Khôi phục lại bằng các hàm sử dụng bộ lọc weiner được chương trình Matlab cung cấp sẵn
Các hàm sử dụng:
Hàm đọc ảnh: I = imread(filename) đọc ảnh lưu ma trận điểm ảnh vào ma trận I
Hàm hiển thị ảnh I: imshow(I) hiển thị ảnh được lưu bằng ma trận điểm ảnh I
Hàm tạo đáp ứng xung: h = fspecial(type, parameters) đáp ứng xung này khi nhân chập với ảnh gốc tạo ra các hiệu ứng do type truyền vào như:
ống kính khi bấm máy
Hàm tạo nhiễu: J = imnoise(I,type,parameters) tạo ra các loai nhiễu như ‘gaussian’, 'salt
& pepper'…
Hàm imfilter(A,H,option1,…) hàm này sẽ tùy theo option để xử lý A và H, trong thử nghiệm option = ‘conv’ dùng để tích chập ảnh ban đầu A và H( là hiệu ứng quang học chuyển động)
Hàm giải chập sử dụng thuật toán của bộ lọc Wiener:
o deconvwnr(I,H,SNR) deconvolves ảnh I dùng bộ lọc wiener khi đã biết giá trị của ảnh
hưởng quang học (motion) và tham số về nhiễu (ở đây là tỉ số SNR)
Trang 12o Ngoài ra ta còn 1 hàm Wiener2 là hàm lọc nhiễu nhưng sử dụng như một phương thức lọc trung bình
o wiener2 (I,[m n],noise) với [m n] là kích thước đáp ứng xung
Thử nghiệm lọc nhiễu bằng bộ lọc Wiener
newImageRGB = imread( 'test2.PNG' );
%% Chuyển ảnh sang ảnh xám
grayImage = rgb2gray(newImageRGB);
figure;
imshow(grayImage);
%% Thêm nhiễu vào ảnh
figure;
imshow(afferNoise);
%% Lọc nhiễu ảnh bằng bọ lọc Wiener
afterWiener = wiener2(afferNoise,[6 6]);
figure, imshow(afterWiener);
Kết quả chạy thử nghiệm:
Hình 7 Kết quả khôi phục ảnh bị nhiễu
Trang 13Thử nghiệm bộ lọc trong trường hợp ảnh chuyển động không nhiễu
I = rgb2gray(newImageRGB);
figure;
imshow(I);
%% Tao anh bi mo do chuyen dong
LEN = 21;
THETA = 11;
figure, imshow(blurred)
%% Khoi phuc anh bi mo do chuyen dong
wnr1 = deconvwnr(blurred, PSF, 0);
figure, imshow(wnr1);
Kết quả:
Hình 8 Kết quả khôi phục ảnh bị nhòe do chuyển động
Thử nghiệm bộ lọc bằng cách thêm nhiễu vào ảnh bị mờ do chuyển động
%% Tao anh bi mo do chuyen dong va them nhieu
noise_mean = 0;
noise_var = 0.0001;
figure, imshow(blurred_noisy)
Trang 14title( 'Anh bi mo va co nhieu' )
%% Khoi phuc
estimated_nsr = 0;
wnr2 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
figure, imshow(wnr2)
%% Khoi phuc anh bi mo va co nhieu co su dung ti so NSR
estimated_nsr = noise_var / var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
figure, imshow(wnr3)
Kết quả thử nghiệm
Hình 9 Kết quả khôi phục ảnh do nhòe và nhiễu
Trong trường hợp SRN hay NSR0 thì ta có thể thấy ngay bộ lọc Wiener tương đương với lọc ngược và rất nhạy với nhiễu
Trang 154 Tài liệu tham khảo
[1] Chap 6 Advanced Digital Signal Processing and Noise Reduction, Second Edition Saeed V Vaseghi
[2] Two-dimentional Signal and image processing JAE Slim
[3] http://www.mathworks.com/help/images/examples/deblurring-images-using-a-wiener-filter.html