Xem mẫu
- gotoxy(1,3);
printf("File exists. Wish to overwrite? (y or
n)-->");
while(((ch=tolower(getch()))!='y')&&(ch!='n'));
putch(ch);
switch(ch)
{
case 'y':
ind=1;
break;
case 'n':
gotoxy(1,3);
printf( " ");
gotoxy(1,2);
printf(" ");
gotoxy(1,2);
printf("Enter file name -->");
scanf("%s",file_name);
ind=access(file_name,0);
}
}
fptr2=fopen(file_name,"wb");
nsq=(double)filelength(fileno(fptr));
printf("\nIs this a square image ? (y or n) ");
while(((ch=tolower(getch()))!='y')&&(ch!='n'));
putch(ch);
switch(ch)
{
case 'y':
image_length=image_width=sqrt(nsq);
break;
case 'n':
printf("Enter image width--> ");
scanf("%d",&image_width);
image_length=(int)(nsq/image_width);
}
printf("\n image size= %d x
%d",image_length,image_width);
true_length=0.95*image_length;
/* Generate Histogram.*/
for(i=0;i
- for(i=0;j
- H ình 4.12 (a) Ảnh gốc dùng cho san bằng lược đồ mức xám.
H ình 4.12 (b) Ảnh sau khi san bằng lược đồ mức xám.
4.5.3 Thay đổi lược đồ mức xám
Kỹ thuật san bằng lược đồ mức xám đưa ra một ph ương pháp trong đó có
thể nâng cao chất lượng ảnh qua việc làm bình đẳng tầm quan trọng giữa các
mức xám. Tuy nhiên, có thể trong một vài ứng dụng ngư ời ta cần nâng cao
mức xám hay một khoảng mức xám n ào đó. Vì vậy, cần phải ánh xạ ảnh mức
57
- xám đ ể lược đồ mức xám của nó tuân theo một phân phối đặc biệt. Chúng ta
thực hiện điều n ày bằng cách nào, hãy quay lại một chút với ảnh mức xám liên
tục, để p r (r ) và p z ( z ) là hàm mật độ xác xuất tương ứng của ảnh gốc và ảnh
ánh xạ riêng biệt. Để chuyển đổi ảnh gốc thành ảnh có lược đồ mức xám các
mức xám đồng đều chúng ta dùng hàm ánh xạ CDF, ví dụ:
r
s T (r ) p r ( )d
0
(4.23)
Nếu ảnh ánh xạ đã có sẵn, th ì các mức xám của nó có thể đư ợc ánh xạ sang
phổ lược đồ mức xám đồng đều qua CDF nh ư sau:
z
(4.24)
v G ( z ) p z ( )d
0
Bởi vì ảnh ánh xạ vừa nhận đư ợc từ ảnh gốc, th ì sau đ ó nó sẽ ánh xạ vào
cùng ảnh có lược đồ mức xám được làm bằng nhau (đồng bộ). Đó là:
G( z ) T (r )
(4.25)
z r
hay (4.26)
p z ( )d pr ( )d
0 0
Trong đó r và z là hai biến tương ứng thể hiện mức xám của ảnh gốc và ảnh
ánh xạ. Cái ta cần là thu được z như là m ột hàm trực tiếp của r, nghĩa là:
z G 1 (T ( r )) F ( r )
(4.27)
Để có được giải pháp theo công thức giải tích (4.26) cho trường hợp chung
có thể là khó khăn ho ặc không thể làm được. Tuy nhiên, giải pháp đồ thị là rất
có thể, và hình 4.13 minh ho ạ thủ tục cho giải pháp n ày. Với một mức xám
được chọn r1 thu được T(r1). Chiếu T(r1) lên G(z) thu được mức xám ánh xạ z1.
Bởi vì trong thực tế chúng ta thư ờng xử lý ảnh rời rạc chứ không phải ảnh
liên tục, nên CDF sẽ đ ược viết lại như sau:
r
T (r ) no (i )
i 1
(4.28)
z
G ( z ) n m (i )
và (4.29)
i 0
ở đây n 0(i) và n m(i) là các mảng m à phần tử thứ i của nó chứa tổng số mức
xám, có giá trị i trong ảnh gốc và ảnh ánh xạ. Sự xấp xỉ nảy sinh trong trường
58
- hợp rời rạc, dẫn đến khó có thể đạt được các giá trị của r và z để T (r ) đúng
bằng G ( z ) . Tuy nhiên có thể tìm một giá trị của z sao cho với bất kỳ r biểu
thức sau đây được thoả mãn:
(4.30)
G ( z 1) T (r ) G ( z 1)
(xem hình 4.14.)
T(r) G(z)
T(r1)
G(z1)
r1 r z1
z
H ình 4.13 Biểu diễn đồ thị của công thức (4.26).
G(z
T(r)
)
r1 r z1
z
Hình 4.14 Biểu diễn đồ thị của trường hợp mẫu.
Do vậy, dựa trên các vấn đề thảo luận ở trên và hình 4.14 chúng ta có thể
thực hiện từng bước theo thủ tục sau để xác định ánh xạ giữa r và z.
1. Quy định lư ợc đồ mức xám cho ảnh ánh xạ.
2. Tính CDF T (r ) và G ( z ) riêng rẽ sử dụng công thức (4.28) và (4.29)
3. Cho r = 0 đến 255 ( bước nhảy bằng 1) thực hiện:
a. Tìm z sao cho
G ( z ) T (r ) G ( z 1)
b . Lưu giữ trong mảng F, tại vị trí r, giá trị bằng của z; ngh ĩa là F(r) = z.
Thủ tục trên mang lại mảng ánh xạ
z F ( r ) G 1 (T ( r ))
59
- Kết quả n ày có thể được dùng để chuyển đổi ảnh gốc sang một ảnh có mức
xám xấp xỉ với mức xám đã quy định.
Với thủ tục trên để thực hiện chúng ta cần chia khoảng T (r ) và G ( z ) vì thế
chúng cung cấp cùng khoảng động của các mức xám. Chú ý rằng T (r ) và
G ( z ) là những hàm ánh xạ chúng ánh xạ ảnh gốc và ảnh chuyển đổi thành ảnh
san bằng mức xám. Vì thế, công thức (4.28) và (4.29) sẽ được viết lại như sau:
r
no (i) T (0)
i 0
(4.31)
T (r ) 255
T (255) T (0)
z
nm (i) G (0)
i 0
(4.32)
G( z) 255
G ( 255) G ( 0)
Việc quy định lược đồ mức xám. Có một kỹ thuật chuẩn để sinh ra lược đồ
mức xám cho ảnh chiếu. Những kỹ thuật này được mô tả sau đây.
Phân phối Gauss. Phân phối cho rằng
2
/ 2 2
h( z ) e ( z )
(4.33)
Trong đó = k ỳ vọng toán học hay trị trung b ình.
= sai phương.
Chú ý rằng h (z) giảm khoảng 90 phần trăm giá trị tối đa của nó tại
z / 1.073
Do đó, biểu hiện bề rộng của phân phối.
Tham số và có thể được điều chỉnh cho đến khi đạt được kết quả mong
muốn trên ảnh ra. Cần chú ý rằng thực hiện phép chiếu các lư ợc đồ mức xám
khác nhau phụ thuộc vào ảnh, bởi vậy cần phải tăng cường ảnh.
Tuyến tính từng đoạn (Piecewise linear). Một cách tiếp cận xen kẽ linh
động hơn phương pháp Gaussian là sử dụng các đoạn thẳng để biểu diễn phân
phối mong muốn. Hình 4.15 đưa ra phương pháp như vậy. Các tham số
L , H , m và h có thể được thay đổi đến tận khi thu được ảnh mong muốn.
Hình 4.15 có th ể được trình bày như sau:
p(z)
1
h k
H
j 60
L
0 m 255
z
- H ình 4.15 Hàm tuyến tính từng đoạn.
1. Tính:
1
yj
1
tan( L )
1
m
x j y j tan( L )
2. Với 0 z x j
z
p z ( z)
tan( L )
và với x j z m
h yj
p z ( z) (z x j ) y j
m xj
3. Tính:
1
yk
tan( H )
1
25 m
x k 255 y k tan( H )
4. Với m z xk
yk h
p z ( z) ( z xk ) y k
xk m
và với x k z 255
yk
p z ( z) (255 z )
255 x k
Phương pháp xen kẽ trên, ch ỉ sử dụng hai đoạn thẳng, được chỉ trên hình
4.16.
Với 0 z m
h L
z L
p z ( z)
m
Và với m z 255
61
- R h
( z 255) R
p z ( z)
255 m
Tham số H , H , m và h có thể đư ợc điều chỉnh xấp xỉ với phân phối mong
muốn. Ví dụ, nếu chúng ta đặt H H m h 1.0 thì ta sẽ thu được phân bố
đồng đều.
pz(z)
L H
h
0 m 255 z
H ình 4.16 Xấp xỉ hai đoạn thẳng.
Các dạng phân phối khác. Có một số dạng phân phối khác cũng được sử
dụng để nâng cao chất lượng ảnh. Các dạng này được cho dưới đây. Với
nh ững dạng này chúng ta có thể có được một giải pháp gần nhất với công thức
(4.26).
Hàm mũ:
p z ( z ) e ( z zmin ) (4.34)
z z min
Hàm chuyển đổi được cho bởi
r
1
(4.35)
ln 1 p r ( )d
r rmin
0
Hàm Rayleigh:
( z zmin ) 2
z min 2 2
z
(4.36)
p z ( z) z z min
e
2
Hàm chuyển đổi được cho bởi
1
2
1
2 2 ln r (4.37)
r rmin
1 p r ( )d
0
62
- Hàm hyperbolic (căn bậc 3):
z 2 / 3
1
(4.38)
pz (z)
3 z1/ 3 z1/ 3
max min
Hàm hyperbolic (logarit)
1
(4.40)
p z ( z)
zln( z max ) ln( z min )
Hàm chuyển đổi được cho bởi
r
p ( ) d
rmax r
0
(4.41)
r rmin
rmin
Thực tế khi thực hiện công thức trên chúng ta sẽ thay thế pr (r ) b ằng h(i).
Bây giờ là lúc chúng ta phát triển các chương trình biến đổi lược đồ mức
xám.
Bài tập 4.3
1. Viết chương trình C để thay đổi lược đồ mức xám trên cơ sở hàm tuyến
tính mức độ bộ phận h ình 4.15. Kiểm tra chương trình trên ảnh
"ISLAM.IMG".
2. Tương tự như câu 1, nhưng xuất phát từ các công thức (4.35), (4.37),
(4.39), và (4.41).
3. Lập chương trình cho phép bạn chọn h àm san bằng, gaussian, mũ,
Rayleigh, hyperbolic (căn bậc 3), hoặc hyperbolic (logarith), sau đó ánh xạ
ảnh thích hợp.
Hình 4.17 là ảnh "ISLAM.IMG" sau khi sử dụng phân phối gaussian với
125 và / 1.073 150 . Chú ý rằng ảnh này có hiển thị nhiều chi tiết hơn
ảnh san bằng mức xám trên hình 4.12b. Tuy nhiên, bạn sẽ thử nghiệm với và
khác nhau để phát hiện ra ưu điểm của phương pháp này.
63
- H ình 4.17 Ảnh xử lý dùng phân phối Gauss để biến đổi lược đồ mức
xám.
4.6 Lọc trung vị
Trung vị M của một tập hợp số đư ợc xác định sao cho một nửa các giá trị
trong tập lớn hơn M hoặc một nửa các giá trị nhỏ hơn M. Lọc trung vị trong
ảnh được áp dụng bởi đầu tiên chọn một cửa sổ có kích thước N, ở đây N
ch ẵn. Cửa sổ này ho ặc miền cung cấp sẽ được quét qua ảnh. Điểm trung tâm
của m iền cung cấp, tại bất kỳ nơi nào trong ảnh, được thay thế bằng trung vị
của các giá trị điểm của các miền lân cận. Lọc trung vị làm cho điểm ảnh trở
nên nổi trội hơn so với các điểm xung quanh. Nó loại trừ ảnh h ưởng của các
64
nguon tai.lieu . vn