Tải bản đầy đủ (.doc) (71 trang)

nhận dạng mặt người dùng svm và mạng nơron

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.03 MB, 71 trang )

ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
Chương 1
GIỚI THIỆU
1.Giới thiệu chung
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một ngành
khoa học khá mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát
triển của nó rất nhanh; kích thích các trung tâm nghiên cứu, ứng dụng, đặc
biệt là máy tính chuyên dụng riêng của nó.
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất
lượng ảnh và phân tích ảnh. Ứng dụng đầu tiên được biết đến là việc nâng cao
chất lượng hình ảnh báo truyền qua giữa đường cáp London và NewYork vào
năm 1920. Tuy nhiên việc xử lý, nâng cao chất lượng ảnh ban đầu còn rất sơ
khai, chỉ đơn giản là xử lý phân bố các mức sáng (Mức xám và độ phân giải
của ảnh).
Việc nâng cao chất lượng ảnh được phát triển vào khoảng những năm 1955.
Điều này có thể giải thích được vì sau thế chiến thứ hai, máy tính phát triển
nhanh tạo điều kiện cho quá trình xử lý ảnh số thuận lợi.
Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ mặt
trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh.
Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng
ảnh phát triển không ngừng. Các phương pháp tri thức nhân tạo như mạng
neural nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh
ngày càng được áp dụng rộng rãi và thu nhiều kết quả khả quan.
Trong y học, các thuật toán máy tính nâng cao độ tương phản, hoặc mã hóa
các mức sáng thành các màu để nội suy ảnh X-quang và các ảnh y sinh học
dễ dàng. Các nhà địa vật lý dùng kỹ thuật tương tự để nghiên cứu các mẫu vật
chất từ ảnh vệ tinh. Trong thiên văn học, các phương pháp xử lý ảnh nhằm
khôi phục ảnh bị nhiễu hoặc bị mất do bóng sau khi chụp. Trong vật lý, người
ta dùng kỹ thuật xử lý ảnh để nâng cao chất lượng ảnh trong các lĩnh vực như
SV: TRẦN NGỌC TRÍ 1 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH


plasmas và microscopy điện tử. Ngoài ra, xử lý ảnh còn xử dụng rộng rãi
trong viễn thám, sinh học, y tế, hạt nhân, quân sự, công nghiệp,…
Những vấn đề cơ bản của kỹ thuật xử lý ảnh được ứng dụng nhiều trong thực
tế có thể kể đến như: tự động nhận dạng đặc trưng, máy nhìn công nghiệp để
điều khiển và kiểm tra sản phẩm, nhận dạng mục tiêu quân sự, nhận dạng vân
tay, hiển thị lên màn hình ảnh X-quang và các mẫu máu, xử lý ảnh chụp từ vệ
tinh để dự báo thời tiết, nén ảnh để lưu trữ và truyền dữ liệu trong truyền hình
Một trong những ứng dụng của xử lý ảnh là nhận dạng mặt người. Lĩnh vực
này ngày càng thu hút sự quan tâm của nhiều nhà khoa học. Trên thế giới lĩnh
vực này đã được nghiên cứu từ lâu song ở Việt Nam đây là một lĩnh vực mới,
tài liệu còn rất hạn chế.
2. Giới thiệu đề tài
Từ khi sinh ra, con người đã có khả năng nhận diện và phân biệt các khuôn
mặt. Tuy nhiên, việc xây dựng các thuật toán nhận dạng mặt người ứng dụng
trên các hệ thống tự động rất khó bởi vì gương mặt người rất phức tạp, nhiều
chiều và nhiều trạng thái cảm xúc phức tạp…
Góp phần tìm hiểu vấn đề này tôi thực hiện đề tài “ Nhận dạng mặt người
bằng ICA”
Do tính phức tạp của việc nhận dạng mặt người nên đề tài này chỉ sử dụng
các ảnh mặt người (Các thành phần phụ được lược bỏ bớt ).
Phương pháp nhận dạng được sử dụng dựa vào thuật toán ICA ( Independent
Component Analysis - Phân tích thành phần độc lập).
ICA là một lý thuyết mới được giới thiệu vào thập kỷ 80 trong phạm vi mô
hình mạng neural. Thập kỷ 90, một số nhóm các nhà nghiên cứu đưa ra thêm
các thuật toán có tính khả thi cao gây ấn tượng sâu sắc trong việc giải quyết
vấn đề bài toán Cocktail-party. Do đó ICA bắt đầu được ứng dụng rộng rãi
trong các lĩnh vực như thống kê và xử lý số liệu… Cụ thể như: xử lý tín hiệu
sinh học, phân tách tín hiệu âm thanh truyền thông, chuẩn đoán lỗi, trích đặc
trưng, phân tích kế toán, và nhiều ứng dụng khác đang được nghiên cứu phát
triển.

SV: TRẦN NGỌC TRÍ 2 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
3. Một số kết quả đạt được về nhận dạng mặt người
Cho đến nay, thế giới vẫn đang tiến hành nghiên cứu về nhận dạng mặt người
với độ mong muốn đạt được độ chính xác cao nhất cho hệ thống nhận dạng,
đạt được độ tin cậy tốt nhất để đưa hệ thống đi vào hoạt động thực tiễn. Tuy
nhiên nhình chung kết quả đạt được cũng chỉ ở độ chính xác trên dưới 90%.
Chương 2
MATLAB và XỬ LÝ ẢNH
SV: TRẦN NGỌC TRÍ 3 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
1. Giới thiệu chung về matlab
MATLAB có nguồn gốc từ chữ matrix laboratory, được Cleve Moler phát
minh vào cuối thập niên 1970, là chủ nhiệm khoa máy tính tại Đại học New
Mexico, là ngôn ngữ máy tính dùng để tính toán kỹ thuật.
Trải qua nhiều phiên bản, năm 2004 MATLAB 7 phát hành, có khả năng
chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và
phát triển thuật toán tương tác.
Ban đầu MATLAB được lập ra để giải quyết các phép toán trên ma trận,
chính điều này làm cho MATLAB có ứng dụng rất lớn trong nhiều ngành kỹ
thuật khác nhau so với các ngôn ngữ lập trình khác tính toán trên số vô
hướng. MATLAB kết hợp tính toán và lập trình đồ họa trong môi trường phát
triển tương tác, thời gian lập trình chỉ bằng một phần nhỏ so với các ngôn ngữ
lập trình khác nhờ vào các hàm có sẵn. MATLAB là sản phẩm của công ty
The Mathworks Inc. với địa chỉ www.mathworks.com và sử dụng MATLAB
phải có bản quyền. Tuy nhiên có rất nhiều hàm MATLAB được viết bởi
người sử dụng và phổ biến trên mạng giúp MATLAB ngày càng phong phú
hơn.
1.1. Các đặc điểm cơ bản của MATLAB
Là ngôn ngữ bậc cao dùng cho các tính toán kỹ thuật.

