Tải bản đầy đủ (.pdf) (61 trang)

Tìm hiểu một số kỹ thuật tách người khỏi cảnh nền trong matlab

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 (4.46 MB, 61 trang )

LỜI CẢM ƠN
Để hoàn thành tốt đồ án này, lời đầu tiên em xin cám ơn Ban Giám Hiệu
trường Đại Học Công Nghệ Thông Tin & Truyền Thông đã tạo điều kiện cho em
được học tập tại trường, và đặc biệt em xin gửi lời cám ơn chân thành nhất đến
Cô TS.NÔNG THỊ HOA giảng viên Trường Công Nghệ Thông Tin & truyền
thông đã trang bị cho em những kiến thức chuyên môn, quan tâm và tận tình
hướng dẫn, giúp đỡ em hoàn thành một cách tốt nhất trong đợt làm đồ án này.
Bên cạnh đó để hoàn thành tốt đồ án này em cũng đã nhận được nhiều sự
giúp đỡ những lời động viên quý báu của bạn bè, em xin chân thành cảm ơn.
Tuy nhiên do thời gian không nhiều, cũng như lượng kiến thức còn hạn
chế nên bài báo cáo của em sẽ khó tránh khỏi những thiếu sót. Em rất mong nhận
được sự thông cảm và sự chỉ bảo tận tình của quý Thầy Cô và các bạn để thực
hiện tốt đồ án này. Một lần nữa em xin chân thành cảm ơn.
Thái Nguyên, ngày 28 tháng 4năm 2017
Sinh Viên

Nguyễn Trọng Thành

1


LỜI CAM ĐOAN
Em xin cam đoan rằng số liệu và kết quả nghiên cứu trong đồ án này là
trung thực và không trùng lặp với các đề tài khác. Em cũng xin cam đoan rằng
mọi sự giúp đỡ cho việc thực hiện đồ án này đã được cảm ơn và các thông tin
trích dẫn trong đồ án đã được chỉ rõ nguồn gốc.
Thái Nguyên, ngày 28 tháng 4năm 2017
Sinh Viên

Nguyễn Trọng Thành


2


MỤC LỤC
LỜI CẢM ƠN ..................................................................................................... 1
LỜI CAM ĐOAN ................................................................................................ 2
MỤC LỤC .......................................................................................................... 3
DANH MỤC HÌNH ............................................................................................ 5
LỜI MỞ ĐẦU ..................................................................................................... 7
CHƯƠNG 1: MỘT SỐ KỸ THUẬT PHÁT HIỆN NGƯỜI TRONG ẢNH......... 8
1.1. Giới thiệu bài toán ..................................................................................... 8
1.1.1. Bài toán ............................................................................................... 8
1.1.2. Mô tả cách làm .................................................................................... 8
1.2. Giới thiệu phương pháp trừ nền ảnh ........................................................ 10
1.2.1. Khái niệm.......................................................................................... 10
1.2.2. Frame difference ............................................................................... 10
1.2.3. Running Gaussian Average ............................................................... 10
1.2.4. Codebook .......................................................................................... 10
1.3. Giới thiệu các phương pháp tách biên ...................................................... 11
1.3.1.Giới thiệu chung ................................................................................. 11
1.3.2. Kỹ thuật tách biên canny ................................................................... 13
1.3.3. Kỹ thuật tách biên Sobel.................................................................... 15
1.3.4. Kỹ thuật tách biên prewitt ................................................................ 16
1.3.5.Kỹ thuật tách biên Robert ................................................................... 16
CHƯƠNG 2: CÁC HÀM VÀ CÁC LỆNH TRONG MATLAB DÙNG CHO
NHIỆM VỤ TÁCH NGƯỜI RA KHỎI ẢNH ................................................... 18
2.1. Hàm imread ............................................................................................. 18
2.1.1. Cú pháp ............................................................................................. 18
2.1.2. Ý nghĩa ............................................................................................. 18
2.1.3. Ví dụ ................................................................................................. 18

2.2. Hàm imresize .......................................................................................... 19
2.1.1. Cú pháp ............................................................................................. 19
2.1.2.Ý nghĩa .............................................................................................. 19

3


2.1.3.Ví dụ .................................................................................................. 20
2.3. Hàm rgb2gray ......................................................................................... 20
2.1.1. Cú pháp ............................................................................................. 20
2.1.2.Ý nghĩa .............................................................................................. 20
2.1.3.Ví dụ .................................................................................................. 20
2.4. Hàm edge ................................................................................................ 21
2.4.1. Cú pháp ............................................................................................. 21
2.4.2.Ý nghĩa .............................................................................................. 22
2.4.3.Ví dụ .................................................................................................. 23
2.5. Các lệnh thao tác với ma trận .................................................................. 23
2.5.1. Tổng quan về ma trận ........................................................................ 23
2.5.2. Các toán hạng trong ma trận. ............................................................. 25
CHƯƠNG 3: KẾT QUẢ THỰC NGHIỆM VỚI CÁC ẢNH THỰC ................. 29
3.1. Thu thập dữ liệu ...................................................................................... 29
3.2. Kết quả thử nghiệm ................................................................................. 29
3.2.1. Kết quả thử nghiệm với bộ ảnh người với nền trắng .......................... 30
3.2.2. Kết quả thử nghiệm với bộ ảnh người đứng trong phòng ................... 37
3.2.3. Kết quả thử nghiệm với bộ ảnh hai người xuất hiện trong phòng ....... 44
3.2.4. Kết quả thử nghiệm với bộ ảnh chụp ngoài trời ................................. 51
3.3. Nhận xét đánh giá kết quả chung ............................................................. 58
KẾT LUẬN ....................................................................................................... 59
TÀI LIỆU THAM KHẢO ................................................................................. 60


