Ai mún có thêm code thì gửi mail cho mình nhé: ledinhchung.mta@gmail.com
Trang 1Mục lục
I Phát biểu bài toán 2
II Hướng giải quyết 3
III Thuật toán 3
1 Thay đổi độ tương phản(Contrast stretching) 3
2 Tạo ảnh âm bản 4
3 Phân ngưỡng ảnh 5
IV Kỹ thuật cài đặt 5
V Kết quả 10
Trang 2I Phát biểu bài toán
Hiện nay phần lớn lượng thông tin con người thu vào là dưới dạng hình ảnh.Thông tin dưới dạng hình ảnh là thông tin trực quan nên con người dễ dàng tiếp nhận nó.Với sự ra đời của nhiều máy móc kỹ thuật hiện đại như máy ảnh số,máy quay số,các máy thu hình,máy vi tính … thì lượng thông tin con người thu được càng nhiều.Con người không chỉ muốn tiếp thu thông tin một cách thụ động mà phải biết xử lý nó,làm cho nó hữu ích hơn.Do đó con người đã tiến hành nghiên cứu các phương pháp xử lý trên thông tin trực quan này để chúng
ta có thể tiếp nhận tối đa lượng thông tin trực quan này Việc xử lý ảnh số đã ra đời với nhiều hướng phát triển khác nhau như nén ảnh,nhận dạng,giấu tin … Trong xử lý ảnh ,sau quá trình thu nhận ảnh là quá trình phân tích ảnh,mà thực chất bao gồm nhiều công đoạn nhỏ như : Tăng cường ảnh,phát hiện các đặc tính như biên,phân vùng ảnh … Do những nguyên nhân như chất lượng máy thu nhận ảnh ,do nguồn sáng hay nhiễu,ảnh có thể bị suy yếu đi các đặc trưng mà ta quan tâm.Do vậy cần tăng cường và khôi phục ảnh để làm nổi bật các đặc trưng của ảnh mà ta quan tâm.Tăng cường ảnh bao gồm nhiều phương pháp và xử lý điểm ảnh là một trong những cách được khá nhiều người sử dụng.Với các phương pháp như thay đổi độ tương phản,tạo ảnh âm bản,phân ngưỡng …đã tạo ra hiệu quả có giá trị trong thực tế
Với đề bài “ Tìm hiểu các phương pháp xử lý điểm ảnh như thay đổi độ tương phản ,tạo ảnh âm bản và phân ngưỡng ảnh.Thử nghiệm trên ảnh màu 24 bít.” Em đã tập trung làm rõ và cài đặt các phương pháp trên đối với
ảnh màu 24 bít
Trong quá trình làm bài tập không thể tránh được những sai sốt.Em rất mong thầy xem xét và góp ý để cho em có nhiều kinh nghiệm hơn trong môn xử lý ảnh
Trang 3Em xin chân thành cảm ơn!
II Hướng giải quyết
Phép biến đổi u(x,y) = f(v(x,y)), trong đó:
v(x,y): mức xám điểm ảnh x,y trên ảnh gốc u(x,y): mức xám điểm ảnh x,y trên ảnh kết quả
f : được gọi là toán tử điểm
Kỹ thuật biến đổi dùng toán tử điểm tương đối đơn giản nhưng đem lại hiệu quả khá cao (trong một số ứng dụng)
Ảnh có thể được biểu diễn dưới dạng tín hiệu tương tự hoặc tín hiệu số Trong phạm vi bài tập em chỉ đề cập tới ảnh số 24bit Trong biểu diễn ảnh số của ảnh đa mức xám, một ảnh được biểu diễn dưới dạng một ma trận hai chiều Mỗi phần tử của ma trận biểu diễn cho một mức xám hay cường độ của ảnh tại
vị trí đó và được gọi là điểm ảnh(pixel)
Khác với ảnh 8 bit, trong ma trận của ảnh 24 bit, mỗi phần tử biểu diễn cho
3 màu riêng rẽ: red, green, blue Tại mỗi điểm ảnh cần 24 bit và 24 bit này được chia thành 3 khoảng 8 bit Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính Đối với ảnh đa mức xám, 3 byte này có cùng một giá trị.Do đó hướng giải quyết đối với ảnh màu 24bit là thực hiện theo từng thành phần màu riêng rẽ R,G,B sau đó tổng hợp lại
Trang 4III Thuật toán
1 Thay đổi độ tương phản(Contrast stretching)
Độ tương phản thể hiện sự thay đổi cường độ sáng của đối tượng so với nền,hay nói cách khác độ tương phản chính là độ nổi của điểm ảnh hay vùng ảnh so với nền
Thực tế chỉ ra rằng, 2 đối tượng có cùng độ sáng nhưng đặt trên 2 nền khác nhau thì cho cảm nhận khác nhau
Ảnh có độ tương phản thấp có thể do điều kiện sáng không đủ hay không đều, hoặc do tính không tuyến tính hay biến động nhỏ của bộ phận nhận ảnh
Để điều chỉnh độ tương phản của ảnh, ta có thể điều chỉnh lại biên độ của ảnh trên toàn dải hay trên dải có giới hạn bằng cách biến đổi biên độ đầu vào
Có thể sử dụng phép biến đổi tuyến tính hay phi tuyến (hàm biến đổi là hàm tuyến tính hay hàm mũ, hàm logarit)
Công thức :
g(x, y)= ¿ { L min , f(x, y)< a low , ¿ { ( L max − L min ) . f(x, y)− a a low
high − a low + L min , a low ≤ f(x,y)≤a high , ¿¿¿
Với những ảnh mà các mức xám chênh lệch nhau không nhiều (độ tương phản thấp) thì ta cần dãn ra để thấy rõ sự khác biệt Trong phương pháp này ta
sẽ làm tối những vùng có mức xám nhỏ hơn alow, sáng hẳn vùng có mức xám
Trang 5lớn hơn amax, khi đó ta sẽ trải được khoảng mức xám [ alow, ahigh ] trên toàn dải [Lmin, Lmax]
2 Tạo ảnh âm bản
Công thức:
g(x,y) = L max - f(x,y)
Với: Lmin £ f(x,y) £ Lmax
3 Phân ngưỡng ảnh
Công thức:
Ảnh đầu ra chỉ có 2 mức: thấp và cao
Ngưỡng θ trong kỹ thuật tách ngưỡng thường được cho bởi người sử
dụng Kỹ thuật tách ngưỡng tự động nhằm tìm ra ngưỡng θ một cách tự độ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
Giả sử, ta có ảnh I ~ kích thước m × n
G ~ là số mức xám lớn nhất của ảnh t(g) ~ số điểm ảnh có mức xám ≤ g h(g) ~ số điểm ảnh có mức xám =g
¿
¿
m(g) = ∑
i=0
g
i∗hi
/ t(g) ~ mômen quán tính TB có mức xám ≤ g
IV Kỹ thuật cài đặt
Tạo một lớp thuật toán chứa tất cả các thuật toán trong bài
Trang 6class Algorithm
{
/// <summary>
///Thay doi do tuong phan
/// </summary>
anh</param>
can thay doi do tuong phan </param>
anh can thay doi do tuong phan</param>
/// <param name="L_min">can duoi can dat duoc</
param>
/// <param name="L_max">can tren can dat duoc</
param>
/// <returns></returns>
value_pixel,int a_low,int a_high,int L_min,int
L_max)
{
int temp_pixel;
if (value_pixel <= a_low)
{
temp_pixel = L_min;
}
else if (a_high <= value_pixel)
{
temp_pixel = L_max;
}
else
{
Trang 7temp_pixel = Convert.ToInt32((L_max -
L_min) *(value_pixel - a_low) / (a_high
- a_low) + L_min);
}
return temp_pixel;
}
/// <summary>
/// Tao anh am ban
/// </summary>
anh</param>
/// <returns></returns>
public static int Negative(int value_pixel,int
L_max) {
return (L_max - value_pixel);
}
/// <summary>
/// Phan nguong anh
/// </summary>
anh</param>
/// <param name="Threshold">Nguong dung de
/// <returns></returns>
public static int Img_Threshold(int
value_pixel,int Threshold) {
if (value_pixel<Threshold)
{
return 0;
}
else
{
return 255;
Trang 8}
}
/// <summary>
/// Phuong pháp tự động tìm ngưỡng thích hợp
/// </summary>
/// <param name="bmp">mảng điểm ảnh</param>
/// <param name="w">chiều dài</param>
/// <param name="h">chiều cao</param>
/// <returns>giá trị ngưỡng</returns>
amax, int amin, int w, int h)
{
int[] hg = new int[256];
int[] tg = new int[256];
double[] mg = new double[256];
double[] fg = new double[256];
for (int g = amin; g <= amax; g++)
{
hg[g] = 0;
}
//Tim a_max,a_min cho tung thanh phan mau RGB
for (int i = 0; i < w; i++)
for (int j = 0; j < h; j++)
{
for (int g = amin; g <= amax; g++) {
if (bmp[i, j] == g)
Trang 9{
hg[g]++;
tg[g]++;
}
if (bmp[i, j] < g)
{
//so diem anh co muc xam < g
tg[g]++;
}
}
}
//tinh momen quan tinh trung binh co muc xam nho hon g
for (int g = amin; g <= amax; g++)
{
int temp = 0;
for (int i = 0; i <= g; i++)
{
temp += i * hg[i];
}
mg[g] = Math.Round(temp / (float)tg[g], 3); }
//tinh ham nguong
for (int g = amin; g < amax; g++)
{
fg[g] = Math.Round((tg[g] / (float)(w * h
- tg[g])) * ((mg[g] - mg[amax]) * (mg[g] - mg[amax])), 3);
}
int g1 = 0;
//Tim fg max
double fgmax = 0;
for (int g = amin; g < amax; g++)
{
if (fg[g] > fgmax)
{
fgmax = fg[g];
g1 = g;
Trang 10}
}
return g1;
}
}
V Kết quả
Tăng độ tương phản:
Âm bản :
Trang 11Phân ngưỡng :