Là môi trường phát triển để quản lý dữ liệu.
Gồm nhiều công cụ tương tác cho việc khai thác và xử lý dữ liệu, thiết kế
và giải quyết vấn đề.
Các hàm đồ thị đối với ảnh 2 hoặc 3 chiều cho phép hình ảnh hóa dữ liệu.
Chứa các công cụ để xây dựng các giao diện đồ thị của người sử dụng.
Gồm nhiều hàm chức năng dựa trên các giải thuật cơ sở nhằm tích hợp
MATAB với các ứng dụng và ngôn ngữ lập trình khác như: C, C++,
Fortran, Java, Microsoft excel…
1.2. Phát triển giải thuật và ứng dụng
SV: TRẦN NGỌC TRÍ 4 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
MATLAB là một ngôn ngữ bậc cao được tích hợp các công cụ phát triển
giúp người sử dụng phát triển và phân tích các giải thuật và ứng dụng một
cách nhanh chóng.
Ngôn ngữ lập trình MATLAB hỗ trợ các phép toán đối với ma trận và
vector cơ sở cho các vấn đề kỹ thuật và khoa học.
Việc lập trình và phát triển giải thuật trong MATLAB có tốc độ nhanh
hơn so với các ngôn ngữ lập trình truyền thống do MATLAB bỏ qua các
công việc điều khiển bậc thấp như khai báo biến, khai báo mẫu dữ liệu và
xác định vùng nhớ. Trong nhiều trường hợp, MATLAB còn bỏ qua cả sự
cần thiết của các vòng lặp “for”. Kết quả là, một dòng lệnh được viết
trong MATLAB có thể tương đương với nhiều dòng lệnh trong C hay C+
+.
Là một công cụ lập trình mạnh, MATLAB vẫn hỗ trợ những đặc tính của
một ngôn ngữ lập trình truyền thống như: toán tử số học, cấu trúc vòng,
các cấu trúc và dạng dữ liệu cùng đặc tính gỡ rối.
VD: Chương trình biểu diễn thuật toán điều chế tín hiệu truyền thông tạo
ra 1024 điểm, thực hiện điều chế, thêm nhiễu phức Gauss và vẽ lại kết
quả.
% tạo một vector N bit

N = 1024;
bits = rand(N,1)>0.5;
% chuyen sang ky tu
Tx=1-2*bits;
%them vao nhieu Gauss trang
P=0.4
Nz=P*(randn(N,1)+i*randn(N,1));
Rx= Tx + Nz;
%hien thi ket qua
plot(Rx,'.');
axix([-2 2 -2 2]);
axis square, grid;
SV: TRẦN NGỌC TRÍ 5 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
Hình 1.1
Trong khi đối với phần lớn các ngôn ngữ lập trình truyền thống phải trải
qua giai đoạn dịch (compilation) và liên kết (linking) thì MATLAB cho
phép người sử dụng có thể thực thi ngay các lệnh hoặc nhóm lệnh cùng
lúc. Điều này làm cho tốc độ xử lý trên MATLAB nhanh hơn đáng kể so
với trên các ngôn ngữ truyền thống.
1.3. Phân tích và tiếp cận dữ liệu
Trong quá trình phân tích dữ liệu, MATLAB hỗ trợ hầu hết các công đoạn
như: thu nhận dữ liệu từ thiết bị ngoại vi, các phân tích số học, tiền xử lý,
hình ảnh hóa…
Phân tích dữ liệu: Chương trình MATLAB cung cấp các công cụ tương
tác cũng như các hàm điều khiển theo dòng cho việc tính toán trong phân
tích dữ liệu bao gồm:
 Các phép nội suy
 Trích chọn tính chất
 Chọn ngưỡng và lọc nhiễu

 Tương quan, phân tích Fourier và lọc
 Phát hiện các điểm đỉnh, đáy và điểm không
 Thống kê cơ bản và chuẩn hóa các đường cong
 Phân tích ma trận
SV: TRẦN NGỌC TRÍ 6 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
1.4. Tiếp cận dữ liệu
Việc tiếp cận dữ liệu từ các thư mục, ứng dụng, cơ sở dữ liệu và thiết bị
ngoại vi bởi MATLAB là hết sức dễ dàng. MATLAB hỗ trợ nhiều loại
định dạng file: ASCII, nhị phân, các file hình ảnh và âm thanh hay thậm
chí các file định dạng HDF.
Trong MATLAB có nhiều hộp công cụ (toolbox) hỗ trợ cho việc tiếp cận
dữ liệu như: hộp công cụ cơ sở dữ liệu (Database Toolbox), hộp công cụ
thu nhận dữ liệu (Data Acquisition Toolbox) hay hộp công cụ điều khiển
thiết bị (Instrument Control Toolbox).
1.5. Hình ảnh hóa dữ liệu
Tất cả các đặc tính về hình ảnh cần thiết cho hình ảnh hóa các dữ liệu
khoa học kỹ thuật đều được tích hợp trong MATLAB. Những đặc tính này
bao gồm: các hàm vẽ ảnh 2 và 3 chiều, các hàm vẽ thể tích 3 chiều, các
công cụ tương tác tạo ảnh, khả năng xuất kết quả dưới các dạng file ảnh
thông thường.
VD: vẽ hàm y= sin(x) với -pi < x < pi
Mã chương trình:
>>x = -pi:.1:pi;
>>y = sin(x);
>> plot (x, y)
Hình 1.2 Đồ thị hàm y = sin(x)
SV: TRẦN NGỌC TRÍ 7 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
1.6. Xuất kết quả và triển khai ứng dụng

