Đồ án kỹ thuật lập trình Tìm hiểu thuật toán Isodata xác định ngưỡng để phân đoạn ảnh. - Pdf 26

ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Đề tài: Tìm hiểu thuật toán Isodata xác định ngưỡng để
phân đoạn ảnh. Thử nghiệm với ảnh đa mức xám
GVHD : Bùi Thị Thảo
Họ và tên: Đinh Thị Ánh
Lớp : DS-TIN 5
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
MỤC LỤC
LỜI NÓI ĐẦU 2
KẾT LUẬN 21
LỜI NÓI ĐẦU
Ngày nay, công nghệ thông tin đã và đang đóng vai trò quan trọng trong
đời sống kinh tế, xã hội của nhiều quốc gia trên thế giới, là một phần không thể
thiếu trong một xã hội hiện đại. Các nhu cầu về thông tin ngày càng phức tạp.
Nó không chỉ đơn thuần là các văn bản như trước kia. Nó đã trở thành công cụ
không thể thiếu đối với các hình thức lưu trữ, biểu diễn thông tin. Và từ đó nhu
cầu xử lý các bức ảnh để phục vụ cho nhiều mục đích khác nhau đã dẫn đến việc
hình thành một khóa học có tên là “Xử lý ảnh”.
Xử lý ảnh tuy là một ngành khoa học còn mới mẻ so với nhiều ngành
khoa học khác nhưng hiện nay nó đang là một trong những lĩnh vực phát triển
rất nhanh. Xử lý ảnh bao gồm nhiều kỹ thuật như: thu nhận ảnh, nén dữ liệu ảnh,
xử lý năng cao chất lượng và khôi phục ảnh, phát hiện biên, phân vùng ảnh,
nhận dạng ảnh Trong các kỹ thuật trên thì phân đoạn ảnh là một bước khó nhất
trong xử lý ảnh. Nó là tiền đề quan trọng cho bước nhận dạng, là một kỹ thuật có
rất nhiều ứng dụng. Phân đoạn ảnh sẽ trợ giúp đắc lực cho quá trình nhận dạng,
tìm kiếm các ảnh để minh họa cho các bài báo giúp phát hiện ra các đối tượng
chuyển động trong một cuộn film
Người ta đã đưa ra một số phương pháp phân đoạn ảnh phân đoạn ảnh
theo ngưỡng, phân đoạn ảnh theo miền đồng nhất, phân đoạn ảnh theo kết cấu
bề mặt.
Trong đề tài này, em sẽ tìm hiểu thuật toán ISODATA xác định ngưỡng để phân

Ảnh Xử lý ảnh
Ảnh “tốt hơn”
Kết luận
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
Sơ đồ tổng quát của một hệ thống xử lý ảnh:
Hình 2: Các bước cơ bản trong hệ thống xử lý ảnh
Sơ đồ này bao gồm các thành phần sau:
a)Thu nhận ảnh (Image Acquisition):
Đây là công đoạn mang tính quyết định đối với quá trình xử lý ảnh. Ảnh
đầu vào sẽ được thu nhận qua các thiết bị như camera, máy scanner, vv và sau
đó các tín hiệu này được số hóa. Các thông tin quan trọng ở đây là độ phân giải,
chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của các thiết bị.
b)Tiền xử lý ảnh (Image Processing):
Sau bộ thu nhận, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu, khử
bóng, khử độ lệch, vv với mục đích làm cho chất lượng ảnh trở nên tốt hơn
nữa và thường được thực hiện bởi các bộ lọc.
c) Phân đoạn ảnh (Segmentation) hay phân vùng ảnh:
Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để
biểu diễn phân tích, nhận dạng ảnh. Ví dụ: để nhận dạng chữ (hoặc mã vạch)
trên phong bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về
địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt
để nhận dạng. Giai đoạn này nhằm phân tích ảnh thành những thành phần có
cùng tính chất nào đó dựa theo biên hay các vùng liên thông.
Mục đích của phân đoạn ảnh là để có một miêu tả tổng hợp về nhiều phần
tử khác nhau cấu tạo lên ảnh thô.
d) Biểu diễn và mô tả ảnh (Image Representation):
Sự chọn lựa các biểu diễn thích hợp cho một vùng ảnh mới chỉ là một
phần trong việc chuyển đổi dữ liệu ảnh thô sang một dạng thích hợp hơn cho
các xử lý về sau. Chúng ta cần phải đưa ra một phương pháp mô tả dữ liệu đã
Sinh viên thực hiện: Đinh Thị Ánh Trang 5

