Khôi phục ảnh trong xử lý ảnh số
Trang 1Chơng
10 Khôi phục ảnh
ảnh ghi lại của một điểm gốc của độ sáng trên vật thể quan tâm Biến đổi Fourier của PSF trở thành hàm truyền đạt ánh sáng (Optical-Tranfer-Funtion - OTF)
Trong chơng này ta sẽ quan tâm đến các nguyên nhân làm mất sự hội tụ ảnh Ba dạng của vết mờ cần đợc quan tâm là: (1) ảnh không rõ nét, (2) dạng vết mờ chuyển
động đồng dạng, (3) vết mờ do ảnh hởng chiếu sáng lâu qua khí quyển Tất cả các nguyên nhân này gây ra các giá trị khác nhau của PSF đòi hỏi ta phải giới hạn phạm
vi các vết mờ
10.2 Các PSF cho khác dạng khác nhau của các vết mờ
Nếu chúng ta coi rằng hệ thống ảnh là tuyến tính, thì ta có thể viết
i b( , ) ( , ) ( , ) (10.1)
ở đây ib(x,y) là ảnh mờ, h(x,y) là PSF, i(x,y) là ảnh nhập vào không bị suy giảm Bởi
vì chúng ta đã đợc cho ib(x,y) và muốn phục hồi i(x,y) nên cần phải đánh giá h(x,y)
Nếu h(x,y) đã biết, thì vấn đề có thể giải quyết đợc và quá trình đó đợc gọi là giải chập Bởi vì biết rất ít về hệ thống mờ nên việc này đợc gọi là giải chập mù Nếu
trong một số trờng hợp bằng cách này hay cách khác h đã đợc cho trớc thì giải pháp
đợc gọi là phơng pháp tiên nghiệm Trong phần lớn các trờng hợp còn lại thì h đều
cha biết, giải pháp này thuộc loại phơng pháp hậu nghiệm
PSF cho ba kiểu vết mờ đợc cho dới dạng phơng án giải quyết đợc đề cập đến ở phần dới đây
Trang 2Hình 10.1 (a) Phơng pháp tìm đờng đi tia sáng
(b) Sự tán xạ của điểm nằm trên và ngoài trục chính
10.2.1 Tiêu điểm của thấu kính có dạng tròn
Hình 10.1b minh hoạ một hệ thống quang học đơn giản trong đó một điểm gốc cho một hàm phân tán điểm do sự không chính xác của tiêu cự Hình 10.1a giới thiệu cách xác định đờng đi của tia sáng, làm sáng tỏ phơng pháp xác định ảnh trong hình 10.1b Cách xác định đờng đi của tia sáng từ một điểm nằm ngoài trục theo các
B (a)
ảnh của điểm ngoài trục chính
Trang 3bớc sau: Vẽ một tia bất kỳ đi qua điểm (1) gặp thấu kính tại A Vẽ mặt phẳng tiêu
(thứ hai) của thấu kính Vẽ tia (3) song song với tia 1, đi qua tâm của thấu kính Tất cả các tia nh thế này gọi là tia chính Tia chính gặp mặt phẳng tia 2 tại B Nối A và
B sau đó kéo dài Đây chính là tia khúc xạ Cho một điểm nằm trên quang trục tia
sáng phải đi qua tiêu điểm thứ hai Dùng cách tìm đờng đi của tia sáng qua thấu kính cho ta thấy hàm tán xạ điểm của một điểm nằm trên quang trục rất khác so với hàm tán xạ của một điểm nằm ngoài quang trục Cũng cần chú ý rằng vật thể xa thấu kính sẽ có tán xạ khác với vật thể gần thấu kính
Đạo hàm các PSF có dạng nh một Gauss hai chiều:
sẽ không cần quan tâm đến Vết mờ chuyển động cũng có thể là kết quả của chuyển
động của camera Ta có thể tạo ra vết mờ chuyển động bằng cách trải rộng một đơn
vị mẫu dọc theo hớng chuyển động (xem hình 10.2) PSF có thể tạo ra bằng một hình vuông gạch chéo trong đờng cong (a) của hình 10.2 khi phim ghi lại một loạt các vị trí khác nhau vật thể với các thời gian chiếu sáng khác nhau Thời gian chiếu sáng lớn nhất đợc cho vị trí đầu tiên khi cửa sập camera mở ra lần đầu tiên, thời gian chiếu sáng nhỏ nhất đợc cho vị trí cuối cùng vật thể chiếm giữ trớc khi của sập đợc hạ xuống Điều này giúp chúng ta lựa chọn hình tam giác hoặc là Gauss trong hình 10.2 nh những mô hình thực tế hơn cho vết mờ chuyển động
10.2.3 Vết mờ do ảnh hởng của khí quyển
Bình thờng, hệ số khúc xạ của khí quyển là hằng số trong một vùng rộng lớn Trong một số trờng hợp sự thay đổi của khí quyển có thể tạo ra một dãy các hệ số khúc xạ khác nhau Đây là nguyên nhân gây ra các vết mờ trên ảnh ảnh của vật thể trong vũ trụ qua tầng khí quyển bao quanh trái đất là một ví dụ Nếu những vật thể này phải quan sát qua tầng khí quyển, với thời gian chụp ảnh lâu, độ hoàn hảo của
ảnh sẽ bị giới hạn
Trang 4Hình 10.2 Mô hình ảnh mờ do chuyển động.
Một PSF đã đợc sử dụng và kiểm tra qua thực nghiệm để mô hình hoá quá trình này là:
6 / 5 2 3 2
( 1
),(x y K e K x K y
ở đây Ki là các hằng số Để cho tiện lợi trong phân tích, 5/6 thờng đợc thay thế bởi tính đồng nhất để rút ra mô hình đáp ứng xung đờng cong Gauss có dạng
) 2 2 ( 22 22
),
y x Ke y x
h = − σ + σ (10.4)
ở đây K là hằng số khoảng cách biên độ, σx và σy là các hệ số phân tán vết mờ
10.3 Đánh giá phạm vi vết mờ
Trong các bớc phân tích tiếp theo chúng ta sẽ coi rằng mô hình cho hệ thống ảnh
mờ là tuyến tính bất biến, LSI, hoặc ít nhất có thể đợc xấp xỉ nh một hệ thống Hệ thống quang học mà ta đợc biết là kính mắt có đặc điểm là ảnh của vật nhìn qua kính sẽ có ít hoặc không có sự biến đổi nào Cho các hệ thống quang học khác bạn
sẽ phải xem đây là một sự xấp xỉ và áp dụng một PSF duy nhất lên toàn bộ ảnh, hoặc chia ảnh thành các miền nhỏ hơn và cho tất cả các miền ta nhận đợc một PSF Phép chia nhỏ trên ảnh này cho chúng ta kết quả gần đúng tốt hơn, khi trên tất cả các miền nhỏ này chúng ta có thể coi rằng PSF sẽ xấp xỉ với một hằng số phân tán tại tất cả các điểm Dễ thấy rằng hình 10.1 biểu diễn trờng hợp hệ thống một thấu kính Trong camera ngời ta sử dụng nhiều thấu kính, và chúng đợc lắp ghép để làm
h(x,y) Mẫu đơn vị
Trang 5rõ hơn những cảnh mờ.Xem xét một đờng biên dọc trong một ảnh không bị mờ với
độ lớn δ tại vị trí (x0,y0), đợc định nghĩa nh sau:
x
<
x
x x )
,(
Cho cả ba kiểu vết mờ nh trên, h(x,y) có thể biểu diễn tổng quát bởi mô hình dạng
Gauss nh sau:
) 2 / 2 /
),
Ke y x
ở đây K là hằng số, và σx và σy là các hệ số tán xạ dọc theo các hớng x và y Vì thế cho nên
−
−
y x
σ β
d i
e d e
K y x
])
([
2)
,(
0
2 2 0
2
) (
K y x i
x x
x x y
([
2)
,
(
0
2 2 2
2 0
2
) (
x x y
∂
x
K x
y x
2)
,(Dùng quy tắc Leibnitz cho đạo hàm của tích phân, đợc cho bởi
Trang 6) (
) (
2 2
1 1
) (
) (
2
1 2
1
),()
,()
,()
,(
d x F d x
x F d
x F dx
φ
φ φ
φφ
φφα
∂
α
∂α
δπσ
0 ) / 2 (
1
),(x y K e x x x
Biểu thức (10.10) sẽ biểu diễn một phân bố Gauss dọc theo hớng x nếu
2 1
Điều này có thể xảy ra nếu vùng dới C(x,y0) bằng 1 Để đạt đợc điều kiện này
chúng ta cần chia tung độ bởi khu vực dới đờng cong Nếu F(x) mô tả đờng cong
chia độ, thì chúng ta có thể viết:
2 2
2 ) ( 2
2
1)
−
v u
H x2 / 2 x2 y2 / 2 y2 j(ux vy)
),
Trang 7hay có thể viết
dy e
dx e
K v u H
jvy y jux
x
y x
−
2 2
2
2 2
),
Từ (xem tham khảo 3)
a ac b c
bx
a dx
) 4 ( )
do vậy
2 ) (
2 2
2 2 2 2
22
),(
y
x v u y
K v u H
σ σ
πσπσ
là tần số cao bị suy giảm đến một số giới hạn, phụ thuộc vào ảnh hởng của vết mờ,
và vì vậy mà không bị xoá sạch Sự nhận xét này giúp chúng ta xây dựng hàm truyền đạt phía trên thành:
0.12
),( = −(u2 2x+v2 2y /2 +
y
v u
Chú ý rằng nếu σx = σx = 0.0, thì H(u,v)=1.0, ví dụ, nếu ảnh thu đợc hoàn toàn
nằm trong tiêu điểm, thì hàm suy giảm H(u,v) là lọc thông toàn phần.
10.5 Thuật toán khôi phục ảnh
Dựa trên các phân tích phía trên chúng ta có thể xây dựng một thuật toán dùng để khôi phục lại ảnh nằm ngoài tiêu điểm Thuật toán này bao gồm các bớc sau :
1 Tách biên ảnh (xem trong chơng 5)
2 Quét ảnh bắt đầu từ hàng N/4 và cột N/4, N ì N là kích thớc của ảnh tính theo
số điểm, tới khi một đờng biên đợc tìm thấy tại các điểm có toạ độ (x0,y0) Làm nh
vậy chúng ta tránh đợc các đờng biên tại mép của ảnh, với điều kiện là vật thể chính trong ảnh nằm tại tâm của ảnh
3 Tính σx và σy
4 Tính đáp ứng tần số của hàm bị mờ từ OTF mô tả ở phần trên
0.12
0.1)
,(
ˆ
2 /
=
+
− u x v y y
v u H
σ σσ
Trang 82 2
độ mà bạn có thể dùng với các chong trình khác thiết kế bộ lọc 2-D Ví dụ để thiết kế
bộ lọc IIR bạn cần có IMPULSE.EXE và IIRD.EXE theo tên của file lấy từ chơng trình này Để chạy chơng trình này bạn cần tách các đờng biên dùng một trong các chơng trình hoặc biểu đồ đã mô tả ở trong chơng 5 Chơng trình bắt nguồn từ tên của file chứa ảnh mờ và độ đậm đờng biên ảnh Độ đậm đờng biên ảnh là file chứa ảnh sau khi đã tách ra các đờng biên
Chơng trình 10.1 :DEBLUR.C Tính độ lớn của đáp ứng”
/*ProgramlO.1 "DEBLUR.C".Calculating the magnitude response
of the deblurring function.*/
/* This program calculates the inverse magnitude response of the extracted blurring function.Theprogram requires the file names of the blurred imageand the edge strength image for the blurred image.To obtain the edge strength image you can use Kirsh.exe or Sobel.exe */
Trang 9printf("File does not exist.");
z=(int)(buff[j]-buff[j-1]);
if(abs(z)>(int)30) {
printf("\An edge has been detected at (%d, %d)",j,i);
x0=j; y0=i;
goto one;
} } }
printf("\nNo edges has been located.");
Trang 10printf("\nDo you wish to store horizontal and vertical difference");
printf("\n data for plotting (y or n) ->");
while(((ch1=tolower(getch()))=='y')&&(ch1=='n'));
putch(ch1);
if(ch1== 'y')
{
/* Preparing data for plotting */
printf("\nEnter file name for storing data");
printf("\n taken along a horizontal line >");
scanf ( "%s", file_name1);
printf("Enter file name for storing data ");
printf("\n taken along a vertical line >");
Trang 11printf("\n Does the source of the blur imposes equal extent \n");
printf(" of blurs in both the x and y directions?(y or n) >");
while(((ch1=getche())!='y')&&(ch1!='n'));
if(ch1=='y')
sx2=sy2=sx2+sy2;
printf("\nEnter name of file for storing magnitude- frequency");
printf("\nresponse in a form suitable for plotting >");
Trang 12fprintf(fptr, " \n ");
u+=du;
}
fclose(fptr);
printf("\nEnter file name for storing mag
-freq response in a");
printf ( "\nformat that can be used by IMPULSE
Trang 13Bài tập 10.1
Kiểm tra thủ tục trên đây với ảnh "CAMEL.IMG" (hình 7.7a) đã đợc phóng to, dùng hàm nội suy chốt B bậc ba Kết quả đợc cho trong hình 7.9 đó là ảnh hơi mờ Với yêu cầu nhận dạng đờng biên ảnh mà tại đó phạm vi vết mờ theo cả hai hớng ngang và dọc có thể đánh giá đợc, chơng trình trên đã cho ra một đờng biên ảnh rõ nét trên cả hai hớng ngang và dọc Kết quả này có thể thu đợc khi sử dụng toán tử Kirsh (chơng 5, chơng trình 5.3) So sánh kết quả đó với hình 7.7b, 8.5, và 8.6 trong các chơng trớc
Hình 10.3 chỉ ra hàm giảm mờ, đó là kết quả từ bài tập này Vết mờ đợc xem nh tròn trong trờng hợp này Hình 7.9 là ảnh kết quả của chơng trình trên với σx ≈ 2.9
và σx ≈ 2.6, hoặc σ≈ 3.89 Hình 10.4 đa ra đáp ứng tần số-biên độ của bộ lọc IIR 2 ì
2 đợc thiết kế để xấp xỉ hàm giảm mờ Đầu tiên bộ lọc đợc thiết kế với phơng pháp Shanks và sau đó là phơng pháp lặp của chơng 9 Kết quả áp dụng bộ lọc IIR 2-D với
ảnh đã nói ở trên có sự cải thiện đáng chú ý so với ảnh gốc Tuy nhiên, ph ơng pháp lọc thông thấp mô tả trong chơng 9 cho kết quả gần với phơng pháp FFT hơn, so với cách tiếp cận này Các hệ số thu đợc của bộ lọc IIR trong ví dụ này đợc ghi trong bảng 10.1
Bây giờ chúng ta tăng cờng ảnh sao hoả thu đợc qua kính thiên văn đợc cho trên hình 10.5 Nguyên nhân của vết mờ này là do hệ số khúc xạ thay đổi theo áp xuất khí quyển, và cũng có thể là do mở ống kính trong khoảng thời gian dài áp dụng thủ tục đờng biên trong phần này, chúng ta thu đợc ảnh chỉ ra trên hình 10.6 Mặt dù
ảnh nét hơn, nhng nó không cung cấp cho ta nhiều chi tiết mới Chúng ta cần chỉ ra rằng đây là một ảnh của toàn bộ sao hoả với độ phân giải chỉ có 256 ì 256 điểm
ảnh Đây là một ảnh dới mẫu, và không có thông tin nào về ảnh đợc rút ra ở đây mà lại không rút ra đợc từ ảnh gốc Hình 10.7 chỉ ra một ảnh mờ là kết quả của ảnh của vật nằm ngoài tiêu cự áp dụng cùng thủ tục và dùng bộ lọc FIR 7 ì 7 thiết kế sử dụng cửa sổ Blackmann chúng ta thu đợc ảnh chỉ trên hình 10.8
Bảng 10.1 các hệ số của bộ lọc khôi phục
Trang 14Hình 10.4 Đáp ứng biên độ của bộ lọc 2-D IIR đợc xấp xỉ bởi hàm khôi phục ảnh
mờ
Bài tập 10.2
1 "MARS.IMG" và "YOSSRA.IMG" là các tên file tơng ứng của các ảnh trong hình 10.5 và 10.7 Thực hiện quá trình khôi phục
Để làm bài tập này chúng ta cần chạy các chơng trình sau theo thứ tự:
a KIRSH để có đợc đờng biên rõ nét của ảnh
b DEBLUR để tính hàm chuyển đổi giảm mờ
c IMPULSE để thu đợc đáp ứng không gian của hàm giảm mờ
d IIRD để thiết kế bộ lọc IIR từ đáp ứng không gian
e IIRDITER để tăng cờng bộ lọc đợc thiết kế (dùng một hoặc hai bớc lặp) Bạn cần phải tự viết chơng trình cho bạn
2 Lặp lại phần 1 dùng các bộ lọc kiểu FIR
3 áp dụng lọc trung bình để khôi phục ảnh "YOSSRA.IMG"
4 áp dụng bộ lọc thống kê Wallis với ảnh "YOSSRA.IMG".`
Trang 15H×nh 10.5 ¶nh sao ho¶ bÞ mê do ¶nh hëng cña khÝ quyÓn.
H×nh 10.6 Kh«i phôc ¶nh h×nh 10.5.
Trang 16Hình 10.7 ảnh mờ do ngoài tiêu cự.
Hình 10.8 Khôi phục ảnh hình 10.7.
10.6 Khôi phục lại ảnh qua phép xử lý vùng
Các phép gần đúng ở phần trên dựa trên cơ sở coi rằng tất cả các vật thể trên bề mặt đều chịu một tác động bằng nhau của các vết mờ Điều này sẽ đúng nếu chỉ có một độ sâu nhỏ trên ảnh hoặc tất cả các vật thể cùng chuyển động theo một hớng Một điều chúng ta biết rất rõ là một vật thể chuyển động gần camera sẽ có nhiều vết
mờ hơn các vật thể xa camera Trong trờng hợp vết mờ chuyển động, vật thể chuyển
động chậm hoặc cùng tốc độ nhng lại gần camera sẽ chịu nhiều tác động mờ hơn vật
Trang 17thể chuyển động nhanh hoặc là cùng tốc độ nhng ra xa camera Điều này dẫn chúng
ta quay lại với các giả thiết ban đầu của chúng ta (coi PSF là bất biến khoảng cách), dùng một OTF duy nhất cho tất cả các trờng hợp có thể không chấp nhận đợc trong một số trờng hợp Để khắc phục vấn đề này chúng ta sẽ xem xét giải thuật sau đây :
1 Chia ảnh thành các miền chữ nhật hoặc là vuông không chồng lên nhau
2 Trong các miền này cần đo phạm vi của vết mờ σx và σy Trong phần nào không có đờng biên, dùng σx và σy của miền gần nhất
3 Từ phạm vi của vết mờ tính các hàm khôi phục cho tất cả các phần
4 Thiết kế một bộ lọc cho mỗi phần để xấp xỉ các hàm khôi phục
5 Đa ra ảnh khôi phục dùng bộ lọc theo các bớc:
a Miền đầu tiên trên cao bên tay trái đợc khôi phục với bộ lọc có điều kiện ban
đầu là zero
b Các miền còn lại đợc khôi phục với các bộ lọc khôi phục tơng ứng của chúng;
dù thế nào đi chăng nữa; điều kiện ban đầu các bộ lọc phụ thuộc đợc lấy từ các phần trớc Nhập vào phần trớc cần lấy từ những miền cha đợc khôi phục
và xuất ra phần trớc lấy từ những miền đã khôi phục Chú ý là ảnh coi nh là
đợc bao quanh bởi zero, điều này sẽ đặt điều kiện ban đầu trên bộ lọc dùng trên các khối cao nhất và trái nhất
Để tránh hiệu ứng khối, ví dụ nh sự khác nhau của quá nhiều của các giá trị hàm mức xám trung bình giữa các khối gần nhau, hàm khôi phục vết mờ sẽ có dạng
0.1
0.1)
,(
ˆ
2 /
σ
ở đây K chọn trên giá trị của thử nghiệm và sai số làm giảm tác động khối Chú ý
là trong thuật toán trên các phần trùng nhau có thể dùng tác động khối nhỏ nhất
Để giải quyết vấn đề trên bạn cần phát triển ba chơng trình Chơng trình đầu tiên tính phạm vi vết mờ, σx và σy cho tất cả các phần cắt Chơng trình thứ hai dùng thông tin này tính hệ số hồi phục cho tất cả các bộ lọc (bộ lọc IIR đã đợc dùng) Ch-
ơng trình thứ ba và là chơng trình cuối cùng sẽ lấy kết quả của chơng trình thứ hai
để khôi phục lại ảnh bị mờ
Bài tập 10.3
1 Viết một chơng trình tính phân tán vết mờ của các khối ảnh mà có thể trùng lên nhau (kích thớc khối chọn bởi ngời dùng), chia nhỏ ảnh số Nhập vào của chơng trình này là một nền đờng biên ảnh Để có một khối không có đờng biên, dùng phạm vi vết mờ của các miền bên cạnh
2 Viết một chơng trình dùng các phạm vi của tất cả các khối tính các hệ số bộ lọc cho cả hai kiểu bộ lọc FIR và IIR, dựa trên yêu cầu của ngời sử dụng Giá trị K của biểu thức 10.8 cũng đợc ngời sử dụng lựa chọn
3 Viết một chơng trình dùng các bộ lọc thiết kế trong phần 1 để loại bỏ các vết
mờ Giá trị nhập vào cần cho các khối tại trên cao và bên trái ngoài rìa của tất cả các khối đợc cho riêng từng khối lấy từ phía trên và bên trái khối nằm xung quanh đã đợc xử lý