MATLAB đưa ra nhiều đặc tính giúp báo cáo và chia sẻ công việc. Các
đoạn code viết trên MATLAB có thể được tích hợp với các ngôn ngữ và
ứng dụng khác. Đồng thời cũng có thể triển khai các thuật toán cũng như
ứng dụng của nó như một chương trình hoặc các khối phần mềm riêng
biệt.
Xuất kết quả:
Sau khi hoàn thành công việc, người sử dụng cần xuất kết quả ra
thường là dưới dạng hình ảnh hoặc báo cáo. MATLAB có hỗ trợ file
hình ảnh với nhiều định dạng khác do đó việc xuất kết quả dưới dạng
đồ thị hay file ảnh là hết sức dễ dàng. Ngoài ra, nếu muốn thì cũng có
thể chuyển code từ MATLAB ra các dạng khác: HTML, Word,
Latex…
Kết hợp mã MATLAB với các loại ngôn ngữ và ứng dụng khác:
MATLAB cung cấp sẵn các hàm cho việc kết hợp mã của các ngôn
ngữ lập trình khác như C, C++, Fortran hay Java với mã chương trình
của nó. Sử dụng thư viện công cụ (engine library) của MATLAB,
người sử dụng có thể gọi các đoạn mã từ C, C++ hay Fortran.
Triển khai ứng dụng:
Các sản phẩm sau khi xử lý bằng MATLAB thường là các đoạn mã.
Các đoạn mã này có thể được cung cấp cho những người khác hoặc
ứng dụng vào các sản phẩm phần cứng hoặc phần mềm cụ thể.
2. Xử lý ảnh (số) và các khái niệm liên quan
2.1. Xử lý ảnh (số)
Xử lý ảnh (số) là một dạng của xử lý tín hiệu trong đó đầu vào là một hình
ảnh (các bức ảnh, các khung hình) và đầu ra của quá trình xử lý ảnh có thể
là một hình ảnh khác hoặc là một tập chứa các tính chất hoặc tham số liên
quan tới hình ảnh đó. Phần lớn các kỹ thuật xử lý ảnh thường quy về việc
SV: TRẦN NGỌC TRÍ 8 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
xử lý hình ảnh như là một tín hiệu hai chiều rồi sử dụng các kỹ thuật xử lý

tín hiệu để xử lý nó.
Hình dưới đây mô tả các bước cơ bản trong xử lý ảnh
Hình 1.3 Các bước cơ bản trong xử lý ảnh
2.1.1. Phần thu nhận ảnh (Image Acquisition)
Ảnh có thể nhận qua camera màu hoặc đen trắng. Thường ảnh nhận
qua camera là ảnh tương tự cũng có loại camera đã số hoá.
Camera thường dùng là loại quét dòng; ảnh tạo ra có dạng hai chiều.
Chất lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi
trường (ánh sáng, phong cảnh).
Do ảnh đầu ra của các thiết bị thu nhận ảnh có thể là ảnh số hay ảnh
tương tự nên ta cần chuẩn hóa chúng về ảnh số để tiện sử lý. Tiếp theo
ảnh được mã hóa và lưu lại trước khi vào quá trình tiền sử lý. Đây là
quá trình định dạng cho ảnh. Quá trình này phải đảm bảo cho các
thông tin quan trọng của ảnh như cấu trúc, kích thước, màu sắc…
không bị sai lệch so với ảnh gốc. Lúc này ảnh có thể được xử lý trên
máy tính dưới dạng số. Tùy thuộc vào các tiêu chuẩn khác nhau chúng
ta có các cách định dạng khác nhau.
Dưới đây là một số định dạng:
Ảnh Bitmap – Microsoft Windows Bitmap (*.bmp): Ảnh Bitmap
là ảnh được định dạng theo chuẩn của Microsoft đưa ra. Với định
dạng này ảnh chỉ đươc chuyển mã và lưu lại đầy đủ các thông tin.
Tuy nhiên định dạng này các thông tin của ảnh không được nén lại
SV: TRẦN NGỌC TRÍ 9 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
nên dung lượng thường rất lớn. Dung lượng tập tin Bitmap phụ
thuộc nhiều vào số lượng màu sắc của ảnh.
Ảnh GIF – Graphic Interchanger Format (*.gif): Ảnh Gif là ảnh
được định dạng theo chuẩn nén LZW dựa trên sự lặp lại của một số
nhóm điểm ảnh thay vì các mã loạt dài như các định dạng khác nên
dung lượng lưu trữ nhỏ hơn. Ảnh gif thường được dùng để lưu trữ