4


DANH MỤC HÌNH
Hình 1.1. Các loại đường biên ........................................................................... 11
Hình 1.2. Mặt nạ phát hiện cạnh và 8 hướng cạnh ............................................. 14
Hình 1.3 . Phạm vi góc của cạnh chuẩn đối với 4 kiểu hướ ng cạnh trong một cửa
sổ 3×3. Mỗi hướng cạnh có 2 phạm vi được trình bày tương ứng các hình xám. 15
Hình 2.1. Hàm imread thay đổi kích thước của ảnh ........................................... 20
Hình 2.2. Hàm rgb2gray chuyển từ ảnh màu về ảnh xám ................................... 21
Hình 2.3. Hàm edge Tìm các cạnh của một hình ảnh sử dụng phương pháp
Prewitt và Canny. .............................................................................................. 23
Hình 3.1: Kết quả thử nghiệm ảnh 1 của bộ ảnh người với nền trắng ................. 30
Hình 3.2: Kết quả thử nghiệm ảnh 2 của bộ ảnh người với nền trắng ................. 31
Hình 3.3: Kết quả thử nghiệm ảnh 3 của bộ ảnh người với nền trắng ................. 32
Hình 3.4: Kết quả thử nghiệm ảnh 4 của bộ ảnh người với nền trắng ................. 33
Hình 3.5: Kết quả thử nghiệm ảnh 5 của bộ ảnh người với nền trắng ................. 34
Hình 3.6: Kết quả thử nghiệm ảnh 6 của bộ ảnh người với nền trắng ................. 35
Hình 3.7: Kết quả thử nghiệm ảnh 7 của bộ ảnh người với nền trắng ................. 36
Hình 3.8: Kết quả thử nghiệm ảnh 1 của bộ ảnh người đứng trong phòng .......... 37
Hình 3.9: Kết quả thử nghiệm ảnh 2 của bộ ảnh người đứng trong phòng .......... 38
Hình 3.10: Kết quả thử nghiệm ảnh 3 của bộ ảnh người đứng trong phòng ........ 39
Hình 3.11: Kết quả thử nghiệm ảnh 4 của bộ ảnh người đứng trong phòng ........ 40
Hình 3.12: Kết quả thử nghiệm ảnh 5 của bộ ảnh người đứng trong phòng ........ 41
Hình 3.13: Kết quả thử nghiệm ảnh 6 của bộ ảnh người đứng trong phòng ........ 42
Hình 3.14: Kết quả thử nghiệm ảnh 7 của bộ ảnh người đứng trong phòng ........ 43
Hình 3.15: Kết quả thử nghiệm ảnh 1 của bộ ảnh hai người trong phòng ........... 44
Hình 3.16: Kết quả thử nghiệm ảnh 2 của bộ ảnh hai người trong phòng ........... 45
Hình 3.17: Kết quả thử nghiệm ảnh 3 của bộ ảnh hai người trong phòng ........... 46
Hình 3.18: Kết quả thử nghiệm ảnh 4 của bộ ảnh hai người trong phòng ........... 47

Hình 3.19: Kết quả thử nghiệm ảnh 5 của bộ ảnh hai người trong phòng ........... 48
Hình 3.20: Kết quả thử nghiệm ảnh 6 của bộ ảnh hai người trong phòng ........... 49
Hình 3.21: Kết quả thử nghiệm ảnh 7 của bộ ảnh hai người trong phòng ........... 50

5


Hình 3.22: Kết quả thử nghiệm ảnh 1 của bộ ảnh chụp ngoài trời ...................... 51
Hình 3.23: Kết quả thử nghiệm ảnh 2 của bộ ảnh chụp ngoài trời ...................... 52
Hình 3.24: Kết quả thử nghiệm ảnh 3 của bộ ảnh chụp ngoài trời ...................... 53
Hình 3.25: Kết quả thử nghiệm ảnh 4 của bộ ảnh chụp ngoài trời ...................... 54
Hình 3.26: Kết quả thử nghiệm ảnh 5 của bộ ảnh chụp ngoài trời ...................... 55
Hình 3.27: Kết quả thử nghiệm ảnh 6 của bộ ảnh chụp ngoài trời ...................... 56
Hình 3.28: Kết quả thử nghiệm ảnh 7 của bộ ảnh chụp ngoài trời ...................... 57

6


