Để kiểm tra chương trình 7.3 chúng ta sẽ sử dụng ảnh "CAMEL.IMG" mà ta đã sử dụng để kiểm tra trong phương pháp tần số.. 7.6 Bộ lọc sai phân thống kê Wallis Bởi vì phóng đại ảnh là một
Trang 1for(j=0;j<image_width;j++)
buffi[j]=(unsigned char)0;
for(j=0;j<image_width;j++)
w[N1][j<<1]=buffi[j];/*Every other location is set to zero */
for(n2=0;n2<image_width2;n2++)
{
sum=(int)0;
for(k1=0;k1<N;k1++)
for(k2=0;k2<N;k2++)
{
if((n2+k2-N1)<(int)0) continue;
sum+=a[k1][k2]*w[k1][n2+k2-N1];
}
bufft[n2]=sum;
if(sum>max) max=sum;
if(sum<min) min=sum;
}
fwrite(bufft,image_width2,sizeof(int),fptrt); /* Shift rows of w */
temp=*w;
for(j=0;j<N1;j++)
*(w+j)=*(w+j+1);
*(w+N1)=temp;
}
rewind(fptrt);
scale=(float)255.0/((float)(max-min));
for(i=0;i<image_length2;i++)
{
fread(bufft,image_width2,sizeof(int),fptrt); for(j=0;j<image_width2;j++)
buffo[j]=(unsigned
char)((float)(bufft[j]-min)*scale);
fwrite(buffo,image_width2,sizeof(char),fptro); }
fclose(fptrt);
fclose(fptri);
fclose(fptro);
remove("temp.img");
gotoxy(70,25);
textattr(WHITE+(BLACK<<4));
cputs(" ");
gotoxy(xt,yt);
}
Trang 2Để kiểm tra chương trình 7.3 chúng ta sẽ sử dụng ảnh "CAMEL.IMG" mà
ta đã sử dụng để kiểm tra trong phương pháp tần số Kết quả sử dụng nội suy bậc 3 được thể hiện trên hình 7.9 Như đã mong đợi, ảnh hơi mờ, và chất lượng thấp hơn ảnh thu được qua việc ứng dụng định lý lấy mẫu Tuy nhiên,
có thể khôi phục ảnh mờ bằng cách sử dụng kỹ thuật không gian thông qua việc sử dụng trực tiếp bộ lọc thông cao Chúng ta sẽ đề cập nhiều hơn về vấn
đề này trong chương 8 Tổng quan về ảnh mờ sẽ được thảo luận trong chương
10
7.6 Bộ lọc sai phân thống kê Wallis
Bởi vì phóng đại ảnh là một dạng của tăng cường ảnh, sẽ là thích hợp khi giới thiệu bộ lọc sai phân thống kê tại thời điểm này Kiểu lọc này được phát triển bởi Wallis là đặc biệt hữu ích trong việc tăng cường các chi tiết trong vùng tối Vấn đề này nảy sinh trong ảnh x-quang như chỉ trên hình 7.10 Trong giải thuật lọc Wallis mỗi điểm được điều chỉnh bằng phép trừ giá trị trung bình của các điểm lân cận và chia với độ lệch chuẩn của các điểm lân cận của nó Ảnh lọc Wallis thường được trung bình với ảnh gốc Nguyên nhân phải thực hiện việc trung bình ảnh này là để ngăn cản việc loại bỏ toàn bộ nền Kích thước của vùng lân cận thường được nói đến như bậc của bộ lọc Kết quả của
áp dụng bộ lọc Wallis bậc 5 được chỉ trên hình 7.11
Trang 31.Tìm kiếm và phân tích tài liệu của H.S.Hou và H.C.Andrews Trên cơ sở
đó, viết chương trình C cho phép phóng to, thu nhỏ ảnh dùng các toán tử bậc
3
2.Vấn đề về miền tần số cũng được đề cập bởi T.C.Chen và R.J.P.De Figueiredo Đọc và phân tích tài liệu đó
Hình 7.10 Ảnh của tia x
Trang 4Hình 7.11 Xử lý ảnh hình 7.10 với bộ lọc Wallis
Bài tập 7.2
Viết chương trình C cho bộ lọc thống kê Wallis Cho phép người sử dụng
có thể trung bình ảnh đầu ra với ảnh gốc Cho phép người sử dụng nhập bậc của bộ lọc
Kiểm tra chương trình trên ảnh XRAY.IMG và RIBS.IMG có sẵn trên đĩa kèm theo
Trang 5CHƯƠNG
8
THIẾT KẾ CÁC BỘ LỌC FIR 2-D DÙNG
FFT VÀ CÁC HÀM CỬA SỔ 8.1 Chỉ dẫn
Các bộ lọc có điểm gẫy, hay còn gọi là các bộ lọc có dải chuyển tiếp dốc tạo
nên các nhiễu gợn lên phổ biên độ cả ở dải thông lẫn dải chắn khi thiết kế với
các phương pháp mô tả ở các chương trước Chúng được gọi là các dao động
Gibbs làm ảnh hưởng đến chất lượng của ảnh lọc Vì vậy cần phải có một biện
pháp làm giảm bớt và trơn tru các dao động này Một biện pháp tỏ ra có hiệu
quả là áp dụng các hàm cửa sổ Hàm thu được khi nhân với đáp ứng xung bộ
lọc với hàm này làm trơn các dao động Gibb Chúng ta sẽ áp dụng các hàm
này và so sánh phổ biên độ có dùng và không dùng hàm cửa sổ Để tận dụng
các thủ tục 2-D FFT trong chương 6, chúng ta sẽ sử dụng chúng trong việc
thiết kế bộ lọc FIR Chúng ta cần chú ý rằng cách tiếp cận FFT nhanh hơn rất
nhiều so với tích phân hai lớp ở chương 2 Để cung cấp thêm một số kiến thức
hoàn thiện cho công việc, chúng ta sẽ xem xét lĩnh vực về độ phân giải của
ảnh Lĩnh vực này đã có một số phát triển được biết dưới với cái tên truyền
hình độ phân giải cao (IDTV hoặc EDTV) Các hệ truyền hình này cho người
xem một số dòng gấp đôi truyền hình thông thường, và như vậy là cho một
hình ảnh đẹp hơn Từ chương 14 đến chương 16 đề cập đến tín hiệu truyền
hình và truyền hình độ phân giải cao cho xử lý ảnh hai chiều
8.2 Thiết kế bộ lọc FIR dùng FFT
Một bộ lọc FIR có thể thiết kế theo các bước sau đây :
1 Mô tả phổ biên độ và phổ pha H(m,n) bằng một mảng có kích thước M
2
, 2
M M
M phải là bội số của
2
2 Rút ra IFFT của H(m,n)(-1) m+n Kết quả là đáp ứng xung h(m,n)(-1) m+n có
trung tâm nằm tại
2
, 2
M M
Trang 6
3 Để bộ lọc cú bậc N N, N lẻ, hệ số bộ lọc (giỏ trị của h(m,n)) chứa trong
2
1 2
, 2
) 1 ( 2
N M N
M
đến
2
1 2
, 2
) 1 (
2
N M N
M
4 Cỏc bước trờn cú liờn quan đến việc sử dụng hàm cửa sổ hỡnh chữ nhật mà
nú cú thể được mụ tả như sau:
2
1
1 2
2
1
1
2 (8.1) = 0 với cỏc trường hợp cũn lại
Cỏc hệ số của bộ lọc cho bởi
h(m,n)w(m,n)
Hỡnh 8.1 chỉ ra phổ biờn độ của bộ lọc 5 5 được thiết kế sử dụng cửa sổ hỡnh chữ nhật và tận dụng cỏc đặc điểm:
lại.
còn hợp trường các cho
1
8 , 0
0 ) , (
2 2 2 1 2
1
s rad
Những dao động trong giải thụng rất đỏng được chỳ ý Cỏc dao động do sự hội tụ chậm của cỏc hệ số trong chuỗi Fourier cho sự chuyển đổi đột ngột về đặc tớnh tần số -biờn độ Nhắc lại rằng đỏp ứng tần số được coi như tuần hoàn
và IFFT về cơ bản cựng dẫn đến hệ số Fourier của hàm tuần hoàn Đõy cũng là đỏp ứng xung hay hệ số của bộ lọc FIR
8.3 Hàm cửa sổ
Cỏc hàm cửa sổ để làm giảm bớt cỏc dao động Gibbs được rỳt ra từ thiết kế của bộ lọc FIR 1-D Cỏc hàm cửa sổ hay được được sử dụng nhất sẽ khụng liệt
kờ theo bảng dưới đõy cựng sự mở rộng của chỳng sang trường hợp 2-D
ƯCửa sổ Hann và Hamming Cửa sổ Hann và Hamming cho bởi
N 1 2
Trang 7Có hai lựa chọn khác nhau của Trong cửa sổ Hann = 0.5 và trong cửa
sổ Hamming = 0 54 Bậc của bộ lọc được cho là N
¦Cửa sổ Blackmann Cửa sổ Blackmann cho bởi :
1
4 cos 08 , 0 0
1
2 cos 5 , 0 42 , 0 )
(
N
n N
n n
Các thành phần cosin thêm vào dẫn đến sự suy giảm biên độ của các dao
động Gibbs
¦Cửa sổ Kaiser Cửa sổ Kaiser cho bởi
0
) (
) ( )
0
I
I n
Hình 8.1 Đáp ứng tần số của bộ lọc FIR với c = 0.8
ở đây là tham số độc lập và
1
2
n
N
với |n| N 1
2 với các trường hợp còn lại
với |n| N1
2
với các trường hợp còn lại
Trang 8I0(x) là hàm Bessel bậc 0 loại 1 Nó có thể ước lượng đến độ chính xác bất
kỳ bởi dùng một dãy hội tụ
I0(x) = 1 + 1
2 1
2
k
x k
Hàm cửa sổ 2-D cơ bản dựa trên các hàm cửa sổ 1-D cung cấp ở trên Sự
mở rộng của bất kỳ hàm cửa sổ 1-D nào ở trên sang 2-D được tiến hành bằng
cách thay thế n bằng
n1 n
2 2 2 2
(8.5)
Chia cho 2để đảm bảo rằng giá trị của n không vượt quá (N - 1)/2, giá trị
lớn nhất trong trường hợp 1-D
Hàm cửa sổ 2-D được sinh ra từ hàm cửa sổ 1-D qua các biểu thức:
w(n 1 ,n 2 ) = w(n 1 )w(n 2 ) (8.6) Ứng dụng của hàm cửa sổ trên được rút ra đơn giản bằng thay thế đáp ứng
xung h(n 1 ,n 2 ) bằng h(n 1 ,n 2 )w(n 1 ,n 2 ) Chương trình sau cho phép bạn thiết kế
bất kỳ bộ lọc cửa sổ chữ nhật hay bất kỳ cửa sổ nào được mô tả trong phần trước bằng cách dùng biểu thức (8.5) để mở rộng từ 1-D sang 2-D Bộ lọc trong chương trình này được thiết kế dùng FFT 2-D, loại cửa sổ được chọn bởi người dùng
Chương trình 8.1 "FIRD.C" Thiết kế các bộ lọc dùng FFT và các hàm cửa sổ
/* Program for designing FIR filter using FFT on prescribed frequency specifications.Option for
selecting a Window function is provided
For the magnitude-frequency specifications you can either supply your own data or select from a menu of standard functions
If you supply your own data the first two values should be the dimensions of the 2-D array e.g 32
32
These dimensions should be equal to some power of
2 The data that follows is the magnitude