các ảnh đơn giản và có ít sự chuyển đổi màu giữa các vùng ảnh
như ảnh đồ họa hay đồ thị, biểu đồ…Tuy nhiên định dạng này cho
chất lượng ảnh cao, độ phân giải cao, có thể hiển thị trên hầu hết
các phần mềm đồ họa.
Ảnh JPEG – Joint Photographic Expert Group ( *.JPEG hay
*.JPG): Ảnh JPEG là chuẩn nén ảnh tĩnh có mất mát, thường được
dùng để lưu các ảnh màu hoặc các ảnh đa mức xám khi không có
yêu cầu cao về ảnh giải nén phải gần giống ảnh gốc. Dung lượng
ảnh Jpeg thường rất nhỏ, người dùng có thể chủ động định dung
lượng của ảnh bằng cách chọn tỉ lệ nén nhiều hay nén ít. Ảnh lưu
với định dạng Jpg có thể lưu được 24 bits/picxel dữ liệu màu
( tương đương 16 triệu màu).
2.1.2. Tiền xử lý (Image Processing)
Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào
bộ tiền xử lý để nâng cao chất lượng. Chức năng chính của bộ tiền xử
lý là lọc nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn. Như
vậy tiền xử lý ảnh là một phép biến đổi ảnh nhưng đảm bảo các thông
tin quan trọng của ảnh vẫn được lưu giữ như ảnh gốc ban đầu, đồng
thời làm nổi bật một số đặc tính của ảnh. Tiền xử lý ảnh không phải là
làm tăng lượng thông tin vốn có trong ảnh mà làm nổi bậc các đặc tính
đã chọn, tạo tiền đề cho cho quá trình phân tích ảnh.
Tùy theo các ứng dụng cụ thể, quá trình tiền xử lý có thể bao gồm toàn
bộ các quá trình hay chỉ một phần. Một số bước tiền xử lý như: cân
bằng sáng tối, nâng cao độ tương phản, khử nhiễu…
SV: TRẦN NGỌC TRÍ 10 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
2.1.3. Phân đoạn (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. Đây là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ
gây lỗi, làm mất độ chính xác của ảnh. Kết quả nhận dạng ảnh phụ
thuộc rất nhiều vào công đoạn này.
2.1.4. Biểu diễn ảnh (Image Representation)
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã
phân đoạn) cộng với mã liên kết với các vùng lận cận. Việc biến đổi
các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo
bằng máy tính. Việc chọn các tính chất để thể hiện ảnh gọi là trích
chọn đặc trưng (Feature Selection) gắn với việc tách các đặc tính của
ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt
lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được.
Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các
đặc trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác.
2.1.5. Nhận dạng & nội suy ảnh (Image Recognition - Interpretation)
Nhận dạng ảnh là quá trình xác định ảnh. Quá trình này thường thu
được bằng cách so sánh với mẫu chuẩn đã được học (hoặc lưu) từ
trước. Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng.
Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể
được nội suy thành mã điện thoại.
Có nhiều cách phân loai ảnh khác nhau về ảnh. Theo lý thuyết về nhận
dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng
ảnh cơ bản:
Nhận dạng theo tham số.
SV: TRẦN NGỌC TRÍ 11 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
Nhận dạng theo cấu trúc.
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng
trong khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay,

chữ ký điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận
dạng mã vạch, nhận dạng mặt người…
2.1.6. Cơ sở tri thức (Knowledge Base)
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ
sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo
theo nhiễu. Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn
giản hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý, người
ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh theo cách
của con người. Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý
theo các phương pháp trí tuệ con người.
2.2. Các khái niệm liên quan
2.2.1. Điểm ảnh(Picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng.
Để xử lý bằng máy tính (số), ảnh cần phải được số hoá. Số hoá ảnh là
sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với
ảnh thật về vị trí (không gian) và độ sáng (mức xám). Khoảng cách
giữa điểm ảnh đó được thiết lập sao cho mắt người không phân biệt
được ranh giới giữa chúng. Mỗi một điểm như vậy gọi là điểm ảnh
(PEL: Picture Element) hay gọi tắt là Pixel. Trong khuôn khổ ảnh hai
chiều, mỗi Pixel ứng với cặp tọa độ (x,y).
Như vậy, điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x,y)
với độ xám hoặc màu nhất định. Kích thước và khoảng cách giữ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.
2.2.2. Độ phân giải của ảnh
SV: TRẦN NGỌC TRÍ 12 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định
trên một ảnh số được hiển thị.

Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao
cho mắt người vẫn 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
mỗi Pixel gồm một cặp toạ độ (x,y) và màu. Độ phân giải của ảnh
chính là tích số của giá trị lớn nhất của x với giá trị lớn nhất của y.
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic
Adaptor) là một lưới điểm theo chiều ngang màn hình: 320 điểm chiều
dọc * 200 điểm ảnh (320*200). Rõ ràng, cùng màn hình CGA 12” ta
nhận thấy mịn hơn màn hình CGA 17” độ phân giải 320*200. Lý do:
cùng một mật độ (độ phân giải) nhưng diện tích màn hình rộng hơn thì
độ mịn (liên tục của các điểm) kém hơn
2.2.3. Mức xám (Gray level)
Mức xám là kết quả sự mã hoá tương ứng một cường độ sáng của mỗi
điểm ảnh với một giá trị số – kết quả của quá trình lượng tử hoá.
Các thang giá trị mức xám thông thường: 16,32,64,128,256. Trong đó
mức 256 được dùng rất phổ biến do máy tính dùng 1 byte (8 bit) để
biểu diễn mức xám, mà mức xám lại dùng 1 byte để biểu diễn: 2
8
=256
mức, tức là từ mức 0 đến mức 255.
Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác )
với mức xám ở các điểm ảnh có thể khác nhau.
Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt tức dùng 1 bit mô
tả 2 mức khác nhau hay mỗi điểm ảnh nhị phân chi có 1 trong 2 giá trị
hoặc là 0 hoặc là 1.
Ảnh màu: với mỗi điểm ảnh thì người ta dung 3 byte để mô tả mức
màu (do thế giới màu được tạo nên từ 3 màu cơ bản: đỏ (red), lục
(blue) và lơ (green)). Do đó có 28*3 =224=16,7 triệu màu.
SV: TRẦN NGỌC TRÍ 13 MSSV: 05031811

ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
2.2.4. Nhận dạng ảnh (recognition and classification of image
partterns)
Khi một bức ảnh đã được phân đoạn, nhiệm vụ tiếp theo là nhận dạng
vật thể hoặc vùng đã được phân đoạn. Mỗi một vật thể là một thành
phần ở trong ảnh và các giá trị đo được là các đặc tính của thành phần
đó. Một tập các vật thể cùng có các đặc tính giống nhau được gọi là
một “lớp vật thể” (pattern class).
Theo đó có thể định nghĩa, nhận dạng là quá trình phân loại các đối
tượng được biểu diễn theo một mô hình nào đó và gán cho chúng vào
một lớp (gán cho đối tượng một tên gọi) dựa theo những quy luật và
các mẫu chuẩn.
Sự nhận dạng ảnh thường dựa trên nhiều tính chất của vật và với mỗi
tính chất đều có các kỹ thuật nhận dạng khác nhau.
VD: Mỗi chữ cái trong tiếng Anh đều là một tập các đường thẳng
đứng, ngang, chéo hoặc cong. Trong khi chữ “A” được mô tả bởi 2
đường chéo và một đường nằm ngang thì chữ “B” được mô tả bởi một
đường thẳng đứng với 2 đoạn cong. Một số tính chất của các vật thể 2
hoặc 3 chiều là diện tích, thể tích, chu vi, bề mặt,… có thể đo được
thông qua việc tính toán số “pixel”. Tương tự như vậy, bang của một
vật được đặc trưng bởi đường biên của nó. Một số tham số để xác định
bang của một vật là các mô-ment bất biến (invariant moment), đường
trung bình (medial axis) của vật thể …
Màu của một vật cũng là đặc điểm hết sức quan trọng được dùng trong
nhận dạng. Kỹ thuật dùng để phát hiện các đặc tính của vật thể gọi là
kỹ thuật trích chọn đặc tính (feature extraction). Khi đó vật thể được
miêu tả như một tập các đặc tính. Sự lựa chọn và tách lấy các tính chất
thích hợp được coi như là vấn đề cơ bản đầu tiên trong nhận dạng ảnh.
a. Phương pháp phân loại dựa trên việc thu nhận có giám sát
(supervised learning).

