Tải bản đầy đủ (.docx) (35 trang)

ỨNG DỤNG MỘT SỐ PHÉP XỬ LÝ ẢNH CƠ BẢN VÀO GIAO DIỆN GUI 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 (1.01 MB, 35 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
------

BÀI BÁO CÁO
MÔN XỬ LÝ ẢNH
ĐỀ TÀI :

ỨNG DỤNG MỘT SỐ PHÉP XỬ LÝ ẢNH CƠ BẢN
VÀO GIAO DIỆN GUI TRONG MATLAB

GVHD:

NGÔ BÁ VIỆT
NHÓM SINH VIÊN:

NGUYỄN NGỌC NHIỆM (C)
TRẦN THỊ MINH THY
NGUYỄN THÀNH ĐẠT
HUỲNH TẤN CÔNG
HÀ GIA KÍNH
TP.HCM - 11/2018

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM


KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
***


BÀI BÁO CÁO
MÔN XỬ LÝ ẢNH
ĐỀ TÀI:

ỨNG DỤNG MỘT SỐ PHÉP XỬ LÝ ẢNH CƠ BẢN
VÀO GIAO DIỆN GUI TRONG MATLAB

GVHD:

NGÔ BÁ VIỆT

NHÓM SINH VIÊN:

NGUYỄN NGỌC NHIỆM (C) - 16141218
TRẦN THỊ MINH THY - 16141301
NGUYỄN THÀNH ĐẠT - 16141132
HUỲNH TẤN CÔNG - 16141119
HÀ GIA KÍNH – 16141189
TP.HCM - 11/2018

BẢNG PHÂN CÔNG NHIỆM VỤ


STT Nội dung

1

Thiết kế giao
diện GUI trên
matlab


2

Chuyển ảnh
RGB sang đa
mức xám
(Grayscale)

3

Kỹ thuật lọc
ảnh bằng bộ
lọc trung bình

4

Kỹ thuật tách
biên ảnh dùng
phương pháp
Sobel

5

Hổ trợ tìm
kiếm tài liệu
liên quan và
làm
Powerpoint

6


Tổng hợp
thành bài báo
cáo và
powerpoint
hoàn chỉnh

Nguyễn
Trần Thị
Ngọc
Minh
Nhiệm(C) Thy

Nguyễn
Thành
Đạt

Huỳnh
Tấn
Công

Hà Gia
Kính

X

X

X


X

X

X


MỤC LỤC
MỤC LỤC………………………………………………………………………………
1. TỔNG QUAN VỀ ĐỀ TÀI…………………………………………………………...
2. CÁC PHƯƠNG PHÁP CHÍNH……………………………………………………...
2.1. TÌM HIỂU CƠ BẢN VỀ GIAO DIỆN GUI TRONG
MATLAB………………
2.1.1. Lý thuyết tổng quan…………………………………………………………
2.1.1.1. Các chức năng cơ bản trong giao diện GUI……………………………..
2.1.1.2. Giới thiệu một số chức năng cơ bản của hộp thoại
inspector…………….
2.1.2. Thiết kế giao diện Gui
2.1.2.1. Thiết kế giao diện load và hiển thị ảnh đơn
giản…………………….........
2.1.2.2. Thiết lập mã lệnh (code) load và hiển thị ảnh cho nút
nhấn……………....
2.2. CHUYỂN ẢNH MÀU RGB SANG ĐA MỨC XÁM (GRAYSCALE)
2.2.1. Lý thuyết tổng quan
2.2.1.1. Mức xám………………………………….………………………...........
2.2.1.2
Ảnh
xám
(grayscale)
………………………………………………………

2.2.1.3.
Công
thức
chuyển
màu
từ
RGB
thành
ảnh
xám………………………….
2.2.2. Kết quả thực hiện……………………………………………………………
2.3.
KỸ
THUẬT
LỌC
ẢNH
BẰNG
BỘ
LỌC
TRUNG
BÌNH……………………...
2.3.1. Lý thuyết tổng quan…………………………………………………………
2.3.1.1. Bộ lọc ảnh………………………………………………………………..
2.3.1.2. Lọc tuyến tính……………………………………………………………
2.3.1.3. Lọc nhiễu làm trơn ảnh bằng bộ lọc trung bình………………………….
2.3.2. Kết quả thực hiện……………………………………………………………
2.4. KỸ THUẬT TÁCH BIÊN ẢNH SỬ DỤNG MẶT NẠ SOBEL………………
2.4.1. Lý thuyết tổng quan…………………………………………………………
2.4.1.1. Tách biên………………………………………………………………...
2.4.1.2. Tách biên Sobel………………………………………………………….

2.4.1.3 Bộ lọc sobel……………………………………………………………..
2.4.2. Kết quả thực hiện……………………………………………………………
2.5. ỨNG DỤNG CÁC PHÉP XỬ LÝ ẢNH VÀO GIAO DIỆN GUI TRONG
MATLAB………………………………………………………………………………….
2.5.1. Giao diện các phím nhấn và khung hiển thị hình
ảnh……………………..
2.5.2.

lệnh(code)
cho
các
phím
nhấn…………………………………………...
4

1
3
4
4
4
5
7
8
8
8
10
10
10
10
11

12
13
13
13
16
18
19
20
20
20
20
21
23
24
24
24


2.5.2.1.
Kỹ
thuật
lọc
ảnh
bằng
bộ
lọc
trung
bình………………………………….
2.5.2.2.
Kỹ

thuật
tách
biên
dùng
mặt
nạ
Sobel……………………………............
3.
KẾT
LUẬN……………………………………………………………………………..
TÀI LIỆU THAM KHẢO………………………………………………………………..

5

24
26
28
29


1. TỔNG QUAN VỀ ĐỀ TÀI
Thị giác máy là một lĩnh vực đã và đang rất phát triển. Khái niệm xử lý ảnh và thị giác
máy – Computer vision có liên quan tới nhiều ngành học và hướng nghiên cứu khác nhau.
Thị giác máy bao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích tạo ra một hệ
thống nhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu đa
chiều. Việc kết hợp giữa thị giác máy với các kỹ thuật khác như công nghệ thông tin, truyền
thông, điện tử, điều khiển tự động, cơ khí cho chúng ta rất nhiều ứng dụng trong đời sống
hàng ngày cũng như trong khoa học, an ninh, quân sự. Ngày nay, ứng dụng của thị giác máy
đã trở nên rất rộng lớn và đa dạng, len lỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ trụ, cho
đến y học, sản xuất, và tự động hóa tòa nhà.

Trong những năm gần đây, xử lý và nhận dạng ảnh (Machine Version) đang là hướng
nghiên cứu của rất nhiều nhà khoa học trên thế giới trong nhiều lĩnh vực khác nhau. Xử lý
ảnh số không chỉ nâng cao chất lượng ảnh mà còn phân tích và lý giải nó để phục vụ các
mục đích khác nhau.
Trong quá trình làm xử lý ảnh, một trong các biến đổi đơn giản và quan trọng nhất đó
là biến đổi giữa ảnh màu - ảnh đa mức xám - ảnh nhị phân. Trong đa số các phép xử lý ảnh
thông dụng, người ta thường dùng ảnh nhị phân và ảnh đa mức xám để làm đầu vào nhằm
nâng cao tốc độ xử lý mà vẫn đảm bảo yêu cầu của bài toán. Bên cạnh đó, nhiễu do nhiều
nguyên nhân khác nhau làm cho chất lượng ảnh bị giảm xuống. Để giảm nhiễu và nâng cao
chất lượng ảnh ta sử dụng những phương pháp lọc ảnh với các mặt nạ khác nhau : Mặt nạ
lọc trung bình, lọc trung vị… phù hợp với mỗi loại ảnh cụ thể.
Trong bài báo cáo này, nhóm chúng em sẽ thực hiện chuyển ảnh màu sang ảnh xám
bằng công thức thủ công sau đó đem lọc ảnh thông qua bộ lọc trung bình và cuối cùng tách
biên ảnh dùng mặt nạ Sobel.

6


2.CÁC PHƯƠNG PHÁP CHÍNH
2.1 TÌM HIỂU CƠ BẢN VỀ GIAO DIỆN GUI TRONG MATLAB
2.1.1 Lý thuyết tổng quan
GUI LÀ GÌ?
GUI (Graphical User Interface) là giao diện đồ họa có điều khiển bởi nhiều thanh công
cụ được người lập trình tạo sẵn, cho tương tác giữa người dùng là giao diện chương trình,
mỗi chương trình được người lập trình tạp sẵn giao diện thực hiện một vài chức năng được
người lập tình tạo sẵn và giao tiếp với người sử dụng.
Ứng dụng của Matlab lập trình giao diện rất mạnh và dễ thực hiện, nó có thể tạo ra
giao diện người dùng tương tự VBB, C++…
GUI bao gồm đầy đủ các chương trình hỗ trợ như thực hiện phép toán LOGIC, mô
phỏng không gian 2D, 3D, đọc hiển thị dữ liệu, liên kết đa phương tiện. Giao tiếp với người

dùng thông qua hình ảnh, các nút nhấn thực thi ...

Giao diện giải phương trình bậc 2

2.1.1.1 Các chức năng cơ bản trong giao diện GUI
7


Giao diện GUI
Phía bên trái là nhóm các biểu tượng được Matlab GUI hỗ trợ sẵn:
•Push Button

: là nút nhấn, khi nhấn vào sẽ thực thi lệnh trong cấu trúc hàm

callback của nó.
•Slider

: là thanh trượt cho phép người dùng di chuyển thanh trượt để thực thi

lệnh.
•Radio Button

: nó giống như Check Box nhưng thường được sử dụng

để tạo sự lựa chọn duy nhất, tức là 1 lần chỉ được chọn 1 trong số các nhóm nhiều
nút. Khi một ô được chọn thì các ô còn lại trong nhóm bị bỏ chọn.
•Check box

: sử dụng để đánh dấu tích (thực thi) vào và có thể check nhiều ô để


thực thi.
8


•Edit Text

: là nơi các kí tự được nhập vào từ người dùng, người dùng có thể thay

đổi được.
•Static Text

: là các kí tự được hiển thị thông qua các callback, hoặc thông thường

để viết nhãn cho các biểu tượng, người dùng không thể thay đổi nội dung.
•Pop-up Menu

: mở ra danh sách các lực chọn khi người dùng nhấp chuột vào.

Chỉ chọn được 1 mục trong danh sách các mục.
•List Box

: hộp thoại danh sách cách mục, cho phép người dùng chọn một hoặc

nhiều mục.


Toggle Button

: là nút nhấn có 2 điều khiển, khi nhấp chuột và nhả ra, nút


nhấn được giữ và lệnh thực thi, khi nhấp chuột vào lần thứ 2, nút nhấn nhả ra, hủy
bỏ lệnh vừa thực thi.
•Table


Axes

: tạo ra một bảng tương tự trong Excel.
: đây là giao diện đồ họa hiển thị hình ảnh, nó có nhiều thuộc tính bao gồm:

không gian 2D (theo trục đứng và trục ngang), 3D (hiển thị không gian 3 chiều).


Panel

: tạo ra một mảng nhóm các biểu tượng lại với nhau giúp ta dễ kiểm soát và

thao tác khi di chuyển.


Button Group

Active Control
trong Active

: quản lí sự lựa chọn của nút Radio Button.

: quản lí một nhóm các bút hoặc các chương trình liên quan với nhau

9



2.1.1.2. Giới thiệu một số chức năng cơ bản của hộp thoại inspector
Inpecstor là giao diện để tùy chỉnh các chức năng, đặc điểm của các thanh công cụ
( thanh điều khiển ) được hổ trợ sẵn trong GUI.

Trong hợp thoại inpector có rất nhiều chức năng nhưng ở đây chúng ta chỉ đi tìm hiểu
một số chức năng cơ bản cần thiết.
BackgroundColor: Màu nền của đối tượng.
FontName: Kiểu chữ.
10


FontSize: Cỡ chữ.
ForegroundColor: Màu chữ.
String: Tên các đối tượng điều khiển
Style: Kiểu của đối tượng điều khiển.
Tag: Dùng để phân biệt giữa các đối tượng điều khiển.
2.1.2 Thiết kế giao diện Gui
2.1.2.1 Thiết kế giao diện load và hiển thị ảnh đơn giản

Nút Load Image chức năng điều khiển lệnh load ảnh.
Khung Axes2 để hiển thị hình ảnh.
2.1.2.2 Thiết lập mã lệnh (code) load và hiển thị ảnh cho nút nhấn
Tất cả các hàm function đều được Matlab hỗ trợ tạo sẵn các hàm chức năng có liên
quan, ta chỉ việc thao tác trên đó. Mỗi Funtion trong file .m tương đương với một hàm
trong hộp thoại ( nút nhấn) mà ở đó chúng ta có thể viết lệnh cho nó.
11



Mỗi một lệnh được viết với cấu trúc như sau:
- function Tag_Callback(hObject, eventdata, handles)

Với Tag chính là giá trị của Tag mà ta đã đặt khi tạo giao diện. Các hàm chứa bên
trong callback bao gồm hObject, evendata,handles
-hObject là hàm truy cập nội bộ của mỗi function riêng lẽ
-Evendata là hàm xác đinh thuộc tính của function
-Handles là hàm truy cập liên kết giữa các function, nó bao gồm tất cả các cấu trúc
của người dùng, được sử dụng để truy xuất qua các điều khiển khác.
Code tạo lệnh load và hiển thị ảnh cho nút nhấn:
global im
a=imgetfile();
im=imread(a);
axes(handles.axes2);
imshow(im);
Trong đó:
-Global là hàm định nghĩa cho một biến nào đó
-Imgetfile là hàm hiển thị hộp thoại mở hình ảnh để người dùng điền vào và trả về
đường dẫn đầy đủ đến tệp được chọn.
- axes(handles.axes2) : Xác định vị trí hiển thị dữ liệu trên khung axes2.

12


2.2 CHUYỂN ẢNH MÀU RGB SANG ĐA MỨC XÁM (GRAYSCALE)
2.2.1 Lý thuyết tổng quan
2.2.1.1. Mức xám: Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của
điểm ảnh và độ xám của nó. Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ
thường dùng trong xử lý ảnh.


Định nghĩa: 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
1 byte biểu diễn: 28 =256 mức, tức là từ 0 đến 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ả 21 mức khác
nhau. Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1.
Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để 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 màu. Chúng ta cầ đọc thêm sách tham khảo để có thêm thông tin
về các khái niệm này.
2.2.1.2. Ảnh xám (grayscale)
Ảnh xám (còn được gọi là gray-scale, gray scale, or gray-level) là ma trận dữ liệu có
các giá trị đại diện cho cường độ trong một phạm vi nào đó. MATLAB lưu trữ hình ảnh xám

13


thành một ma trận riêng lẻ, với mỗi phần tử của ma trận tương ứng với một pixel hình
ảnh. Theo quy ước, tài liệu này sử dụng tên biến Iđể tham chiếu đến hình ảnh thang độ xám.
Ma trận có thể của lớp uint8, uint16, int16, single, hoặc double. Trong khi hình ảnh
màu xám hiếm khi được lưu với một bản đồ màu, MATLAB sử dụng một bản đồ màu để
hiển thị chúng.
Đối với ma trận của lớp single hoặc double, sử dụng bản đồ màu xám mặc định, cường
độ 0 đại diện cho màu đen và cường độ 1 biểu thị màu trắng. Đối với một ma trận
loại uint8, uint16 hoặc int16, cường độ intmin(class(I)) đại diện cho màu đen và cường
độ intmax(class(I)) đại diện cho màu trắng.
Hình bên dưới mô tả một hình ảnh màu xám của lớp double:


Giá trị pixel trong hình ảnh thang độ xám xác định cấp độ màu xám

2.2.1.3. Công thức chuyển màu từ RGB thành ảnh xám
Trong bài viết này tôi sẽ giới thiệu phương thức chuyển đổi từ ảnh 24 bits RGB sang ảnh
8bits đa mức xám. Để thực hiện yêu cầu trên, thông thường ta sử dụng một trong những
công thức sau đây, áp dụng cho từng điểm ảnh [x, y]:
I(x, y) = 0.3086 * Red(x, y) + 0.6094 * Green(x, y) + 0.0820 * Blue(x, y)
14


I(x, y) = 0.299 * Red(x, y) + 0.587 * Green(x, y) + 0.114 * Blue(x, y)
I(x, y) = ( 2 * Red(x, y) + 5 * Green(x, y) + 1 * Blue(x, y) ) / 8
*Phân tích


I(x, y): Là cường độ sáng tại điểm ảnh (x, y) của ảnh xám.



Red(x, y): Là giá trị của kênh màu Red(Đỏ) tại điểm ảnh (x, y) của ảnh màu(RGB).



Green(x, y): Là giá trị của kênh màu Green(Xanh lá cây) tại điểm ảnh (x, y) của ảnh
màu(RGB).



Blue(x, y): Là giá trị của kênh màu Blue(Xanh lơ) tại điểm ảnh (x, y) của ảnh

màu(RGB).
*Chú ý: giá trị mỗi điểm ảnh I(x,y) hay còn gọi là cường độ sáng (Luminance

Intensity) trong ảnh đa mức xám tính được là tổng trọng số khác nhau của mỗi thành phần
màu trong hệ màu RGB. Một trong những lý do của việc này là nếu chúng ta sử dụng cùng
trọng số, ví dụ (R + G + B) / 3 thì màu đỏ, màu xanh nước biển hay màu xanh da trời sẽ có
cùng mức xám sau khi chuyển đổi. Mặt khác theo khoa học đã chứng minh thì mắt người
nhạy cảm hơn với thành phần màu xanh lá cây và màu đỏ so với xanh da trời.
2.2.2. Kết quả thực hiện

15


Ví dụ về việc chia ảnh màu RBG thành các kênh màu và ảnh xám tương đương của
mỗi kênh màu.

2.3. KỸ THUẬT LỌC ẢNH BẰNG BỘ LỌC TRUNG BÌNH
2.3.1. Lý thuyết tổng quan
2.3.1.1 Bộ lọc ảnh
Một bộ lọc ảnh không gian bao gồm:
- 1 mặt nạ (thường là 1 hình chữ nhật nhỏ)
- phép toán được định nghĩa trước thực hiện trên các điểm ảnh được bao phủ bởi mặt
nạ.
Qúa trình lọc ảnh gồm các bước sau:
--Xác định điểm trung tâm của mặt nạ.
- Tại điểm (x, y) đang xét (trùng với tâm mặt nạ), thực hiện phép toán lọc trên các
điểm lân cận (bị mặt nạ bao phủ).
- Ghi nhận kết quả phép lọc là giá trị mức xám của điểm ảnh (x, y) trong ảnh đầu ra.
- Lần lượt trượt mặt nạ tới những điểm chưa xét. Lặp lại bước (2). Quá trình lọc kết
16



thúc khi điểm trung tâm của mặt nạ lần lượt thăm hết từng điểm ảnh của ảnh đầu vào, ta thu
được kết quả ảnh đã được lọc ở đầu ra.
Dựa vào phép toán áp dụng trong bộ lọc mà ta có 2 loại bộ lọc:
+ Bộ lọc tuyến tính: khi phép toán thực hiện trên các điểm ảnh là tuyến tính
+ Bộ lọc phi tuyến: khi phép toán thực hiện trên các điểm ảnh là phi tuyến

Hình vẽ biểu diễn hoạt động của một bộ lọc không gian tuyến tính sử dụng mặt nạ
kích thước 3*3.
Tại bất kì điểm (x,y) nào của ảnh, đáp ứng g(x,y) của bộ lọc là tổng các tích của hệ số
lọc và giá trị các điểm ảnh bao phủ bởi mặt nạ:
g(x, y) = w(−1, −1)f(x − 1, y − 1) + w(−1,0)f(x − 1, y) + … + w(0,0)f(x, y)
17


+ … + w(1,1)f(x + 1, y + 1)
Hệ số trung tâm của mặt nạ w(0,0) tương ứng với điểm ảnh ở vị trí (x,y) đang xét. Mặt
nạ kích thước m*n, ta thường chọn m,n là số lẻ.
Giả thiết rằng m=2a+1, n=2b+1, với a,b >= 1. Kích thước mặt nạ nhỏ nhất có ý nghĩa
là 3*3.
Khi trượt mặt nạ trên ảnh đầu vào, một vấn đề ta cũng cần quan tâm là tiến hành lọc tại
các điểm nằm gần biên ảnh. Với một bộ lọc vuông n*n, tại vị trí cách biên một khoảng cách
(n-1)/2 bộ lọc sẽ có biên trùng khít với biên ảnh, nhưng đối với các điểm ảnh nằm gần biên
thì một hoặc một số hàng hoặc cột của ma trận lọc sẽ nằm bên ngoài ảnh.
Có nhiều giải pháp để giải quyết vấn đề này. Một giải pháp đơn giản là ta chỉ tiến hành
xử lý tại các điểm có khoảng cách không nhỏ hơn (n-1)/2 so với biên ảnh. Kết quả là ảnh
sau lọc có kích thước nhỏ hơn so với ảnh gốc nhưng toàn bộ điểm ảnh đều được xử lý.
Trong trường hợp cần ảnh sau xử lý có cùng kích thước với ảnh gốc, ta có thể mở rộng
ảnh gốc bằng cách:

+ Thêm giá trị 0 vào các điểm ảnh bên ngoài,
+ Thêm các điểm ảnh bên ngoài lặp lại giá trị của điểm ảnh biên
+ Thêm các mức xám bên ngoài đối xứng gương với các điểm ảnh bên trong qua biên.
Có 2 khái niệm cần nắm rõ trước khi đi sâu vào lọc ảnh tuyến tính, đó là: Tương quan
và Tích chập. Đối với tương quan, mặt nạ lọc trượt trên ảnh và tính tổng của các điểm bị
mặt nạ che phủ ở từng vị trí. Đối với tích chấp, cơ chế tương tự nhưng chỉ khác là mặt nạ
lọc được quay 180° trước khi trượt. Ta sẽ giải thích rõ hơn dưới đây.
Đối với một bộ lọc kích thước m x n, chúng ta mở rộng hình ảnh với tối thiểu là m- 1
dãy số 0 ở phía trên và phía dưới; và n-1 cột của các giá trị 0 ở bên trái và bên phải. Trong
trường hợp này, m và n là bằng 3, vì vậy chúng ta mở rộng f với hai hàng 0 trên và dưới và
hai cột 0 bên trái và bên phải, như hình (b) cho thấy.
Hình (c) cho thấy vị trí ban đầu của mặt nạ lọc để thực hiện tương quan, và hình (d)
cho thấy kết quả tương quan đầy đủ. Hình (e) cho thấy kết quả cắt tương ứng. Lưu ý là kết
18


quả thu được là các giá trị mặt nạ được quay bằng 180°. Đối với tích chập, chúng ta xoay
trước mặt nạ 180° và tiến hành các bước như trên. Hình (f), (g), (h) cho ta thấy kết quả. Ta
thấy tích chập của một hàm với một xung là bản sao của hàm tại địa điểm của xung. Nếu
mặt nạ lọc là đối xứng, tương quan và tích chập mang lại kết quả tương tự.

19


2.3.1.2 Lọc tuyến tính
Đầu ra (phản ứng) của một bộ lọc không gian tuyến tính chỉ đơn giản là mức trung
bình của các điểm ảnh lân cận bị bao phủ bởi mặt nạ lọc. Các bộ lọc này được gọi là các bộ
lọc trung bình.
Ý tưởng đằng sau các bộ lọc làm mịn là đơn giản. Bằng cách thay thế các giá trị của
mỗi điểm ảnh trong hình ảnh bằng mức trung bình của mức cường độ của các điểm lân cận

được xác định bởi mặt nạ lọc, quá trình này tạo ra một hình ảnh bị giảm chuyển tiếp "mạnh"
trong cường độ.
Bởi vì nhiễu ngẫu nhiên thông thường bao gồm quá trình chuyển đổi mạnh mức cường
độ, ứng dụng rõ ràng nhất của làm mịn là giảm nhiễu. Tuy nhiên, các cạnh (mà hầu như
luôn luôn là các tính năng mong muốn của một hình ảnh) cũng được đặc trưng bởi quá trình
chuyển đổi cường độ sắc nét, bộ lọc trung bình có tác dụng phụ không mong muốn rằng
chúng làm giảm cạnh.
Hình dưới đây là 2 mặt nạ lọc tuyến tính kích thước sử dụng trong làm mịn ảnh.
20


.
Ở bộ lọc thứ nhất, giá trị mức xám đầu ra là giá trị trung bình chuẩn của các giá trị ở
các điểm ảnh bị bao phủ bởi mặt nạ. Các hệ số của bộ lọc là 1 thay vì là 1/9 là để cho việc
tính toán được hiệu quả hơn. Sau khi quá trình lọc kết thúc, tất cả các giá trị điểm ảnh sẽ
được chia cho 9. Bộ lọc không gian mà các hệ số trong mặt nạ đều bằng nhau được gọi là bộ
lọc trung bình (Mean Filter).
Ở bộ lọc thứ hai, các giá trị điểm ảnh được nhân với các hệ số khác nhau, thể hiện sự
quan trọng (trọng lượng) so với các điểm khác. Điểm ảnh ở giữa mặt nạ được nhân với giá
trị lớn hơn, thể hiện sự quan trọng lớn hơn trong tính toán giá trị trung bình. Các hệ số khác
được coi như là khoảng cách từ điểm đó tới trung tâm mặt nạ, các láng giềng trực giao xa
hơn nên có trọng số nhỏ hơn so với các láng giềng trực tiếp. Chiến lược đặt hệ số như thế
cho mặt nạ nhằm nỗ lực giảm mờ trong quá trình làm mịn ảnh.
Biểu thức thực thi tổng quát để lọc tuyến tính một ảnh kích thước M×N bằng bộ lọc
trung bình trọng số w kích thước m×n (m,n lẻ) :

Trong đó, m = 2a+1; n=2b+1; x, y thay đổi, biểu diễn mọi điểm ảnh của ảnh gốc: x=
0,1,2, … , M − 1
và y= 0,1,2, … , N – 1
21



2.3.1.3 Lọc nhiễu làm trơn ảnh bằng bộ lọc trung bình
Khái quát:
Lọc trung bình là kĩ thuật lọc tuyến tính, hoạt động như một bộ lọc thông thấp. Ý
tưởng chính của thuật toán lọc Trung vị như sau: ta sử dụng một cửa sổ lọc (ma trận 3x3)
quét qua lần lượt từng điểm ảnh của ảnh đầu vào input. Tại vị trí mỗi điểm ảnh lấy giá trị
của các điểm ảnh tương ứng trong vùng 3x3 của ảnh gốc "lấp" vào ma trận lọc. Giá trị điểm
ảnh của ảnh đầu ra là giá trị trung bình của tất cả các điểm ảnh trong cửa sổ lọc. Việc tính
toán này khá đơn giản với hai bước gồm tính tổng các thành phần trong cửa sổ lọc và sau đó
chia tổng này cho số các phần tử của cửa sổ lọc.
Sẽ dễ hình dung hơn bằng mô tả trong hình dưới đây:

Thuật toán:
Sơ lược một cách ngắn gọn các bước của giải thuật:

1. Quét cửa sổ lọc lần lượt lên các thành phần của ảnh đầu vào; điền các giá trị
được quét vào cửa sổ lọc.

2. Xử lý bằng cách thao tác trên các thành phần của cửa sổ lọc.
3. Tính giá trị trung bình các thành phần trong cửa sổ lọc.
22


4. Gán giá trị trung bình này cho giá trị điểm ảnh ở đầu ra.

23


2.3.2 Kết quả thực nghiệm

Đầu vào: Ảnh bị nhiễu
Đầu ra: Ảnh được lọc nhiễu làm trơn.
Sử dụng bộ lọc trung bình có thể lọc nhiễu làm trơn ảnh nhưng tùy thuộc vào
ảnh bị nhiễu theo kiểu nào mà kết quả đầu ra sẽ khác nhau.Ví dụ:

Ảnh bị nhiễu được lấy làm đầu vào
Ảnh không chấp nhận được sau khi lọc

Ảnh chấp nhận (cải thiện tốt) sau khi lọc

Chú ý : Bộ lọc trung bình hiệu quả nhất trong việc khử nhiễu Gaussian nhưng đổi lại
là sự mất các chi tiết hình ảnh cao tần. Kích thước kernel lớn hơn sẽ có hiệu quả lọc lơn hơn
nhưng làm giảm chất lượng hình ảnh nên lọc này không hiệu quả trong việc khử nhiễu ‘salt
and pepper’. Ta có thể cải tiến bộ lọc này bằng cách tạo một ngưỡng và chỉ thay thế các giá
trị điểm ảnh hiện tại với giá trị trung bình của vùng lân cận nếu độ lớn của giá trị trung bình
nằm nằm dưới ngưỡng này.
24


2.4. KỸ THUẬT TÁCH BIÊN ẢNH SỬ DỤNG MẶT NẠ SOBEL
2.4.1. Lý thuyết tổng quan
2.4.1.1 Tách biên
Biên là sự liên kết giữa hai vùng có mức xám tương đối khác nhau. Tư tưởng cơ bản
của kỹ thuật tách biên là tính vi phân cục bộ. Vi phân bậc một tạ bất kì một điểm trong một
ảnh được thực hiện bằng cách dung biên độ gradient tại điểm đó .Vi phân tương tự được
thực hiện bằng laplace.
Ý tưởng cơ bản đằng sau tách biên là tìm các nơi trong ảnh có cường độ thay đổi
nhanh, sử dụng một trong hai tiêu chuẩn tổng quát sau :
+ Tìm các đạo hàm bậc nhất có cường độ sáng có biên độ hơn một ngưỡng .
+ Tìm các nơi đạo hàm bậc hai của cường độ sáng có chỗ chéo 0.

2.4.1.2. Tách biên Sobel
Bộ tách biên sobel sử dụng các mặt nạ để sấp xỉ đạo hàm bậc nhất. 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.
Cú pháp gọi bộ tách sobel tổng quát là :
[ g,t ]=edge( f, ‘sobel’,T)
Trong đó f là ảnh đầu vào, T là ngưỡng được chỉ định. Như đã nói , g là ảnh logic
chứa giá trị 1 và 0 tại những nơi biên được tách. Tham số t trong ngõ ra là tùy chọn. Nó là
giá trị ngưỡng được dùng bởi edge. Nếu T được chỉ định thì t=T. Mặt khác nếu T không
được chỉ định , f sẽ đặt t bằng với ngưỡng do nó tự động xác định và sau đó sử dụng cho
việc tách biên. Hàm edge sẽ sử dụng bộ tách sobel mặc định , nếu cú pháp :
g=edge(f) hoặc là [g,t]=edge(f)

25


×