thước và khoảng cách của các điểm ảnh đó được chọn thích hợp sao cho mắt
người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số
gần như ảnh thật. Mỗi phần tử trong ma trận được gọi là một phần tử ảnh.
Ảnh được xem như là một tập hợp các điểm ảnh. Khi được số hoá nó
thường được biểu diễn là ma trận 2 chiều a[i][j] mà mỗi phần tử có một giá trị
nguyên hoặc là một véc tơ cấu trúc màu.
b) Độ phân giải của ảnh (Resolution):
Độ phân giải của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số
được hiển thị.
Sinh viên thực hiện: Đinh Thị Ánh Trang 6
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
Theo định nghĩa, khoảng cách giữa các điểm ảnh sẽ được chọn sao cho
mắt người thấy được sự liên tục của ảnh. Việc lựa chọn khoảng cách thích hợp
tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân bố theo trục
x và y trong không gian hai chiều.
c) Mức xám (gray level):
Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số
tại điểm đó. Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256. Mức
256 là mức phổ dụng. Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu
diễn mức xám: Mức xám dùng 1byte biểu diễn: 2
8
=256 mức, tức là từ 0 đến 255
mức.
d) Ảnh đen trắng:
Ảnh đen trắng là ảnh chỉ có màu đen và màu trắng. Người ta phân mức
đen trắng đó thành L mức. Nếu sử dụng số bit B=8 bít để mã hóa mức đen trắng
(hay mức xám) thì L được xác định : L=2
B
.
Nếu L bằng 2, B=1, nghĩa là chỉ có 2 mức: mức 1 ứng với màu sáng, mức

Hình 4 : Ảnh đa mức xám
g)Ảnh màu:
Ảnh màu là ảnh được tổ hợp từ 3 màu cơ bản là đỏ(R), xanh lục(G), xanh
lơ (B). Để tiết kiệm bộ nhớ với những ảnh có số lượng màu nhỏ hơn hoặc bằng
256 màu thì màu của các điểm ảnh được lưu trữu dưới dạng bảng màu. Với
những ảnh có số màu lớn thì các điểm ảnh không tổ chức dưới dạng bảng màu,
khi đó giá trị của các điểm ảnh chính là giá trị của các thành phần màu R, G, B.
Trong khuôn khổ lý thuyết ba màu R, G, B để tạo nên thế giới màu, người ta
thường dùng 3 byte để mô tả mức màu, khi đó các giá trị màu: 2
8*3
=2
24
≈ 16,7
triệu.
Sinh viên thực hiện: Đinh Thị Ánh Trang 9
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
Hình 5 : Ảnh màu
Sinh viên thực hiện: Đinh Thị Ánh Trang 10
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
II. THUẬT TOÁN ISODATA
1. Phân đoạn ảnh:
Phân đoạn ảnh là bước then chốt trong xử lý ảnh. Giai đoạn này nhằm
phân tích ảnh thành những thành phần có cùng tính chất nào đó dựa theo biên
hay các vùng liên thông. Mỗi vùng gồm một nhóm pixel liên thông và đồng nhất
theo một tiêu chuẩn nào đó. Tiêu chuẩn này phụ thuộc vào mục tiêu của quá
trình phân đoạn. Ví dụ như cùng mức xám, cùng màu, hay cùng độ nhám
Trước hết chúng ta cần làm rõ các khái niệm “vùng ảnh ” (Segment) và đặc
điểm vật lý của vùng.
Vùng ảnh là một chi tiết, một thực thể trong toàn ảnh. Nó là một tập hợp
các điểm có cùng hoặc gần cùng một tính chất nào đó: mức xám,mức màu, độ

Phương pháp phân đoạn ảnh theo ngưỡng là việc phân các phần tử có
chung một số thuộc tính nào đó theo các tiêu chuẩn về thuộc tính.
Việc chọn ngưỡng trong kỹ thuật này là một bước vô cùng quan trọng,
thông thường người ta tiến hành theo các bước chung như sau:
 Xem xét lược đồ xám của ảnh để xác định các đỉnh và các khe. Nếu
ảnh có dạng rắn lượn (nhiều đỉnh và khe), các khe có thể dùng để
chọn ngưỡng.
 Chọn ngưỡng T sao cho một phần xác định trước η của toàn bộ số