SV: TRẦN NGỌC TRÍ 14 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
b. Phương pháp phân loại sử dụng các kỹ thuật không cần giám sát
(nonsupervised learning).
Các giải thuật phân loại có giám sát có thể được phân thành các loại
nhỏ hơn:
* Phân loại dựa vào tham số (Parametric classifiers)
* Phân loại không cần tham số (Nonparametric classifiers)
Đối với phân loại có giám sát dựa trên tham số, thiết bị phân loại lấy
mẫu với một tập gồm nhiều mẫu thành phần xác định nhằm tính toán
các thông số thống kê của mỗi loại thành phần như: trung bình số học,
công sai…
Các giải thuật không cần giám sát thường được sử dụng trong các bộ
phân loại theo khoảng cách nhỏ nhất (minimum distance classifer) và
bộ phân loại tương đồng lớn nhất (maximum likelihood classifier).
Ngược lại, một số thông số không được quan tâm trong phương pháp
phân loại có giám sát không cần tham số. Một số kỹ thuật của loại này
là: K điểm lân cận gần nhất (K-nearest neighbors), cửa sổ Parzen
(Parzen window)…
Đối với các phương pháp phân loại không cần giám sát, bộ phân loại
sẽ chia toàn bộ tập thông tin dựa trên một số tiêu chuẩn tương đồng.
Điều này cho kết quả là một tập các thành phần trong đó mỗi thành
phần thuộc về một lớp cụ thể nào đó.
3. Matlab và xử lý ảnh
Các kiểu ảnh , các thao tác ảnh cơ bản trong Toolbox [3]
3.1. Ảnh được định chỉ số ( Indexed Images )
Một ảnh chỉ số bao gồm một ma trận dữ liệu X và ma trận bản đồ màu
map. Ma trận dữ liệu có thể có kiểu thuộc lớp uint8, uint16 hoặc kiểu
double. Ma trận bản đồ màu là một mảng mx3 kiểu double bao gồm các
giá trị dấu phẩy động nằm giữa 0 và 1. Mỗi hàng của bản đồ chỉ ra các giá

trị mà : red, green và blue của một màu đơn. Một ảnh chỉ số sử dụng ánh
SV: TRẦN NGỌC TRÍ 15 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
xạ trực tiếp giữa giá trị của pixel ảnh tới giá trị trong bản đồ màu . Màu
sắc của mỗi pixel ảnh được tính toán bằng cách sử dụng giá trị tương ứng
của X ánh xạ tới một giá trị chỉ số của map. Giá trị 1 chỉ ra hàng đầu tiên,
giá trị 2 chỉ ra hàng thứ hai trong bản đồ màu …
Một bản đồ màu thường được chứa cùng với ảnh chỉ số và được tự động
nạp cùng với ảnh khi sử dụng hàm imread để đọc ảnh.Tuy nhiên, ta
không bị giới hạn khi sử dụng bản đồ màu mặc định, ta có thể sử dụng
mất kì bản đồ màu nào .
Lớp và độ lệch của bản đồ màu ( Colormap Offsets )
Quan hệ giữa giá trị trong ma trận ảnh và giá trị trong bản đồ màu phụ
thuộc vào kiểu giá trị của các phần tử ma trận ảnh. Nếu các phần tử ma
trận ảnh thuộc kiểu double, giá trị 1 sẽ tương ứng với giá trị trong hàng
thứ nhất của bản đồ màu, giá trị 2 sẽ tương ứng với giá trị trong hàng
thứ 2 của bản đồ màu… Nếu các phần tử của ma trận ảnh thuộc kiểu
uint8 hay uint16 sẽ có một độ lệch (offset ) – giá trị 0 trong ma trận
ảnh sẽ tương ứng với giá trị trong hàng đầu tiên của bản đồ màu, giá trị
1 sẽ tương ứng với giá trị trong hàng thứ 2 của bản đồ màu ….
Độ lệch cũng được sử dụng trong việc định dạng file ảnh đồ hoạ để
tăng tối đa số lượng màu sắc có thể được trợ giúp .
Giới hạn trong việc trợ giúp ảnh thuộc lớp unit16
Toolbox xử lý ảnh của Matlab trợ giúp có giới hạn ảnh chỉ số thuộc
lớp uint16. Ta có thể đọc những ảnh đó và hiển thị chúng trong Matlab
nhưng trước khi xử lý chúng, ta phải chuyển đổi chúng sang kiểu uint8
hoặc double. Để chuyển đổi ( convert ) tới kiểu double ta dùng hàm
im2double. Để giảm số lượng màu của ảnh xuống 256 màu (uint8 ) sử
dụng hàm imapprox .
3.2 Ảnh cường độ ( Intensity Images )