LỜI MỞ ĐẦU
Trong những năm gần đây với sự phát triển vượt trội của khoa học kỹ
thuật đặt biệt là công nghệ thông tin, với những ứng dụng của công nghệ thông
tin vào các lĩnh vực đã đóng góp phần to lớn cho sự nghiệp phát triển của con
người.Xử lý ảnh là một phân ngành trong xử lý số tín hiệu với tín hiệu xử lý là
ảnh.Đây là một phân ngành khoa học mới rất phát triển trong những năm gần
đây. Xử lý ảnh gồm 4 lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng
ảnh, nén ảnh và truy vấn ảnh. Sự phát triển của xử lý ảnh đem lại rất nhiều lợi ích
cho cuộc sống của con người.
Một đất nước đang phát triển mạnh mẽ, cuộc sống con người càng ngày
nâng cao. Tóm lại nhu cầu con người ngày càng cao vì thế nhu cầu sử dụng công
nghệ và các thiết bị công nghệ để lưu trữ lại hình ảnh, video, những khoảnh khắc

đáng nhớ trong cuộc sống và phục vụ công việc hàng ngày.Ngày nay xử lý ảnh
đã được áp dụng rất rộng rãi trong đời sống như: photoshop, nén ảnh, nén video,
nhận dạng biển số xe, nhận dạng khuôn mặt, nhận dạng chữ viết, xử lý ảnh thiên
văn, ảnh y tế,....Qua quá trình tự tìm hiểu cũng như được sự gợi ý của cô giáo
T.S. Nông Thị Hoa e đã chọn đề tài“Tìm hiểu một số kỹ thuật tách người
khỏi cảnh nền trong matlab” để tìm hiểu và thực hiện trong suốt quá trình làm
đồ án của mình.

7


CHƯƠNG 1:
MỘT SỐ KỸ THUẬT PHÁT HIỆN NGƯỜI TRONG ẢNH
1.1. Giới thiệu bài toán
1.1.1. Bài toán
- Đầu vào của bài toán bao gồm hai ảnh :
+ Ảnh nền
+ Ảnh nền có chưa người.
- Đầu ra là phần ảnh chứa người ko có nền thu được từ kết quả thử
nghiệm với 5 kỹ thuật là:
+ Trừ nền
+ Canny
+ Prewitt
+ Robert
+ Sobel
1.1.2. Mô tả cách làm
- Kỹ thuật tách người ra khỏi ảnh bằng phương pháp trừ nền tiến hành như
sau:
+ Đọc ảnh nền vào ma trận 1
+ Đưa ảnh nền về ảnh mức xám

+ Đọc ảnh chứa người vào ma trận 2
+ Đưa ảnh chứa người về ảnh mức xám
=> Trừ ma trận 1 cho ma trận 2 thu được một ảnh kết quả
- Kỹ thuật tách người ra khỏi ảnh dựa trên tách biên Canny tiến hành như
sau:
+ Đọc ảnh nền vào ma trận 1
+ Đưa ảnh nền về ảnh mức xám
+ Tiến hành tách cạnh cho ảnh nền
+ Đọc ảnh chứa người vào ma trận 2
+ Đưa ảnh chứa người về ảnh mức xám
+ Tiến hành tách cạnh cho ảnh chứa người

8


=> Trừ hai ma trận 1 và 2 thu được một ảnh kết quả của kỹ thuật tách
người khỏi ảnh dựa trên tách biên Canny.
- Kỹ thuật tách người ra khỏi ảnh dựa trên tách biên Prewitt gồm các
bước:
+ Đọc ảnh nền vào ma trận 1
+ Đưa ảnh nền về ảnh mức xám
+ Tiến hành tách cạnh đối với ảnh nền
+ Đọc ảnh chứa người vào ma trận 2
+ Đưa ảnh chứa người về ảnh mức xám
+ Tiến hành tách cạnh cho ảnh chứa người
=> Trừ hai ma trận 1 và 2 thu được một ảnh kết quả của phương pháp tách
người dựa trên tách biên Prewitt.
- Kỹ thuật tách người ra khỏi ảnh dựa trên tách biên Robert gồm các bước:
+ Đọc ảnh nền vào ma trận 1
+ Đưa ảnh nền về ảnh mức xám

+ Tiến hành tách cạnh cho ảnh nền
+ Đọc ảnh chứa người vào ma trận 2
+ Đưa ảnh chứa người về ảnh mức xám
+ Tiến hành tách cạnh cho ảnh chứa người
=> Trừ hai ma trận 1 và 2 thu được một ảnh kết quả của kỹ thuật tách
người dựa trên tách biên Robert.
- Kỹ thuật tách người ra khỏi ảnh dựa trên tách biên Sobel gồm các bước:
+ Đọc ảnh nền vào ma trận 1
+ Đưa ảnh nền về ảnh mức xám
+ Tiến hành tách cạnh cho ảnh nền
+ Đọc ảnh chứa người vào ma trận 2
+ Đưa ảnh chứa người về ảnh ở mức xám
+ Tiến hành tách cạnh cho ảnh chứa người
=> Trừ hai ma trận 1 và 2 thu được một ảnh kết quả tách người ra khỏi
ảnh dựa trên tách biên Sobel .

9