mẫu là thấp hơn T.
 Điều chỉnh ngưỡng dựa trên lược đồ xám của các điểm lân cận.
 Chọn ngưỡng theo lược đồ xám của những điểm thỏa mãn tiêu chuẩn
chọn.
Để hiểu rõ hơn nguyên tắc phân vùng dựa vào ngưỡng biên độ, xét thí dụ sau:
Hình 6: Lược đồ rắn lượn và cách chọn ngưỡng
Sinh viên thực hiện: Đinh Thị Ánh Trang 12
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
Giả sử ảnh có lược đồ xám như hình trên ta chọn được các ngưỡng là: T0,
T1, T2, T3, T4. Ta có 5 ngưỡng và phân ảnh thành 4 vùng, ký hiệu C
k
là vùng
thứ k của ảnh với k=1,2,3,4. Cách phân vùng theo nguyên tắc :
P(m,n)

C
k
nếu T
k-1
≤ P(m,n) < T
k
, k=1,2,3,4.

0
 Bước 3:
Sau đó tính độ sáng trung bình của 2 vùng ảnh:
+ m
f,0
là độ sáng của những điểm ảnh thuộc đối tượng
+ m
b,0
là độ sáng của những điểm ảnh nền.
Kiểm tra T
0
có bằng (m
f,0
+ m
b,0
)/2 không?
+ Nếu đúng: Thuật toán kết thúc
Sinh viên thực hiện: Đinh Thị Ánh Trang 13
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
(tức là ngưỡng T
0
lúc này là ngưỡng đúng và ta phân ảnh thành 2
vùng dựa vào ngưỡng T
0
này)
+ Nếu sai: gán T
0
= (m
f,0
+ m

int tong1, tong2;
int n1, n2; n1 = n2 = 1;
int M = bm.Width;
int N = bm.Height;
int [,] X;
//Đọc ảnh đầu vào và lưu vào mảng X:
X = new int[M, N];
for (i = 0; i < 255; i++)
Sinh viên thực hiện: Đinh Thị Ánh Trang 15
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
for (j = 0; j < bm.Height - 1; j++)
{
for (i = 0; i < bm.Width - 1; i++)
{
c = bm.GetPixel(i, j);
m = (int)(c.R * 0.287 + c.G * 0.599 + c.B
* 0.114);
X[i, j] = m;
}
}
//Gán giá trị khởi tạo cho tong1, tong2
if (X[0, 0] < T0)
{
tong1 = X[0, 0];
tong2 = 0;
}
else
{
tong1 = 0;
tong2 = X[0, 0];

if (X[i, j] > T0)
bm.SetPixel(i, j, Color.FromArgb(0, 0, 0));
else bm.SetPixel(i, j, Color.FromArgb(255,
255, 255));
}
}
return bm;
}
}
}
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
Sinh viên thực hiện: Đinh Thị Ánh Trang 17
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Diagnostics;
namespace thuattoanisodata
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

panhdich.Image.Save(sfd.FileName, ImageFormat.Bmp);
}
}
}
}
Sinh viên thực hiện: Đinh Thị Ánh Trang 19
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
Kết quả của chương trình với giá trị ngưỡng T0 = 24.
Sinh viên thực hiện: Đinh Thị Ánh Trang 20
Đồ án Kỹ thuật lập trình GVHD: Bùi Thị Thảo
KẾT LUẬN

Trong quá trình thực hiện đồ án này, em đã hiểu thêm về môn Xử lý ảnh,
với những kiến thức đầy đủ về thuật toán ISODATA xác định ngưỡng để phân
đoạn ảnh cũng như có cơ hội tìm hiểu thêm về Ngôn ngữ lập trình C#.
Khi làm đồ án này em đã cố gắng hết sức, song với khoảng thời gian
không nhiều và khả năng của em còn nhiều hạn chế nhưng nhờ sự giúp đỡ tận
tình của cô Bùi Thị Thảo em đã hoàn thành đồ án của mình đúng thời gian quy
định.Tuy nhiên, trong quá trình làm bài, vẫn có nhiều sai sót rất mong nhận
được sự góp ý của cô và các thầy cô giáo khác trong khoa để đồ án của em được
hoàn thiện hơn.
Em xin chân thành cảm ơn!
Sinh viên thực hiện: Đinh Thị Ánh Trang 21


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status