Một ảnh cường độ là một ma trận dữ liệu ảnh I mà giá trị của nó đại diện
cho cường độ trong một số vùng nào đó của ảnh. Matlab chứa một ảnh
cường độ như một ma trận đơn, với mỗi phần tử của ma trận tương ứng
SV: TRẦN NGỌC TRÍ 16 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
với một pixel của ảnh. Ma trận có thể thuộc lớp double , uint8 hay uint16.
Trong khi ảnh cường độ hiếm khi được lưu với bản đồ màu, Matlab sử
dụng bản đồ màu để hiển thị chúng.
Những phần tử trong ma trận cường độ đại diện cho các cường độ khác
nhau hoặc độ xám. Những điểm có cường độ bằng 0 thường được đại diện
bằng màu đen và cường độ 1,255 hoặc 65535 thường đại diện cho cường
độ cao nhất hay màu trắng .
3.3. Ảnh nhị phân (Binary Images )
Trong một ảnh nhị phân, mỗi pixel chỉ có thể chứa một trong hai giá trị
nhị phân 0 hoặc 1. Hai giá trị này tương ứng với bật hoặc tắt ( on hoặc
off ). Một ảnh nhị phân được lưu trữ như một mảng logic của 0 và 1 .
3.4. Ảnh RGB ( RGB Images )
Một ảnh RGB - thường được gọi là true-color, được lưu trữ trong Matlab
dưới dạng một mảng dữ liệu có kích thước 3 chiều mxnx3 định nghĩa các
giá trị màu red, green và blue cho mỗi pixel riêng biệt. Ảnh RGB không
sử dụng palette. Màu của mỗi pixel được quyết định bởi sự kết hợp giữa
các giá trị R,G,B ( Red, Green , Blue ) được lưu trữ trong một mặt phẳng
màu tại vị trí của pixel. Định dạng file đồ hoạ lưu trữ ảnh RGB giống như
một ảnh 24 bit trong đó R,G,B chiếm tương ứng 8 bit một. Điều này cho
phép nhận được 16 triệu màu khác nhau .
Một mảng RGB có thể thuộc lớp double, uint8 hoặc uint16. Trong một
mảng RGB thuộc lớp double, mỗi thành phần màu có giá trị giữa 0 và 1 .
Một pixel mà thành phần màu của nó là (0,0,0) được hiển thị với màu đen
và một pixel mà thành phần màu là (1,1,1 ) được hiển thị với màu trắng .
Ba thành phần màu của mỗi pixel được lưu trữ cùng với chiều thứ 3 của

mảng dữ liệu. Chẳng hạn, giá trị màu R,G,B của pixel (10,5) được lưu trữ
trong RGB(10,5,1) , RGB(10,5,2) và RGB(10,5,3) tương ứng .
Để tính toán màu sắc của pixel tại hàng 2 và cột 3 chẳng hạn , ta nhìn vào
bộ ba giá trị được lưu trữ trong (2,3,1:3). Giả sử (2,3,1) chứa giá trị
SV: TRẦN NGỌC TRÍ 17 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
0.5176 ; (2,3,2) chứa giá trị 0.1608 và (2,3,3) chứa giá trị 0.0627 thì màu
sắc của pixel tại (2,3 ) sẽ là (0.5176,0.1608,0.0627)
Để minh hoạ xa hơn khái niệm ba mặt phẳng màu riêng biệt được sử dụng
trong một ảnh RGB, đoạn mã sau đây tạo một ảnh RGB đơn giản chứa
các vùng liên tục của R,G,B và sau đó tạo một ảnh cho mỗi mặt phẳng
riêng của nó ( R,G,B ). Nó hiển thị mỗi mặt phẳng màu riêng rẽ và cũng
hiển thị ảnh gốc .
RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB(:,:,3);
imshow(R)
figure, imshow(G)
figure, imshow(B)
figure, imshow(RGB)
Các mặt phẳng màu riêng rẽ của một ảnh RGB
Chú ý rằng mỗi mặt phẳng màu riêng rẽ chứa một khoảng trắng. Khoảng
trắng tương ứng với giá trị cao nhất của mỗi màu riêng rẽ. Chẳng hạn
trong ảnh mặt phẳng R, vùng trắng đại diện cho sự tập trung cao nhất của
màu đỏ thuần khiết. Nếu R được trộn với G hoặc B ta sẽ có màu xám.
Vùng màu đen trong ảnh chỉ ra giá trị của pixel mà không chứa màu đỏ
R=0. Tương tự cho các mặt phẳng màu G và B .
3.5. Các hàm chuyển đổi kiểu ảnh
Với các thao tác nhất định, sẽ thật hữu ích khi có thể chuyển đổi ảnh từ

dạng này sang dạng khác. Chẳng hạn, nếu ta muốn lọc một màu ảnh được
lưu trữ dưới dạng ảnh chỉ số, đầu tiên, ta nên chuyển đổi nó thành dạng
ảnh RGB. Khi ta áp dụng phép lọc tới ảnh RGB, Matlab sẽ lọc giá trị
cường độ trong ảnh tương ứng. Nếu ta cố gắng lọc ảnh chỉ số, Matlab đơn
giản chỉ áp đặt phép lọc tới ma trận ảnh chỉ số và kết quả sẽ không có ý
nghĩa.
SV: TRẦN NGỌC TRÍ 18 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
Chú ý : Khi convert một ảnh từ dạng này sang dạng khác, ảnh kết quả có
thể khác ảnh ban đầu. Chẳng hạn, nếu ta convert một ảnh màu chỉ số sang
một ảnh cường độ, kết quả ta sẽ thu được một ảnh đen trắng .
Danh sách sau đây sẽ liệt kê các hàm được sử dụng trong việc convert ảnh
:
dither : Tạo một ảnh nhị phân từ một ảnh cường độ đen trắng bằng
cách trộn, tạo một ảnh chỉ số từ một ảnh RGB bằng cách trộng
(dither ).
gray2id : Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng .
grayslice : Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng bằng
cách đặt ngưỡng.
im2bw : Tạo một ảnh nhị phân từ một ảnh cường độ , ảnh chỉ số hay
ảnh RGB trên cơ sở của ngưỡng ánh sáng .
ind2gray : Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.
ind2rgb : Tạo một ảnh RGB từ một ảnh chỉ số.
mat2gray : Tạo một ảnh cường độ đen trắng từ dữ liệu trong một ma
trận bằng cách lấy tỉ lệ giữ liệu.
rgb2gray : Tạo một ảnh cường độ đen trắng từ một ảnh RGB.
rgb2ind : Tạo một ảnh chỉ số từ một ảnh RGB.
Ta cũng có thể thực hiện các phép chuyển đổi kiểu chỉ sử dụng cú pháp
của Matlab. Chẳng hạn, ta có thể convert một ảnh cường độ sang ảnh
RGB bằng cách ghép nối 3 phần copy của ma trận ảnh gốc giữa 3 chiều :