Từ các cách tiến hành trên đưa ra nhận xét đánh giá và so sánh giữa các
kỹ thuật với nhau từ đó chọn ra được kỹ thuật tốt nhất cho việc phát hiện đối
tượng cụ thể là phát hiện người trong ảnh.
1.2. Giới thiệu phương pháp trừ nền ảnh
1.2.1. Khái niệm
Phương pháp tách cảnh nền (Background subtraction) hay có thể gọi
phương pháp phát hiện tiền cảnh (Tiếng Anh: foreground detection) là một kỹ
thuật trong lĩnh vực xử lý ảnh và thị giác máy tính khi mà tiền cảnh (foreground)
sẽ được tách ra cho những bước xử lý tiếp theo (ví dụ như nhận dạng đối tượng,
nhận dạng cử chỉ, chuyển động, vv). Thông thường những vùng ảnh quan tâm sẽ
thuộc vùng tiền cảnh của bức ảnh, vì vậy việc tách cảnh nền hiệu quả và chính

xác giúp cho các hệ thống này đạt được sự ổn định và tính nhanh chóng. Sau
bước tiền xử lý, các bước xử lý tiếp theo sẽ sử dụng kỹ thuật tách nền này. Tách
cảnh nền được ứng dụng rộng rãi trong nhiều lĩnh vực như camera giám sát, nhận
dạng đối tượng, nhận dạng cử chỉ đối tượng, giao thông để theo dõi lưu lượng xe.
Ý tưởng chung của các phương pháp trừ nền là : Để phát hiện ra các đối
tượng chuyển động trong video, đối tượng trong ảnh chúng ta phải có được mô
hình nền (background). Mô hình nền này có thể được lọc qua nhiều frame ảnh
nếu nền bị thay đổi. Sau đó, ta sẽ dùng mô hình nền này để so sánh với frame ảnh
hiện tại và kết quả là ta sẽ nhận biết được đâu là vùng phần nền, đâu là các phần
chuyển động và các đối tượng.
1.2.2. Frame difference
Ý tưởng chính trong frame difference là các đối tượng chuyển động sẽ
được phát hiện dựa trên sự khác biệt giữa hai frame ảnh liên tiếp nhau với cùng
một ngưỡng được chọn
1.2.3. Running Gaussian Average
Phương pháp này do Wren, Azarbayejani, Darrell và Pentland đưa ra vào
năm 1997. Phương pháp này đặt một phân phối Gaussian G(µ, σ) lên sự biến
thiên giá trị của mỗi pixel trong đoạn video.
1.2.4. Codebook

10


Ý tưởng chính của phương pháp này là tại mỗi pixel của mô hình nền, một
tập các cluster với tâm và giới hạn trong không gian màu sẽ được xây dựng nhằm
thể hiện sự phân bố của pixel nền trong không gian màu đó. Mỗi cluster như vậy
được gọi là codeword, tập cluster tại mỗi vị trí pixel được gọi là codebook .
1.3. Giới thiệu các phương pháp tách biên
1.3.1.Giới thiệu chung
Một số khái niệm

· Điểm biên: Một điểm được coi là điểm biên nếu có sự thay đổi nhanh
hoặc đột ngột về mức xám.
· Đường biên: Là tập hợp các điểm biên liên tiếp tạo thành đường biên hay
đường bao.Ý nghĩa của đường biên trong xử lý:
+ Đường biên là một loại đặc trưng cục bộ tiêu biểu trong phân tích, nhận
dạng ảnh.
+ Người ta sử dụng biên làm phân cách các vùng xám (màu) cách biệt.
Ngược lại, người ta cũng sử dụng các vùng ảnh để tìm đường phân cách.
Các loại đường biên: có 3 loại đường biên chính là đường biên lý tưởng,
đường biên bậc thang và đường biên thực (tương ứng từ trái qua phải như hình
vẽ)

Hình 1.1. Các loại đường biên
+ Đường biên lý tưởng được định nghĩa là sự thay đổi giá trị cấp xám tại
một vị trí xác định.Nếu sự thay sự thay đổi cấp xám giữa các vùng trong ảnh
càng lớn thì đường biên càng dễ nhận ra.Trong trường hợp này sự thay đổi lại
diễn ra tại một điểm nên đường biên có độ rộng là một điểm ảnh và vị trí của
đường biên chính là vị trí thay đổi cấp xám.

11


+ Đường biên bậc thang: là đường biên xuất hiện khi có sự thay đổi cấp
xám trải rộng qua nhiều điểm ảnh. Vị trí của đường biên được xem như vị trí
chính giữa của đường nối giữa cấp xám thấp và cấp xám cao.Tuy nhiên đây chỉ
là đường thẳng trong toán học, từ khi ảnh được kỹ thuật số hoá thì đường đó
không còn là đường thẳng mà thành những đường không trơn.
+ Đường biên thực: là đường biên xuất hiện khi có sự thay đổi cấp xám tại
nhiều điểm ảnh nhưng không trơn.
- Quy trình phát hiện biên:


Bước 1: Lọc nhiễu do ảnh ghi vào thường có nhiễu.
Bước 2: Làm nổi biên sử dụng các toán tử phát hiện biên.
Bước 3: Định vị biên (cần loại bỏ biên giả).
Bước 4: Liên kết và trích chọn biên.
Phân loại
Phương pháp phát hiện biên trực tiếp
- Dựa vào sự biến thiên độ sáng của điểm ảnh để làm nổi biên ( kỹ thuật
đạo hàm – phương pháp dò biên cụ bộ):
• Đạo hàm bậc nhất của ảnh: phương pháp Gradient
• Đạo hàm bậc hai của ảnh:phương pháp Laplace.
- Phương pháp “đi theo đường bao” theo nguyên lý quy hoạch động (dò
biên tổng thể).
Phương pháp dò biên trực tiếp có hiệu quả và ít bị tác động của nhiễu nếu
có sự thay đổi đột biến của độ sáng.
Phương pháp phát hiện biên gián tiếp
Nếu ta phân ảnh thành vùng ảnh khác nhau thì đường phân cách giữa các
vùng đó chính là biên.
Phương pháp dò biên gián tiếp khó cài đặt nhưng áp dụng tốt khi sự biến
thiên độ sáng nhỏ.

12


 Hai phương pháp trên là đối ngẫu của nhau vì:
Nếu dò được biên để thực hiện phân lớp các đối tượng thì cũng có nghĩa là
phân vùng được ảnh.
Ngược lại, nếu ảnh đã được phân vùng thì ta cũng xác định được biên
1.3.2. Kỹ thuật tách biên canny
Mặc dù rất phức tạp nhưng thuật toán canny [1986] nhìn chung có ưu

điểm hơn cho việc phát hiện biên. Phương pháp tiếp cận của canny là dựa trên 3
mục tiêu chính:
Tỷ lệ sai thấp (low error rate): tất cả các biên cần được phát hiện không
nên đáp ứng với tạp nhiễu (spurious response). Nghĩa là biên được tách càng dày
đặc thì càng tốt so với biên thực.
Các điểm biên nên được xác định chính xác (edge points should be well
localized): các biên được xác định phải càng dày đặc càng tốt so với biên thực.
Nghĩa là: khoảng cách giữa một điểm được đánh dấu bằng một biên và tâm của
biên thực nên nhỏ.
Đáp ứng điểm đơn biên (single edge point response): Bộ dò biên nên trả
về một điểm cho mỗi điểm biên thực. Nghĩa là: số lượng vị trí tối đa xung quanh
biên thực (true edge) nên nhỏ. Điều này có nghĩa là bộ dò không nên xác định
nhiều pixel biên mà ở đó chỉ duy nhất một điểm đơn biên tồn tại.
Bản chất của thuật toán canny là biểu diễn theo toán học 3 tiêu chuẩn đó
và cố gắng tìm ra giải pháp tối ưu (optimal solution) cho những mục đích này.
Nhìn chung rất khó để tìm ra giải pháp mà thỏa mãn cả 3. Tuy nhiên, việc sử
dụng tối ưu hóa số với các biên bậc 1-D bị nhiễu bởi nhiễu Gauss trắng dẫn đến
giải pháp mà xấp xỉ tốt cho bộ dò bậc tối ưu là lấy đạo hàm cấp 1 của một hàm
gauss.
Kết quả này đối với 2-D giải quyết việc nhận dạng mà phương pháp 1-D
vẫn áp dụng theo hướng của biên chuẩn. Do hướng của biên chuẩn được biết
trước, điều này sẽ cần áp dụng bộ dò biên 1-D trong tất cả các hướng có thể.
Công việc này có thể được xấp xỉ bằng cách làm trơn ảnh trước tiên với một hàm

13


gauss 2-D, tính toán đạo hàm cấp 1 của kết quả này và sau đó sử dụng độ lớn và
hướng đạo hàm cấp một để ước tính độ lớn và hướng biên tại mọi điểm.
Bởi vì nó được tạo ra bằng cách dùng đạo hàm cấp 1, M(x, y) chứa các

đường ngoằn ngoèo rộng xung quanh vị trí lớn nhất. Tiếp theo là làm mảnh
đường này. Một phương pháp là sử dụng triệt điểm không cực đại.Bản chất của
phương pháp là để định rỏ một hướng biên chuẩn rời rạc.Ví dụ trong vùng 3×3
chúng ta có thể định 4 hướng cho một biên thông qua điểm trung tâm của vùng
ngang, dọc, +450, -450. Bởi vì chúng ta phảilượng tử tất cả các hướng biên theo 4
hướng nên phải định một phạm vi hướng mà ta xét đến biên ngang. Chúng ta
định hướng biên theo hướng của một biên chuẩn mà chúng tanhận được từ dữ
liệu ảnh bằng cách dùng phương trình:
gy
α (x, y) = tan

1 g

x.

