Mc Lc
M U
X lý nh l mt trong nhng lnh vc chớnh v quan trng
ca cụng ngh thụng tin v cú ng dng cho rt nhiu nghnh khỏc.
Do ú, õy l mt lnh vc ang c quan tõm nghiờn cu v phỏt
trin. mụ hc x lý nh cng c a vo ging dy tt c cỏc
trng, kho o to cụng ngh thụng tin v nhiu ngnh k thut
khỏc.
Xử lý ảnh bao gồm các bớc: thu nhận ảnh, tiền xử lý, phân đoạn
ảnh, biểu diễn và giải thích, nhận dạng và mô tả (tuy nhiên không phải
ứng dụng xử lý ảnh nào cũng phải có đầy đủ tất cả các bớc trên).
Trong các bớc đó, bớc phân đoạn ảnh là bớc ht sc quan trọng v
cũng khó khăn. Mặt khác, có nhiều ứng dụng quan trọng cần đến kỹ
thuật phân đoạn: ảnh màu hoặc đa mức xám thì cần phải phân ngỡng;
1
muốn nhận dạng đợc các đối tợng thì trớc hết cần phải phân ảnh thành
các vùng khác nhau chứa các đối tợng trong ảnh. Hiện nay, đã có
nhiều kỹ thuật phân đoạn ảnh đợc đa ra. Trong phm vi ỏn ca
mỡnh, em tỡm hiu nghiờn cu v cỏc thut toỏn xỏc nh ngng
ng dng trong phõn on nh.
Ni dung chớnh:
1.S lc v lý thuyt phõn on nh.
2.Cỏc thut toỏn phỏt hin ngng.
PHN NI DUNG
1.S lc v lý thuyt phõn on nh.
phõn tớch cỏc i tng trong nh, chỳng ta cn phi
phõn bit c cỏc i tng cn quan tõm vi phn cũn li ca
nh, hay cũn gi l nn nh. Nhng i tng ny cú th tỡm ra
c l nh cỏc k thut phõn on nh, theo ngha l tỏch phn
nn ra khi i tng trong nh . Cỏc k thut ph bin nht trong
2
ngưỡng là 128 thì kết quả cho ra là giá trị ngưỡng rất tốt.
Ví dụ:
Ảnh gốc Ảnh sau khi phân ngưỡng
2.2 Phương pháp tìm ngưỡng dựa vào lược đồ mức
xám Histogram.
2.2.1 Phương pháp lặp.
-Ý tưởng:Trước hết lược đồ sẽ được phân đoạn thành hai
phần bằng một giá trị ngưỡng khởi động như θ
0
=(Lmax-Lmin)/2,
tức là bằng phân nửa thang độ xám động của ảnh(trong đó Lmax:
là giá trị mức xám lớn nhất của ảnh,Lmin: là giá trị mức xám nhỏ
nhất của ảnh). Sau đó, các trung bình mẫu (m
f,0
) của những điểm
ảnh thuộc đối tượng và (m
b,0
) của những điểm ảnh nền sẽ được tính
4
toán. Một giá trị ngưỡng mới θ
1
sẽ được tính kế đó bằng cách lấy
giá trị trung bình của hai trung bình mẫu nói trên. Quá trình này cứ
thế sẽ được tiếp tục với các ngưỡng mới cho đến khi nào giá trị
ngưỡng không thay đổi nữa thì dừng lại
-Thuật toán:
Bước 1: Khởi tạo mảng Histogram hn; giá trị =(Lmax-
Lmin)/2, K=0;
Bước 2: Tính giá trị trung bình đối với phần nền và phần đối
tượng tương ứng với :
thuộc đối tượng tạo nên một đỉnh yếu trong lược đồ ảnh.
-Thuật toán:
Bước 1: Khởi tạo mảng Histogram hn; tìm giá trị bmax, bmin,
hn[bmax], hn[bmin].
Bước 2: Duyệt toàn bộ các mức xám từ bmin đến bmax. Tính
khoảng cách tương ứng sau đó xét ngưỡng bằng giá trị mức xám có
khoảng cách lớn nhất.
for(int i=min+1;i<max;i++)
{ d=(float)Math.Abs(nx*i-ny*hn[i]-
max*nx+hn[max]*ny);
if (dmax <d / a)
6
{dmax=d/a;
nguong = i;
}
}
2.2.3 Phương pháp đối xứng nền.
-Ý tưởng: Kỹ thuật này dựa trên sự giả định là tồn tại hai
đỉnh phân biệt trong lược đồ nằm đối xứng nhau qua đỉnh có giá trị
lớn nhất trong phần lược đồ thuộc về các điểm ảnh nền. Đỉnh cực
đại maxp tìm được nhờ tiến hành tìm giá trị cực đại trong lược đồ.
Sau đó thuật toán sẽ được áp dụng tiếp ở phía không phải là điểm
ảnh thuộc đối tượng ứng với giá trị cực đại đó nhằm tìm ra điểm p
% như trong phương trình .
Trong hình , các điểm ảnh thuộc đối tượng nằm về bên trái
của đỉnh nền (tại vị trí 183), điều này có nghĩa là cần tìm kiếm ở
bên phải đỉnh đó để xác định được một giá trị ví dụ như trong bài là
95%. Tại giá trị sáng này, 5% số điểm ảnh sẽ ở về phía bên phải (có
giá trị sáng lớn hơn) nó. Tình huống này xảy ra tại vị trí 216 . Do
7
động dựa vào Histogram theo nguyên lý trong vật lý là vật thể tách
làm 2 phần nếu tổng độ lệnh trong từng phần là tối thiểu. //lech
trong moi phan
Giả sử, ta có ảnh:
I ~ kích thước m n
G ~ là số mức xám của ảnh kể cả khuyết thiếu
t(g) ~ số điểm ảnh có mức xám <= g
là mô men quán tính trung bình có mức xám <=g
Hàm f:
m(g)*(m*n-t(g))-
Tìm sao cho:
Khi đó .
-Thuật toán:
Bước 1: Khởi tạo mảng Histogram hn; mảng t, mảng m và
mảng f.
9
Bước 2: tìm trong mảng f, giá trị f(g) lớn nhất khi đó ngưỡng
=g;
for(int i=0;i<f.Length;i++){
if (max < f[i])
{max = f[i];
nguong = i;}
}
3.Cài đặt thuật toán.
3.1 Thuật toán tìm ngưỡng cố định.
public Bitmap phannguong(Bitmap bm)
{
Bitmap bmnew = new Bitmap(bm.Width,
bm.Height);
voi nen
{
tong2 += i * hn[i];
sodiem2 += hn[i];}
if (sodiem1 != 0 && sodiem2 != 0)
return (tong1 / sodiem1 +
tong2 / sodiem2) / 2;
else
return denta+1; }
public Bitmap thuattoanlap()
{
xacdinhnguongcuaanh();
int denta1 = (Lmax - Lmin) / 2;
float saiso = 0.01f;
while (true)
{
int denta2 =timnguong(denta1);
if ((float)Math.Abs(denta1 - denta2)
< saiso) break;
else
{
nguong = denta2;//nguong luon
bang cai moi
denta1 = nguong;
}
}
phan_nguong_anh n = new
phan_nguong_anh(nguong);
return n.phannguong(bm); }
11
toi duong thang
int nx = hn[max] - hn[min];
int ny=max-min;
int a = (int)Math.Sqrt(nx * nx + ny *
ny);
//phuong tinh duong thang di qu 2 diem
max va min co dang;
//nx*x-ny*y-max*nx+hn[max]*ny=0
if(max>min)
{
for(int i=min+1;i<max;i++)
{
12
d=(float)Math.Abs(nx*i-ny*hn[i]-
max*nx+hn[max]*ny)/a;
if (dmax <d)
{
dmax=d;
nguong = i;
}
}
}
else
{
for (int i = max+1; i < min; i++){
d = (float)Math.Abs(nx * i - ny * hn[i] - max *
nx + hn[max] * ny)/a;
if (dmax <d)
{
dmax = d ;
for (int i = 255; i >= max; i )
{
for (int j = 255; j >= i; j )
{
tongsodiem += hn[j];
}
if ((float)tongsodiem / (bm.Width *
bm.Height) >= 0.05f)
{
split = i;
break;
}
}
nguong = max - (split - max);
}
3.5 Thuật toán lấy ngưỡng tự động.
public void set_cacgiatri()
{
for (int i = 0; i < bm.Width; i++)
{
for (int j = 0; j < bm.Height; j++)
{
Color c = bm.GetPixel(i, j);
hn[c.R]++;
}
}
for(int i=0;i<hn.Length;i++)
{
int tongsodiem = 0;
int tongtich = 0;
return n.phannguong(bm);
}
15