RGB=cat(3,I,I,I );
Ảnh RGB thu được có các ma trận đồng nhất cho các mặt phẳng R,G,B vì
vậy ảnh hiển thị giống như bóng xám .
Thêm vào những công cụ chuyển đổi chuẩn đã nói ở trên, cũng có một số
hàm mà trả lại kiểu ảnh khác như một phần trong thao tác mà chúng thực
hiện .
SV: TRẦN NGỌC TRÍ 19 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
3.6. Chuyển đổi không gian màu
Toolbox xử lý ảnh biểu diễn màu sắc như các giá trị RGB ( trực tiếp trong
ảnh RGB hoặc gián tiếp trong ảnh chỉ số ). Tuy nhiên, có các phương
pháp khác cho việc biểu diễn màu sắc. Chẳng hạn, một màu có thể được
đại diện bởi các giá trị hue, saturation và các giá trị thành phần (HSV ) .
Các phương pháp khác cho việc biểu diễn màu được gọi là không gian
màu .
Toolbox cung cấp một tập các thủ tục để chuyển đổi giữa các không gian
màu. Các hàm xử lý ảnh tự chúng coi dữ liệu màu sắc dưới dạng RGB tuy
nhiên, ta có thể xử lý một ảnh mà sử dụng các không gian màu khác nhau
bằng cách chuyển đổi nó sang RGB sau đó chuyển đổi ảnh đã được xử lý
trở lại không gian màu ban đầu .
3.7. Đọc và ghi dữ liệu ảnh
Phần này sẽ giới thiệu cách đọc và ghi dữ liệu ảnh.
3.7.1. Đọc một ảnh đồ họa
Hàm imread đọc một ảnh từ bất kì định dạng nào được trợ giúp trong
bất kì chiều sâu bit nào được trợ giúp. Hầu hết các file ảnh sử dụng 8
bit để chứa giá trị của pixel. Khi chúng được đọc vào bộ nhớ, Matlab
chứa chúng dưới dạng uint8. Với các file trợ giúp 16 bit dữ liệu, PNG
và TIFF, Matlab chứa chúng dưới dạng uint16.
Chú ý : Với ảnh chỉ số, imread luôn luôn đọc bản đồ màu vào trong
một chuỗi thuộc lớp double, thậm chí mảng ảnh tự nó thuộc lớp uint8

hay uint16.
Chẳng hạn, đoạn mã sau sẽ đọc một ảnh RGB vào không gian làm việc
của Matlab lưu trong biến RGB.
RGB=imread(‘football.jpg’);
Trong ví dụ này, imread sẽ nhận ra định dạng file để sử dụng từ tên
file. Ta cũng có thể chỉ ra định dạng file như một tham số trong hàm
imread. Matlab trợ giúp rất nhiều định dạng đồ hoạ thông dụng chẳng
SV: TRẦN NGỌC TRÍ 20 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
hạn: BMP , GIF , JPEG , PNG , TIFF … Để biết thêm các kiểu gọi
hàm và tham số truyền vào, xem trợ giúp online của Matlab .
3.7.2. Đọc nhiều ảnh từ một file đồ hoạ
Matlab trợ giúp một số định dạng file đồ hoạ chẳng hạn như: HDF và
TIFF, chúng chứa nhiều ảnh. Theo mặc định, imread chỉ trợ giúp ảnh
đầu tiên trong file. Để nhập thêm các ảnh từ file, sử dụng cú pháp
được trợ giúp bởi định dạng file. Chẳng hạn, khi được sử dụng với
TIFF, ta có thể sử dụng một giá trị chỉ số với imread để chỉ ra ảnh mà
ta muốn nhập vào. Ví dụ sau đây đọc một chuối 27 ảnh từ một file
TIFF và lưu những ảnh này trong một mảng 4 chiều. Ta có thể sử dụng
hàm iminfo để xem bao nhiêu ảnh đã được lưu trữ trong file:
mri = uint8(zeros(128,128,1,27)); % preallocate 4-D array
for frame=1:27
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
end
Khi file chứa nhiều ảnh theo một số kiểu nhất định chẳng hạn theo thứ
tự thời gian, ta có thể lưu ảnh trong Matlab dưới dạng mảng 4 chiều.
Tất cả các ảnh phải có cùng kích thước .
3.7.3. Ghi một ảnh đồ hoạ
Hàm imwrite sẽ ghi một ảnh tới một file đồ hoạ dưới một trong các
định dạng được trợ giúp. Cấu trúc cơ bản nhất của imwrite sẽ yêu cầu