Đặt d1, d2, d3, d4 lần lượt là 4 hướng biên cơ bản vừa được thảo luận cho
vùng 3×3: -450, ngang, dọc, +450. Chúng ta có thể tính toán biểu đồ triệt điểm
không cực đại cho một vùng 3×3 tập trung tại mỗi điểm (x, y) theo α(x, y) :
Bước 1.Tìm hướng dk mà gần α(x, y) nhất.
Bước 2. Nếu giá trị của M(x, y) là nhỏ hơn ít nhất một trong hai cửa sổ dọc
dk, lấy g N( x, y)=0(triệt) hoặc ngược lại g N(x, y)= M (x, y).

Hình 1.2. Mặt nạ phát hiện cạnh và 8 hướng cạnh
Lưu ý: 1 pixel là 1 ô vuông, nên chỉ có 8 lân cận với nó, nên khi dò biên ta
chỉ dò theo 8 hướng: hướng x (hay 00), -x (hay 1800), y (hay 900), -y (-900), +450,
-450, +1350, - 1350

14



Hình 1.3 . Phạm vi góc của cạnh chuẩn đối với 4 kiểu hướ ng cạnh trong một
cửa sổ 3×3. Mỗi hướng cạnh có 2 phạm vi được trình bày tương ứng các
hình xám.
Trong đó gN(x, y) là ảnh triệt điểm không cực đại. Cặp mặt nạ lọc được
dùng để đạt được gx và gy
1.3.3. Kỹ thuật tách biên Sobel
- Bộ lọc Sobel được sử dụng nhiều trong việc tách biên của một bức ảnh.
Bộ lọc này sử dụng 2 mặt nạ theo phương ngang và dọc để tách biên của bức
ảnh.Bộ tách biên Sobel sử dụng các mặt nạ trong hình dưới để xấp xỉ đạo hàm
bậc nhất Gx và Gy . Nói cách khác, gradient tại điểm tâm trong một lân cận được
tính theo bộ tách Sobel:

- Khi đó, ta nói rằng vị trí (x,y) là pixel biên nếu tại vị trí đó, trong đó là
một ngưỡng được chỉ định. Mặt lạ của bộ lọc Sobel :

15


1.3.4. Kỹ thuật tách biên prewitt
Kỹ thuật sử dụng 2 mặt nạ nhập chập xấp xỉ đạo hàm theo 2 hướng x và y
là:

Các bước tính toán kỹ thuật Prewitt:
+ b1: tính



+ b2: tính
1.3.5.Kỹ thuật tách biên Robert
Toán tử Roberts 2 × 2 là một trong những phương pháp đầu tiên được sử

dụng để phát hiện các cạnh biên. Phương pháp Roberts tính toán đơn giản, tính
toán Gradient không gian 2-D trên một hình ảnhvùng tần số không gian cao
thường tương ứng với các cạnh biên. Bộ tách biên này được dùng ít hơn các bộ

16


tách khác do chức năng giới hạn của nó (nó không đối xứng và không thể được
tổng quát hóa để tách biên là thừa số của 45 độ). Tuy nhiên, nó vẫn được dùng
thường xuyên trong hiện thực phần cứng khi tính đơn giản và tốc độ là các yếu tố
chi phối.

- Về lý thuyết, các phép toán bao gồm một cặp kernel chập 2x2. Một
kernel khác chỉ đơn giản là quay một góc 90°. Bộ lọc Roberts được thực hiện
dùng hai kernel chập, đáp ứng tối đa với cạnh chạy ở 45° vào lưới pixel. Các
kernel áp dụng riêng cho hình ảnh đầu vào, để tạo các phép đo riêng biệt của các
thành phần gradient trong mỗi hướng (gọi những Gx và Gy). Nhưng sau đó có
thể được kết hợp với nhau để tìm ra độ lớn tuyệt đối của gradient tại mỗi điểm và
định hướng của gradient. Độ lớn Gradient được cho bởi:

- Trong trường hợp này, định hướng = 0, nghĩa là hướng của tương phản
tối đa từ màu đen sang màu trắng chạy từ trái sang phải vào hình ảnh. Các bộ lọc
Roberts rất nhanh chóng để tính toán (do kích thước tối thiểu của các kernel
nhưng nó rất nhạy với nhiễu. Các bộ lọc cạnh biên Prewitt và Sobel khắc phụ
những hạn chế của bộ lọc Roberts như chống nhiễu tốt hơn, nhưng sử dụng mặt
nạ chập hơi phức tạp hơn.

17



CHƯƠNG 2:
CÁC HÀM VÀ CÁC LỆNH TRONG MATLAB DÙNG CHO
NHIỆM VỤ TÁCH NGƯỜI RA KHỎI ẢNH
2.1. Hàm imread
2.1.1. Cú pháp
A = imread(filename, fmt)
[X, map] = imread(...)
[...] = imread(filename)
[...] = imread(URL,...)
[...] = imread(...,Param1,Val1,Param2,Val2...)
2.1.2. Ý nghĩa
+ A = imread (tên tệp, fmt) đọc một hình ảnh màu xám hoặc màu từ tệp
được chỉ định bởi tên tệp chuỗi. Nếu tệp không nằm trong thư mục hiện tại, hoặc
trong một thư mục trên đường dẫn MATLAB, chỉ định đường dẫn đầy đủ
+ [X, map] = imread(...): [X, bản đồ] = imread (...) đọc các hình ảnh được
lập chỉ mục trong tên tập tin vào X và bản đồ màu liên quan của nó vào bản đồ.
Các giá trị colormap trong tệp hình ảnh được tự động quy đổi lại thành khoảng
[0,1].
+ [...] = imread(filename): [...] = imread (tên tập tin) dùng để suy ra định
dạng của tập tin từ nội dung của nó
+ [...] = imread (URL, ...) đọc hình ảnh từ URL Internet. URL phải bao
gồm loại giao thức (ví dụ: http: //)
+ [...] = imread (..., Param1, Val1, Param2, Val2 ...) xác định các tham số
kiểm soát các đặc tính khác nhau của hoạt động cho các định dạng cụ thể. Để biết
thêm thông tin, xem thông tin cụ thể về định dạng.
2.1.3. Ví dụ
+ Đọc hình ảnh mẫu.
Imdata = imread ('ngc6543a.jpg');
+ Đọc hình ảnh thứ sáu trong tệp TIFF.
[X, bản đồ] = imread ('your_image.tif', 6);


18


+ Đọc hình ảnh thứ tư trong tệp HDF4.
Info = imfinfo ('your_hdf_file.hdf');
[X, bản đồ] = imread ('your_hdf_file.hdf', thông tin (4) .Reference);
2.2. Hàm imresize
2.1.1. Cú pháp
B = imresize(A, scale)
B = imresize(A, [mrows ncols])
[Y newmap] = imresize(X, map, scale)
[...] = imresize(..., method)
[...] = imresize(..., parameter, value, ...)
2.1.2.Ý nghĩa
+ B = imresize (A, scale) trả về hình ảnh B có kích thước gấp năm lần
kích thước A. Hình ảnh đầu vào A có thể là một màu xám, RGB, hoặc hình nhị
phân. Nếu quy mô là giữa 0 và 1.0, B nhỏ hơn A. Nếu quy mô lớn hơn 1.0, B lớn
hơn A.
+ B = imresize (A, [mrows ncols]) trả về hình B có số hàng và cột được
xác định bởi [mrows ncols]. NUMROWS hoặc NUMCOLS có thể là NaN, trong
trường hợp này sẽ tính tỷ lệ tự động tính số hàng hoặc cột tự động để duy trì tỷ lệ
khung hình.
+ [Y newmap] = giả lập (X, bản đồ, quy mô) thay đổi kích thước của chỉ
mục hình ảnh X. quy mô có thể là một yếu tố số hoặc một vector xác định kích
thước của hình ảnh đầu ra (numrows numcols). Mặc định, imresize trả về một,
mới được tối ưu hóa colormap (newmap) với hình ảnh thay đổi kích cỡ. Để trả lại
một bản đồ màu giống như bản đồ màu gốc, sử dụng tham số 'Colormap' (xem
bên dưới).
+ [...] = imresize (..., method) thay đổi kích thước hình ảnh được lập chỉ

mục. Có thể là (1) một chuỗi văn bản chỉ định một phương pháp nội suy chung,
(2) một chuỗi văn bản chỉ định một hạt nội suy, hoặc (3) một mảng ô hai phần tử
chỉ định một hạt nhân nội suy.

19


2.1.3.Ví dụ
+ Thay đổi kích thước của ảnh sau:
[X,map]= imread('images.jpg');
[Y,newmap] = imresize(X,map,0.5);
imshow(Y,newmap);
imshow(X,map);

Hình 2.1. Hàm imread thay đổi kích thước của ảnh
2.3. Hàm rgb2gray
2.1.1. Cú pháp
I = rgb2gray(RGB) newmap = rgb2gray(map)
2.1.2.Ý nghĩa
+ I = rgb2gray (RGB) chuyển đổi hình ảnh TRANSBORGER RGB sang
ảnh cường độ màu xám I. rgb2gray chuyển đổi các hình ảnh RGB sang màu xám
bằng cách loại bỏ thông tin độ bão hòa và màu sắc trong khi giữ độ sáng.
+ newmap = rgb2gray(map) returns a grayscale colormap equivalent to
map.
2.1.3.Ví dụ
+ Chuyển đổi một hình ảnh RGB sang một hình ảnh màu xám.
I = imread('images.jpg');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J);


20


Hình 2.2. Hàm rgb2gray chuyển từ ảnh màu về ảnh xám

2.4. Hàm edge
2.4.1. Cú pháp
BW = edge(I)

BW = edge(I,'sobel')
BW = edge(I,'sobel',thresh)
BW = edge(I,'sobel',thresh,direction)
[BW,thresh] = edge(I,'sobel',...)

BW = edge(I,'prewitt')
BW = edge(I,'prewitt',thresh)
BW = edge(I,'prewitt',thresh,direction)
[BW,thresh] = edge(I,'prewitt',...)

BW = edge(I,'roberts')
BW = edge(I,'roberts',thresh)
[BW,thresh] = edge(I,'roberts',...)

BW = edge(I,'log')
BW = edge(I,'log',thresh)
BW = edge(I,'log',thresh,sigma)

21



[BW,threshold] = edge(I,'log',...)

BW = edge(I,'zerocross',thresh,h)
[BW,thresh] = edge(I,'zerocross',...)

BW = edge(I,'canny')
BW = edge(I,'canny',thresh)
BW = edge(I,'canny',thresh,sigma)
[BW,threshold] = edge(I,'canny',...)

2.4.2.Ý nghĩa
+ BW = edge (I) lấy một màu xám hoặc một hình nhị phân I làm đầu vào
của nó, và trả về một hình ảnh nhị phân BW có cùng kích thước với I.
Theo mặc định, cạnh sử dụng phương pháp Sobel để phát hiện các cạnh,
nhưng sau đây cung cấp một danh sách đầy đủ của tất cả các phương pháp cạnh
tìm kiếm được hỗ trợ bởi chức năng này:
- Phương pháp Sobel tìm các cạnh bằng cách sử dụng phương pháp xấp xỉ
Sobel với dẫn xuất. Nó trả về các cạnh tại những điểm mà gradient của I là tối đa.
- Phương pháp Prewitt tìm các cạnh sử dụng phép ước lượng Prewitt cho
đạo hàm. Nó trả về các cạnh tại những điểm mà gradient của I là tối đa.
- Phương pháp Roberts tìm thấy các cạnh bằng cách sử dụng xấp xỉ Roberts
với dẫn xuất. Nó trả về các cạnh tại những điểm mà gradient của I là tối đa.
- Phương pháp Laplacian của phương pháp Gaussian tìm các cạnh bằng
cách tìm các khoảng không bằng nhau sau khi lọc I với một bộ lọc Laplacian of
Gaussian.
- Phương pháp zero-cross tìm các cạnh bằng cách tìm các số không qua
sau khi lọc I với một bộ lọc mà bạn chỉ định.
- Phương pháp Canny tìm thấy các cạnh bằng cách tìm kiếm cực đại địa
phương của gradient của I. Gradient được tính bằng cách sử dụng các dẫn xuất
của một bộ lọc Gaussian. Phương pháp này sử dụng hai ngưỡng, để phát hiện các


22


cạnh mạnh và yếu và bao gồm các cạnh yếu ở đầu ra chỉ khi chúng được nối với
các cạnh mạnh. Phương pháp này do đó ít có khả năng hơn các phương pháp
khác bị tiếng ồn đánh lừa, và nhiều khả năng để phát hiện các cạnh yếu.
Các thông số bạn có thể cung cấp khác nhau tùy thuộc vào phương pháp
bạn chỉ định. Nếu bạn không chỉ định một phương thức, cạnh sử dụng phương
pháp Sobel.
2.4.3.Ví dụ
+ Tìm các cạnh của một hình ảnh sử dụng phương pháp Prewitt và Canny.
I = imread('circuit.tif');
BW1 = edge(I,'prewitt');
BW2 = edge(I,'canny');
imshow(BW1);
figure, imshow(BW2)

Hình 2.3. Hàm edge Tìm các cạnh của một hình ảnh sử dụng phương pháp
Prewitt và Canny.
2.5. Các lệnh thao tác với ma trận
2.5.1. Tổng quan về ma trận
- Định nghĩa:
+ Trong Matlab thì ma trận được hiểu theo một cách đơn giản, ma trận là
một mảng hình chữ nhật các số.

23


+ Ma trận gồm các dòng( row) và các cột (colum). Các dòng hay các cột

được gọi chung là vector
Ví dụ:

- Một con số trong Matlab là một ma trận 1x1
- Thế mạnh của Matlab so với các ngôn ngữ lập trình khác là tính toán rất
nhanh trên ma trận.
Matlab cung cấp cho chúng ta 7 hàm để tạo các matrận cơ bản:
1.Zeros (line,column) : cho phép tạo một ma trận toàn số 0.
2.Ones (line,column) : cho phép tạo ra ma trận toàn số1.
3.Rand (line,column) : cho phép tạo ra một ma trận với các phần tử là sinh
ngẫu nhiên và cùng loại.
4.Randn (line,column) :tạo một ma trận mà các phần tử của ma trận được
sinh ra một cách ngẫu nhiên.
5.Eye (line) : khai báo ma trận đơnvị.
6.Pascal () :tạo ma trận đối xứng (ma trận vuông).
7.Magic () :tạo ma trận không đối xứng.
Note : Bạn có thể nhập trực tiếp các phần tử của ma trận đó theo cú pháp
sau (các phần tử của một hàng đượccách nhau bởi dấu (,) hoặc một dấu cách
,giữa các hàng thì được cách nhau bởi dấu (;) hay dấu ngắt).

24


2.5.2. Các toán hạng trong ma trận.
Trong Matlab tồn tại các toán hạng như sau:

+ Phép cộng ma trận
Nếu hai ma trận có cùng chiều, ta có thể cộng ma trận theo từng thành
phần như sau:
Ví dụ: Cho hai ma trận A và B như sau:


Thực hiện phép cộng A + B ta được kết quả

+ Phép trừ ma trận
Nếu hai ma trận có cùng chiều, ta có thể trừ ma trận theo từng thành phần
như sau:

25


×