một biến ảnh và tên file. Nếu ta gộp một phần mở rộng trong tên file,
Matlab sẽ nhận ra định dạng mong muốn từ nó. Ví dụ sau tải một ảnh
chỉ số X từ một file Mat với bản đồ màu kết hợp với nó map sau đó
ghi ảnh xuống một file bitmap .
load clown
whos
Name Size Bytes Class
X 200x320 512000 double array
SV: TRẦN NGỌC TRÍ 21 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
caption 2x1 4 char array
map 81x3 1944 double array
Grand total is 64245 elements using 513948 bytes
imwrite(X,map,'clown.bmp')
Chỉ ra định dạng phụ - Tham số đặc biệt
Khi sử dụng imwrite với một số định dạng đồ hoạ , ta có thể chỉ ra các
tham số phụ. Chẳng hạn, với định dạng PNG ta có thể chỉ ra độ sâu bit
như một tham số phụ. Ví dụ sau sẽ chi một ảnh cường độ I với một file
ảnh 4 bit PNG
imwrite(I,'clown.png','BitDepth',4 );
Để biết thêm các cấu trúc khác của hàm xem phần trợ giúp trực tuyến
của Matlab .
Đọc và ghi ảnh nhị phân theo định dạng 1 bit
Trong một số định dạng file, một ảnh nhị phân có thể được lưu trong
một định dạng 1 bit. Nếu định dạng file trợ giúp nó,Matlab ghi ảnh nhị
phân như ảnh 1 bit theo mặc định. Khi ta đọc một ảnh nhị phân với
định dạng 1 bit, Matlab đại diện nó trong không gian làm việc như một
mảng logic .
Ví dụ sau đọc một ảnh nhị phân và ghi nó dưới dạng file TIFF . Bởi vì
định dạng TIFF trợ giúp ảnh 1 bit, file được ghi lên đĩa theo định dạng

1 bit :
BW = imread('text.png');
imwrite(BW,'test.tif');
Để kiểm tra chiều sâu bit của file test.tif, gọi hàm iminfo và kiểm tra
trường BitDepth của nó :
info = imfinfo('test.tif');
info.BitDepth
ans =
SV: TRẦN NGỌC TRÍ 22 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
1
Chú ý : Khi ghi file nhị phân , Matlab thiết lập trường ColorType
thành ‘grayscale’
Xem lớp lưu trữ của file
Hàm imwrite sử dụng luật sau đây để quyết định lớp lưu trữ được sử
dụng trong ảnh kết quả :
logical : Nếu định dạng ảnh ra ( Output Image ) được chỉ rõ là trợ
giúp ảnh 1 bit , hàm imwrite tạo một file ảnh 1 bit . Nếu định dạng
ảnh ra được chỉ rõ là không trợ giúp ảnh 1 bit ( như JPEG ) , hàm
imwrite chuyển ảnh tới một ảnh thuộc lớp uint8
uint8 : Nếu định dạng ảnh ra được chỉ rõ là trợ giúp ảnh 8 bit , hàm
imwrite tạo một ảnh 8 bit
uint16 : Nếu định dạng ảnh ra được chỉ rõ trợ giúp ảnh 16 bit
( PNG hoặc TIFF ), hàm imwrite tạo một ảnh 16 bit . Nếu định
dạng ảnh ra không trợ giúp ảnh 16 bit, hàm chuyển đổi dữ liệu ảnh
tới lớp uint8 và tạo một ảnh 8 bit .
double : Matlab chuyển dữ liệu ảnh tới dạng uint8 và tạo một ảnh 8
bit bởi vì hầu hết các file ảnh sử dụng định dạng 8 bit .
3.8. Truy vấn một file đồ hoạ
Hàm iminfo cho phép ta có thể nhận được thông tin về một file ảnh được

trợ giúp bởi toolbox. Thông tin mà ta nhận được phụ thuộc vào kiểu của
file nhưng nó luôn bao gồm những thông tin sau :
Tên của file ảnh
Định dạng file ảnh
Số version của định dạng file
Ngày sửa đổi file gần nhất
Kích thước file tính theo byte
Chiều rộng ảnh tính theo pixel
SV: TRẦN NGỌC TRÍ 23 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
Chiều cao ảnh tính theo pixel
Số lượng bit trên một pixel
Kiểu ảnh : RGB, chỉ số …
3.9. Chuyển đổi định dạng các file ảnh
Để thay đổi định dạng đồ hoạ của một ảnh, sử dụng hàm imread để đọc
một ảnh và sau đó lưu nó với hàm imwrite đồng thời chỉ ra định dạng
tương ứng .
Để minh hoạ, ví dụ sau đây sử dụng hàm imread để đọc một file BMP vào
không gian làm việc. Sau đó, hàm imwrite lưu ảnh này dưới định dạng
PNG.
bitmap = imread('mybitmap.bmp','bmp');
imwrite(bitmap,'mybitmap.png','png');
Chương 3
PHÂN TÍCH THÀNH PHẦN ĐỘC LẬP (ICA)
SV: TRẦN NGỌC TRÍ 24 MSSV: 05031811
ĐỒ ÁN TỐT NGHIỆP GVHD: THS. PHẠM THÀNH DANH
1. Giới thiệu về ICA
Hãy thử tưởng tượng bạn ở trong phòng mà trong đó có 3 người
đang nói chuyện với nhau. Bạn dùng 3 micro, đặt tại 3 vị trí khác nhau. Các
microphone sẽ thu được 3 tín hiệu đồng thời. Ta phải xác định được x

1
(t),
x
2
(t) và x
3
(t) với x
1
,x
2
, x
3
là cường độ âm thanh, t là thời gian. Chúng ta có
thể biểu diễn nó bằng hệ phương trình tuyến tính [1]:
1 11 1 12 2 13 3
2 21 1 22 2 23 3
3 31 1 32 2 33 3
( )
( )
( )
x t a s a s a s
x t a s a s a s
x t a s a s a s
= + +
= + +
= + +
Trong đó
11 12 13 21 22 23 31 32 33
, , , , , , , ,a a a a a a a a a
là các chỉ số phụ thuộc vào khoảng

cách từ microphone đến người nói. Điều này rất tiện lợi trong việc xấp xỉ 3
nguồn tín hiệu gốc ( tiếng nói của 3 người trong phòng ) s
1
(t), s
2
(t) và s
3
(t) từ
các tín hiệu thu được x
1
(t), x
2
(t) và x
3
(t). Ví dụ này được gọi là bài toán
cocktail-party. Theo thời gian ta có thể bỏ qua thời gian trễ và nhiễu thêm vào
từ mô hình trộn đơn giản.
Hình 2.1 Tín hiệu gốc
SV: TRẦN NGỌC TRÍ 25 MSSV: 05031811

×