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

Ứng dụng xử lý ảnh trong điều khiển robot tự động

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 (988.57 KB, 59 trang )

MỤC LỤC

LỜI CẢM ƠN
Lời đầu tiên cho em gửi lời cảm ơn chân thành nhất tới tất cả các thầy, cô
giáo Trường Đại học Công nghệ Thông tin & Truyền thông - Đại học Thái
Nguyên nói chung và các thầy cô giáo trong Bộ môn Các Hệ thống Thông tin nói
riêng. Các thày, cô đ-ã tận tình giảng dạy, trang bị cho em vốn kiến thức cũng
như những kinh nghiệm quý báu để em có thể đạt được kết quả tốt nhất trong
học tập cũng như trong công việc của em sau này. Đặc biệt em xin chân thành
cảm ơn thầy giáo Tiến sỹ Phạm Đức Long đã trực tiếp hướng dẫn giúp đỡ em
trong thời gian làm đồ án vừa qua. Trong thời gian hướng dẫn tuy thầy rất bận
nhưng thầy vẫn dành thời gian chỉ bảo truyền đạt cho em những kinh nghiêm và
những định hướng cho đồ án của em đảm bảo kết quả, và hoàn thành đúng thời
gian theo quy định. Cuối cùng em xin cảm ơn sự giúp đỡ, động viên của gia
đình, bạn bè dành cho em trong suốt thời gian qua.

1


Thái nguyên, tháng 06 năm 2012
Sinh viên
Nguyễn Thị Thu Hoàn

LỜI CAM ĐOAN
Đồ án tốt nghiệp là sản phẩm tổng hợp toàn bộ các kiến thức mà sinh viên
đã học được trong suốt thời gian học tập tại trường đại học. Ý thức được điều đó,
với tinh thần nghiêm túc, tự giác cùng sự lao động miệt mài của bản thân và sự
hướng dẫn tận tình của thầy giáo Tiến sỹ Phạm Đức Long em đã hoàn thành đồ
án tốt nghiệp của mình.
Em xin cam đoan: nội dung đồ án của em không sao chép nội dung cơ bản từ các
đồ án khác và sản phẩm của đồ án là của chính bản thân em nghiên cứu xây dựng


lên. Mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước hội đồng bảo
vệ.

Sinh viên
Nguyễn Thị Thu Hoàn

2


LỜI NÓI ĐẦU
Ngày nay công nghệ thông tin ngày càng không thể thiếu với đời sống của
con người với tốc độ phát triển vũ bão của công nghệ thông tin làm cho việc luân
chuyển thông tin trở nên cực kỳ nhanh chóng và vai trò của thông tin ngày càng
trở nên quan trọng. Cùng với sự phát triển chung của thế giới và khu vực trong
những năm gần đây ngành tin học Việt Nam cũng có những bước phát triển vượt
bậc.
Trong thời đại mới việc đẩy mạnh ứng dụng công nghệ thông tin vào thực
tiễn là một mục tiêu được Nhà nước quan tâm và phát triển. Việc nắm bắt, khai
thác, xử lý thông tin càng nhanh, càng linh hoạt, càng chính xác bao nhiêu thì kết
quả thành công càng cao.
Với mong muốn tìm hiểu,tiếp cận với công nghệ thông tin trong thời đại mới
để có thêm kiến thức cho con đường lập nghiệp trong tương lai, em đã chọn đề
tài: Ứng dụng xử lý ảnh trong điều khiển robot tự động.
Mục tiêu của đề tài cần giải quyết vấn đề sau:
Xây dựng chương trình cho camera đặt trên một robot tự động xác định hướng và
khoảng cách tới một đối tượng để cung cấp thông tin cho máy tính điều khiển
robot.

3



Trên cơ sở đó, nội dung của đề tài gồm 3 chương sau:
Chương 1 : Tổng quan về xử lý ảnh.
Chương 2 : Tổng quan về C sharp.
Chương 3: Ứng dụng xử lý ảnh để điều khiển robot tự động.
Mặc dù đã cố gắng nhưng chắc chắn đồ án của em không tránh khỏi những
thiếu sót và hạn chế. Em rất mong nhận được sự đóng góp ý kiến của các
thầy(cô) giáo để đề tài của em hoàn thiện hơn.
Em xin chân thành cảm ơn!

DANH MỤC HÌNH ẢNH

CHƯƠNG 1
TỔNG QUAN VỀ XỬ LÝ ẢNH

1.1 Tổng quan về xử lý ảnh

4


Xử lý ảnh là một lĩnh vực đang được quan tâm, xử lý ảnh có quan hệ mật
thiết với nhận thức về ảnh của con người. Tổng quát với hệ thống xử lý ảnh như
sau:

Hình 1: Các bước cơ bản của hệ thống xử lý ảnh
Theo sơ đồ trên, ảnh cần được xử lý sẽ thu qua hệ thống thu nhận ảnh. Hệ thống
thu ảnh này bao gồm các thiết bị chụp ảnh như camera, máy quét, máy scanner,
máy chụp hình, TiVi camera…
Ảnh sau khi thu nhận qua hệ thống thu nhận ảnh sẽ tiền xử lý, trích chọn đặc
trưng, hậu xử lý,sau đó ảnh đượclưu thành file để đưa vào máy tính xử lý, lưu

trữ, hoạc được đem ra đối sánh để đưa ra kết luận. Một số hệ thống có thể bao
gồm các chức năng lấy mẫu và số hóa ảnh.
Có nhiều loại file ảnh khác nhau: file bitmap, file jpeg, file gif,. Ảnh gốc sau
khi đã số hóa được đưa vào máy tính để xử lý. Và tùy theo từng ứng dụng cụ thể
mà chọn ra các cách xử lý thích hợp.

5


1.2 Các vấn đề cơ bản trong xử lý ảnh
1.2.1 Một số khái niệm

 Pixel (Picture Element): Phần tử ảnh
Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sáng.
Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hóa ảnh. Trong quá
trình số hóa người ta biến đổi tín hiệu liên tục sang tín hiệu rời rạc thông qua quá
trình lấy mẫu (rời rạc hóa về không gian) và lượng tử hóa thành phần giá trị (rời
rạc hóa biên độ giá trị), về nguyên tắc bằng mắt thường không phâ biệt được hai
mức kề nhau. Do vậy người ta sử dụng khái niệm Pixel- phần tử ảnh. Mỗi pixel
gồm một cặp tọa độ x,y và màu. Cặp tọa độ x,y tạo nên độ phân giải (resolution).
 Ảnh: Là một tập hợp các điểm ảnh. Khi được số hóa, nó thường được biểu diễn
bởi mảng hai chiều l (n,p): n là số dòng, p là số cột. ta nói ảnh gồm n*p pixel. Ta
ký hiệu l (x,y) để chỉ một điểm ảnh.
 Mức xám (Gray level): Là kết quả của sự mã hóa 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ử hóa.
 Lược đồ mức xám (Histogram): Là mộ hàm cung cấp tần suất xuất hiện của mỗi
mức xám. Lược đồ mức xám được biểu diễn bởi hệ tọa độ vuông góc x,y. Trong
hệ tọa độ này, trục hoành biểu diễn số mức xám từ 0 đến N, N là số mức xám (Số
điểm ảnh có cùng mức xám).
1.2.2 Thu nhận ảnh

Muốn xử lý ảnh trên máy tính ta cần phải số hóa ảnh, tức là đưa ảnh từ
thực tế vào máy tính. Ta dùng các thiết bị thu nhận như: Camera cộng với bộ
chuyển đổi tương tự số AD (Analog to Digital) hoặc máy quét chuyên dụng.
1. 2.3 Biểu diễn ảnh
Ảnh có thể biểu diễn dưới dạng tương tự hoặc tín hiệu số. Trong biểu diễn số
của các ảnh đa mức xám, một ảnh được biểu diễn dưới dạng một ma trận hai
chiều. Mỗi phần tử của ma trận biểu diễn cho mức xám, hay cường độ sáng của

6


ảnh tại vị trí đó. Mỗi phần tử trong ma trận được gọi là phần tử ảnh, thông
thường ký hiệu là PEL (Picture Element) hoặc là điểm ảnh (Pixel).

 Với ảnh đen trắng: Nếu dùng 8 bit (1 byte) để biểu diễn mức xám thì số các mức
xám có thể biểu diễn được là 2 8 hay 256. Mỗi mức xám được biểu diễn dưới
dạng là một số nguyên nằm trong khoảng từ 0 đến 255, với mức xám 0 biểu diễn
cho mức cường độ sáng nhất và 255 biểu diễn cho mức cường độ đen nhất.
 Với ảnh màu: Cách biểu diễn cũng tương tự như đối với ảnh đen tráng, chỉ khác
là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng rẽ gồm : Đỏ
(red), lục (green), lam (blue). Để biểu diễn cho một điểm ảnh màu cần 24bit, 24
bit này được chia thành ba khoảng 8bit. Mỗi khoảng này biểu diễn cho cường độ
sáng của một trong các màu chính. Để hiểu được việc số hóa ảnh ta xem hình4.
Trong đó độ sáng trung bình của mỗi hình chữ nhật bằng giá trị một điểm ảnh.

Hình 2: Biểu diễn của một mức xám của ảnh số
Sau quá trình số hóa ta sẽ thu được một ma trận tương ứng với ảnh cần
xét, mỗi phần tử của ma trận tương úng với một điểm ảnh. Các điểm này thường
được đặc trưng bởi tọa độ màu RGB tương ứng với nó trong hệ tọa độ màu cơ
bản sau:


`

7


Hình 3: Hệ tọa độ màu RGB
Về mặt toán học ta có thể xem ảnh như là một hàm hai biền(x,y), với x,y
là các biến tọa độ. Giá trị số tại điểm (x,y) tương ứng với giá trị xám hoặc độ
sáng của ảnh.
1.2.4 Các lĩnh vực xử lý ảnh
1.2.4.1 Nâng cao chất lượng ảnh
Nâng cao chất lượng ảnh là quá trình xử lý ảnh để nâng cao chất lượng của
ảnh. Nó làm nổi bật một số đặc tính nào đó của ảnh nhằm phục vụ cho hiển thị
hoặc các quá trình phân tích tiếp theo. Tùy theo các ứng dụng khác nhau mà
chúng ta có các kỹ thuật nâng cao chất lượng ảnh khác nhau. Nâng cao chất
lượng ảnh có quan hệ gần gũi với khôi phục ảnh. Khi một ảnh bị nhiễu, thì khôi
phục ảnh gốc thường đưa đến nâng cao chất lượng ảnh. Có một số khác biệt giữa
khôi phục và nâng cao chất lượng ảnh. Trong khôi phục ảnh, một ảnh gốc bị
nhiễu, và mục tiêu là làm cho ảnh sau khi xử lý càng giống ảnh gốc càng tốt. Còn
nâng cao chất lượng ảnh thì mục tiêu là làm cho ảnh sau khi xử lý được tốt hơn
khi chưa xử lý. Như vậy một ảnh không bị nhiễu thì không thể được xử lý bằng
các kỹ thuật khôi phục ảnh nhưng ảnh đó có thể được xử lý bằng các kỹ thuật
nâng cao chất lượng ảnh. Nhưng một ảnh bị nhiễu thì nó có thể được xử lý vừa
bằng các kỹ thuật khôi phục ảnh và nâng cao chất lượng ảnh.
1.2.4.2 Khôi phục ảnh
Bất kỳ ảnh nào được thu bằng các thiệt bị điện, hay quang điện, hay
quang học thường bị nhiễu bởi các môi trường cảm biến của các thiệt bị đó. Các
loại nhiễu có thể là nhiễu hệ thống, bị mờ do lệch tiêu điểm của camera, nhiễu
ngẫu nhiên do chuyển động giữa camera và các đối tượng được chụp, nhiễu do

khí quyển.
Khôi phục ảnh dùng các bộ lọc để lọc các ảnh bị nhiễu để giảm tối thiểu
sự ảnh hưởng của các loại nhiễu này cho ra ảnh kết quả càng gần giống với ảnh
gốc càng tốt. Hiệu quả của các bộ lọc khôi phục ảnh phụ thuộc vào sự nhận biết
về quá trình nhiễu cùng với quá trình thu nhận ảnh. Khôi phục ảnh thường được
8


xử lý trên miền tần số là chủ yếu. Bao gồm các kỹ thuật lọc ngược, lọc bình
thường tối thiểu.
1.2.4.3 Phân tích ảnh
Là quá trình suy luận, tính toán dựa vào các đặc tính thể hiện trên hình
ảnh để từ đó rút ra được các thông tin định lượng về ảnh. Phân tích ảnh có thể
tách biên các vật thể trên ảnh, đo lường, phân loại, mô tả, so sánh chúng. Mặt
khác, từ việc phân tích ảnh cũng có thể suy ra các số liệu thống kê về hình ảnh.
Phân đoạn ảnh(Segmentation) là một hướng riêng của phân tích ảnh. Phân
đoạn ảnh bao gồm các kỹ thuật phân tách các đối tượng của ảnh thành những đối
tượng có những nét đặc trưng của nó oặc tách biệt hoàn toàn giữa đối tượng và
nền. Mục đích là để cho dễ quan sát và xử lý.
1.2.4.4 Nén ảnh
Nén ảnh bao gồm các kỹ thuật nén dữ liệu hình ảnh nhằm giảm tối thiểu dung
lượng ảnh, ảnh nén trước khi mô tả hay xử lý cần được giải nén.
1.2.4.5 Tổng hợp ảnh
Tạo ra hình ảnh từ những hình ảnh khác hoặc từ các số liệu không phải ảnh.
Quá trình tổng hợp ảnh được sử dụng khi một hình ảnh mà ta muốn có nhưng
không hề thu nhận được (do ảnh không có thực).
1.2.5 Một số hệ thống xử lý ảnh cơ bản
Một hệ thống xử lý ảnh cơ bản có thể bao gồm: Máy tính cá nhân kèm
theo vi mạch chuyển đổi đồ họa VGA hoặc SVGA, đĩa chứa các ảnh mà bạn
dùng để kiểm tra các thuật toán và một màn hình có hỗ trợ VGA hoặc SVGA.

1.3 Một số phương pháp xử lý ảnh
1. 3.1 Kỹ thuật tăng giảm độ sáng
Tăng cường độ sáng (Brightness) của một ảnh có thể được hiểu như sự
phát sáng toàn bộ ảnh. Hay nói một cách cụ thể đó là sự phát sáng toàn bộ của
mọi Pixel trong ảnh đó.

9


Đây là một kỹ thuật khá đơn giản: để tăng thêm độ sáng, tất cả các Pixel của
ảnh cần được cộng thêm giá trị điều chỉnh vào mọi kênh màu RGB. Tuy kỹ thuật
này đơn giản nhưng nó đem lại hiệu quả khá cao và rất hay được sử dụng trong
lĩnh vực xử lý ảnh. Nó giúp ích rất nhiều trong các ngành như y học, địa lý, quân
sự,... trong việc phân tích và nhận dạng.
Ở đây điều chỉnh Brightness không chỉ được sử dụng để làm sáng lên những
ảnh tối mà còn được sử dụng để làm tối đi các ảnh sáng. Một ảnh sáng hoàn toàn
đơn giản là tất cả các Pixel đều màu trắng trong khi một ảnh tối tất cả các Pixel
đều màu tối. Sự khác nhau duy nhất trong làm tối một ảnh là trừ đi giá trị điều
chỉnh vào mỗi kênh màu R - G - B của ảnh.
Đối với mỗi kênh màu, chúng chỉ nhận các giá trị [0..255]. Chính vì thế khi
tăng cường hay giảm độ sáng của một ảnh ta phải chú ý đến ngưỡng của các
kênh. Điều đó có nghĩa là với mỗi kênh màu của một Pixel nếu nhỏ hơn 0 thì ta
phải gán bằng 0 và nếu lớn hơn 255 thì ta phải gán bằng 255.
Biểu thức cho kỹ thuật Brightness có dạng:
g(x,y) = f(x,y) + b
Trong đó b là hằng số cộng thêm vào giá trị màu f(x,y). Độ sáng của ảnh tăng
nếu b > 0, và giảm bớt nếu b < 0.
Thuật toán chung được miêu tả bằng :
If (Brightness = True) Then // Tăng độ sáng
NewValue = OldValue + Adjustment;

Else NewValue = OldValue - Adjustment; // Giảm độ sáng
If (NewValue < ValueMin) Then NewValue = ValueMin;
If (NewValue > ValueMax) Then NewValue = ValueMax;
Để cho thuật giả này nhanh hơn, chúng ta phân ra hai mức làm sáng

10


(Lightening) và làm tối (Darkening). Việc phân ra làm hai mức là có hai lý do.
Thứ nhất là khi làm sáng ảnh thì không phải kiểm tra nếu giá trị màu dưới 0 và
khi làm tối ảnh cũng không phải kiểm tra nếu giá trị màu trên 255. Lý do thứ hai
quan trọng hơn. Đó là một Byte chỉ giữ những giá trị giữa 0 và 255. Mà phạm vi
điều chỉnh màu lại nằm trong [-255..255]. Điều đó có nghĩa là nếu chúng ta
không phân ra làm hai mức thì giá trị điều chỉnh màu phải là Int và khi đó việc
xử lý tốn thêm thời gian sau mỗi vòng lặp.
Thuật toán trên có thể được cải tiến như sau:
If (Brightness = True) Then
NewValue = OldValue + Adjustment;
If (NewValue > 255) Then NewValue = 255;
Else

// Brightness=False

NewValue = OldValue - Adjustment;
If (NewValue < 0) Then NewValue = 0;
Với biến điều chỉnh màu Adjustment được khai báo kiểu Byte.

(a)

(b)


(c)

Hình 4: Ảnh gốc (a); ảnh đã giảm độ sáng (b); ảnh đã được tăng cường độ sáng
(c).

11


Sử dụng giải thuật này, ta có kết quả như trong hình 4. Ta nhận thấy rằng
những điểm đã sáng trắng trong ảnh gốc không được làm sáng hơn và các điểm
đã tối đen trong ảnh gốc cũng không được làm tối hơn.
1.3.2 Tăng giảm độ tương phản
Độ tương phản (Contrast) thể hiện sự thay đổi cường độ sáng của đối
tượng so với nền, hay nói cách khác, độ tương phản là độ nổi của điểm ảnh hay
vùng ảnh so với nền.
Ảnh số là tập hợp các điểm, mà mỗi điểm có giá trị độ sáng khác nhau. Ở đây,
độ sáng để mắt người dễ cảm nhận ảnh song không phải là quyết định. Thực tế
chỉ ra rằng hai đối tượng có cùng độ sáng nhưng đặt trên hai nền khác nhau sẽ
cho cảm nhận khác nhau. Vì vậy ta có thể thay đổi độ tương phản của ảnh sao
cho phù hợp.
Việc làm tăng độ tương phản rất hữu ích khi tiến hành xử lý trước theo
phương pháp phân ngưỡng. Bằng việc làm tăng độ tương phản, sự khác nhau của
giá trị nền và đối tượng, độ dốc của cạnh đối tượng được tăng lên. Do đó sau khi
làm tăng độ tương phản ta có thể tìm các giá trị màu thích hợp với một vùng sáng
hơn.
Trong một ảnh có độ tương phản cao, có thể xác định được các viền rõ ràng và
chi tiết khác nhau của ảnh đó được nổi bật. Còn trong một ảnh có độ tương phản
thấp, tất cả các màu đều gần như nhau gây khó khăn cho việc xác định các chi
tiết của ảnh.

Hình sau mô tả việc tăng và giảm độ tương phản đối với ảnh gốc.

(a)

(b)

(c)
12


Hình 5: (a) Ảnh gốc; (b) Ảnh đã giảm độ tương phản; (c) Ảnh đã tăng độ tương
phản.

Biểu thức cho kỹ thuật Contrast có dạng:
g(x,y) = af(x,y)

(3.3)

Trong đó a là hằng số nhân vào giá trị màu tại f(x,y). Độ sáng của ảnh tăng
nếu a > 1, và giảm bớt nếu a < 1.
Thuật toán được miêu tả như sau :
NewValue=OldValue/255; // Biến đổi đến một phần trăm
NewValue=NewValue - 0.5;
NewValue=NewValue*ContrastValue; //ContrastValue thuộc [-1,1]
NewValue=NewValue + 0.5;
NewValue=NewValue*255;
If (NewValue > 255) Then NewValue = 255;
If (NewValue < 0) Then NewValue = 0;
Biểu thức Brightness và Contrast có thể được kết hợp lại để có được biểu
thức sau:

g(x,y) = af(x,y) + b

(*)

Từ biểu thức (*) có thể điều chỉnh cả giá trị Brightness và Contrast.
1.3.3 Tách ngưỡng
Ta chọn hai mức Thấp - Min, Cao - Max và giá trị ngưỡng λ, khi đó giá trị
các pixel được định nghĩa lại như sau:
+ Inew(x, y) = Max nếu I(x, y) >= λ
+ Inew(x, y) = Min nếu I(x, y) < λ
Ví dụ ảnh phân ngưỡng theo 2 mức giá trị màu 0 và 255:

13


(a)

(b)
Hình 6: (a):ảnh xám. (b):ảnh đen trắng

1.3.4 Phép giãn ảnh đa cấp xám
1.3.4.1 Định nghĩa
Với ảnh đa cấp xám IMxN, THxK là mẫu. Gọi R là ảnh kết quả của của phép
giãn ảnh I bởi mẫu T. Khi đó R có kích thước (M+H-1, N+K-1) và được xác định
như sau:
+ I(x, y) = 0 với x= -(H-1) . .-1 hoặc M .. M+H-2; y = -(K-1) . .-1 hoặc N ..
N+K-2
+ R(x, y) = Max {I(x-i, y-j)+T(i,j)} với i = 0..H-1; j = 0..K-1; x=0.. M+H-1;
y=0..N+K-1
1.3.4.2 Thuật toán


VD: Cho ảnh I và mẫu T
như sau:
2 2 2

1 2

2

4 2

3 4

2

2 2

14


B1: Thêm các Pixel có mức xám = 0 vào xung quanh biên I sao cho kích
thước của ảnh là (M+2*H-2)x(N+2*K-2).
0 0 0 0 0
2 2 2

0 2 2 2 0

2 4 2

0 2 4 2 0


2 2 2

0 2 2 2 0
0 0 0 0 0

1

2

4 3

1 2 3

8 7 6

3

4

2 1

4 0 5

5 0 4

T’

6 7 8


3 2 1

T

B2: Quay mẫu T đi 180o được T’
B3: Dịch chuyển mẫu T’ trên ảnh I theo trật tự từ trên xuống dưới, từ trái sang
phải sao cho pham vi mẫu của T’ nằm trong ảnh I. Ở mỗi lần dịch chuyển, pixel
ảnh kết quả tương ứng có mức xám bằng giá trị lớn nhất của tổng các cặp pixel
của mẫu T’ và ảnh I tương ứng. Kết quả thu được có thể giảm đi cùng một giá trị
xám thích hợp.

15


0 0 0 0 0

4 4 4 4

2 2 2 2

0 2 2 2 0

4 6 6 6

2 4 4 4

0 2 4 2 0

4 6 8 8


2 4 6 6

0 2 2 2 0

4 6 8 8

2 4 6 6

0 0 0 0 0

1.3.5 Các tác động ảnh xám cục bộ
1.3.5.1 Tác động nhân chập ảnh
Phép nhân chập được định nghĩa như sau:
+k

+k

∑∑

A=C**B= c1

i =− k j =− k

C(i,j).B(x-i, y-j) + c0

Trong đó: c1 là hằng số để chia thang, c0 là hằng số cộng thêm vào; c0, c1 =
[0, 255]
: C là ma trận mặt nạ để thực hiện phép nhân chập. C thường có
kích thước (2k+1)x(2k+1).
Phép nhân chập có các tác dụng sau:

+ Loại bỏ điểm mép, ở bộ lọc (2k+1)x(2k+1) xuất hiện một mép
với độ rộng là k.
+ Sao chép mép ảnh cũ sang ảnh mới.
+ Kế tiếp các ảnh một cách tuần hoàn và tạo ra một tín hiệu tuần
hoàn.
+ Giảm các tín hiệu nhiễu.
1.3.5.2 Các phương pháp lọc-làm nhẵn
Trong nhiều lĩnh vực kỹ thuật, nhiễu đóng vai trò chủ yếu gây nên những
khó khăn khi ta cần phân tích một tín hiệu nào đó, cũng không loại trừ tín hiệu
16


ảnh. Giữa một ảnh thực và ảnh số hoá thu nhận được khác nhau khá nhiều vì có
nhiều quá trình can thiệp vào. Nguyên nhân là do nhiễu điện tử của máy thu hay
chất lượng kém của bộ số hoá. Ta xem xét biến nhiễu thể hiện trên ảnh thế nào.
Giả sử ảnh là một miền có mức xám đồng nhất, như vậy các phần tử của ma trận
biểu diễn ảnh sau quá trình số hoá phải có cùng giá trị. Nhưng thực tế quan sát ta
thấy: gần giá trị trung bình của mức xám có những phần tử trội lên khá nhiều. Đó
chính là hiện tượng nhiễu. Như vậy nhiễu trong ảnh số được xem như sự dịch
chuyển nhanh của tín hiệu thu nhận (tín hiệu ảnh I[m,n]) trên một khoảng cách
ngắn). Xem xét một cách tương đương trong không gian tần số, nhiễu ứng với
các thành phần tần số cao trong ảnh. Do vậy, người ta nghĩ đến việc biến đổi có
tính đến ảnh hưởng của các phần tử lân cận bằng cách lấy “tổ hợp” các điểm lân
cận này (trong không gian thực) hay lọc các thành phần tần số cao (trong không
gian tần số). Đây chính là kỹ thuật lọc (filtering). Cơ sở lý thuyết của kỹ thuật lọc
số là dựa trên tính dư thừa thông tin không gian: các pixel lân cận có thể có cùng
hoặc gần cùng một số đặc tính. Hơn nữa, nhiễu có thể coi như sự đột biến của
một điểm ảnh so với các điểm lân cận.
Trong kỹ thuật này, người ta sử dụng một mặt nạ và di chuyển khắp ảnh
gốc. Tuỳ theo cách tổ hợp điểm đang xét với các điểm lân cận mà ta có kỹ thuật

lọc tuyến tính hay phi tuyến. Điểm ảnh chịu tác động của biến đổi là điểm ở tâm
mặt nạ.
1.3.5.3 Bộ lọc phi tuyến
Trong kỹ thuật lọc tuyến tính, ảnh thu được sẽ là tổng trọng số hay là
trung bình trọng số các điểm lân cận với nhân cuộn hay mặt nạ. Vì có nhiều loại
nhiễu can thiệp vào quá trình xử lý ảnh nên cần có nhiều bộ lọc thích hợp. Để
làm trơn nhiễu ta sử dụng các mặt nạ thông thấp. VD:

0

1

0

1

1

1

1

17

1

1

1


2

1


1

1

1

1

1

1

1

2

1

2

4

2

0


1

0

1

1

1

1

1

1

1

2

1

Bộ

lọc

A. vùng lận

B. vùng lân


C. vùng lân

D.

cận 5 điểm

cận 9 điểm

cận 9 điểm

Gauss cho 9

không

cân bằng

điểm

cân

bằng

Lọc tuyến tính ngoài làm trơn nhiễu còn có thể trích chọn biên (nổi biên). Dễ
dàng nhận thấy rằng biên là điểm có độ biến thiên nhanh về giá trị mức xám.
Theo quan điểm về tần số tín hiệu, các điểm biên ứng với các thành phần tần số
cao. Do vậy, ta có thể dùng bộ lọc thông cao để cải thiện: lọc các thành phần tần
số thấp và chỉ giữ lại thành phần tần số cao. Vì thế, lọc thông cao thường được
dùng làm trơn biên trước khi tiến hành các thao tác với biên ảnh. Dưới đây là một
số mặt nạ dùng trong lọc thông cao:


-1
-1
-1

-1
9
-1

-1
-1
-1

0
-1
0

-1
5
-1

0
-1
0

Các nhân chập thông cao thông thường có đặc tính chung là tổng các hệ
số của bộ lọc bằng 1. Nguyên nhân chính là ngăn cản sự tăng quá giới hạn của
các giá trị mức xám (các giá trị điểm ảnh vẫn giữ được giá trị của nó một cách
gần đúng không thay đổi quá nhiều với giá trị thực).
1.3.5.4 Lọc phi tuyến

Khác với lọc tuyến tính, kỹ thuật lọc phi tuyến coi một điểm ảnh kết
quả không phải là tổ hợp tuyến tính của các điểm lân cận. Người ta thường sử
dụng 3 bộ lọc đó là: trung vị, giả trung vị và lọc ngoài

18


a) Lọc trung vị
Điểm ảnh đầu vào sẽ được thay thế bằng trung vị các điểm ảnh. Kỹ thuật này
đòi hỏi giá trị các điểm ảnh phải được sắp theo thứ tự tăng hay giảm dần. Kích
thước của sổ cũng được chọn (2k+1)x(2k+1). Lọc trung vị có tác dụng sau:
+ Hữu ích cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độ
phân giải.
+ Hiệu quả giảm các điểm nhiễu trong cửa sổ lớn hơn hoặc bằng một nửa số
điểm trong cửa sổ.
b) Lọc giả trung vị
Lọc giả trung vị tương tự như lọc trung vị nhưng giá trị được thay thế sẽ là
trung bình cộng của hai giá trị lớn nhất và nhỏ nhất trong mặt nạ
Value = [ValueMin + ValueMax]/2.
c) Lọc ngoài
Giả sử có một ngưỡng xám cho các mức nhiễu tức là các giá trị vượt quá mức
này thi coi là nhiễu. Khi đó với các điểm nhiễu sẽ được thay thế bằng giá trị
trung bình của các điểm lân cận nó theo một cửa sổ có tâm trùng với điểm ảnh
đầu vào, thường là (2k+1)x(2k+1). Điều quan trọng ở đây đó là xác định ngưỡng
xám.
1.3.6 Phép co ảnh đa cấp xám
1.3.6.1 Định nghĩa
Với ảnh đa cấp xám IMxN, THxK là mẫu. Gọi R là ảnh kết quả của của phép
co ảnh I bởi mẫu T. Khi đó R có kích thước (M+1-H, N+1-K) và được xác định
như sau:

+ R(x, y) = Min {I(x+i, y+j)-T(i,j)} với i = 0..H-1; j = 0..K-1; x=0.. M+1-H;
y=0..N+1-K

19


1.3.6.2 Thuật toán
B1: Dịch chuyển mẫu T trên ảnh I theo trật tự từ trên xuống dưới và từ trái
sang phải sao cho mẫu T nằm trong ảnh I. Ở mỗi lần dịch chuyển, pixel ảnh kết
quả tương ứng có mức xám bằng giá trị nhỏ nhất của hiệu cặp giá trị pixel ảnh I
và mẫu T.
B2: Lặp lại B1 cho đến hết ảnh I.
B3: Mức xám pixel ảnh có kết quả âm, có 2 cách khắc phục:
+ Đặt các giá trị âm thành 0.
+ Biến đổi tổng thể mức xám: tìm giá trị xám nhỏ nhất p trong ảnh và
cộng tất cả các giá trị xám lên p để mức chênh lệch giữa các pixel là không đổi.
1.3.7 Các phép biến đổi hình học
1.3.7.1 Phép dịch ảnh
Là sự tịnh tiến gốc tọa độ, trong đó các trục của tọa độ sau phép biến đổi
sẽ di chuyển theo cùng hướng, việc phân chia thang trên tọa độ là không đổi. Gốc
tọa độ cũ (-tx, -ty) thì tọa độ (x’, y’) được tính như sau:
x’ = x +tx
y’ = y +ty
Phép biến đổi có thể được mô tả dưới định thức sau:

1

0

0


0

1

1

tx

ty

1

T =

20


1.3.7.2 Phép phóng to hoặc thu nhỏ ảnh
Còn được gọi là sự chia lại thang tọa độ. Khi chia thang tọa độ gốc và
hướng được giữ nguyên, chia thang tiến hành với hệ số chia thang Sx, Sy và các
tọa độ mới được tính toán theo công thức:
x’ = x * Sx
y’ = y * Sy
Phép biến đổi có thể được mô tả dưới định thức sau:
Sx 0

0

0


Sy 0

0

0

T=

1

1.3.7.3 Phép quay ảnh
Ngay từ khi xuất hiện, hiệu ứng quay ảnh đã gây ấn tượng lớn và thu hút
sự quan tâm của những người yêu thích xử lý ảnh. Thực ra đây là phương pháp
chuyển đổi các Pixel trong ảnh. Do không làm thay đổi giá trị màu trong ảnh nên
có thể thực hiện phương pháp này trên ảnh màu cũng như trên ảnh xám. Một ảnh
được xem như là một mảng hai chiều, chuyển đổi lại vị trí các Pixel là sắp xếp lại
mảng này. Khi quay thì sự chia thang giữ nguyên chỉ có hướng trục thay đổi.
Còn trục mới xuất hiện bằng cách quay trục cũ đi một góc θ ngược chiều kim
đồng hồ, khi đó tọa độ mới được theo theo công thức
x’ = xcosθ - y.sinθ
y’ = x.sinθ + y.cosθ

Với T là ma trận quay:

 cos θ
T = − sin θ
 0

21


sin θ
cos θ
0

0
0
1


1.3.7.4 Kết hợp các phép biến đổi hợp nhất
Quá trình áp dụng các phép biến đổi liên tiếp để tạo nên một phép biến đổi tổng
thể được gọi là sự kết hợp các phép biến đổi (composing transformation).
 Kết hợp phép tịnh tiến: Ta có thể kết hợp các phép tịnh tiến với cách kết
hợp hai ma trận tịnh tiến liên tiếp ta được một phép tịnh tiến được biểu
diễn như sau:

T1 =

T2=

Ma trận kết hợp
T kh =
Vậy kết hợp hai phép tịnh tiến là một phép tịnh tiến. Từ đó ta có kết hợp của
nhiều phép tịnh tiến cũng là một phép tịnh tiến.
 Kết hợp các phép tỷ lệ: Ta có thể kết hợp các phép tỷ lệ với cách kết hợp
hai ma trận tỷ lệ liên tiếp ta được một phép tỷ lệ được biểu diễn như sau:

T1 = T2 =
Tkh =

Vậy kết hợp hai phép tỉ lệ là một phép tỉ lệ. Dễ dàng mở rộng cho kết quả:
kết hợp của nhiều phép tỉ lệ cũng là một phép tỉ lệ.
 Kết hợp các phép quay quanh gốc tọa độ:

T1 =
T2 =

Tkh =
22


Vậy kết hợp hai phép quay quanh gốc tọa độ là một phép quay quanh
gốc tọa độ. Từ đó dễ dàng suy ra kết hợp của nhiều phép quay quanh gốc
tọa độ cũng là một phép quay quanh gốc tọa độ.

CHƯƠNG 2 TỔNG QUAN VỀ C SHARP

2.1 Tổng quan về ngôn ngữ C sharp (C #)
2.1.1 Giới thiệu chung về ngôn ngữ C sharp (C#)
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu dữ
liệu được xây dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi
những khái niệm lập trình hiện đại. C# bao gồm tất cả những hỗ trợ cho cấu trúc,
thành phần component, lập trình hướng đối tượng. Những tính chất đó hiện diện
trong một ngôn ngữ lập trình hiện đại. Và ngôn ngữ C# hội đủ những điều kiện
như vậy, hơn nữa nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là
C++ và Java..
C# là một trình biên dịch hướng .NET, tất cả các mã của C# luôn luôn chạy
trên trên môi trường .NET Framework. C# được thiết kế dùng riêng cho
Microsoft’s .NET Framework (một nền khá mạnh cho sự phát triển, triển khai,
thực hiện và phân phối các ứng dụng). Nó có thể sinh ra mã đích trong môi


23


trường .NET. Nó cũng là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kế
dựa trên kinh nghiệm của các ngôn ngữ khác.
Trọng tâm của ngôn ngữ hướng đối tượng là lớp. Lớp định nghĩa kiểu dữ liệu
mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết. C# có những từ
khóa dành cho việc khai báo lớp, phương thức, thuộc tính mới. C# hỗ trợ đầy đủ
khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa hình.
C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết với một
lớp cho những dịch vụ mà giao diện quy định. Trong ngôn ngữ C#, một lớp chỉ
có thể kế thừa từ duy nhất một lớp cha, tức là không cho đa kế thừa như trong
ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện. Khi một lớp
thực thi một giao diện thì nó sẽ hứa là nó sẽ cung cấp chức năng thực thi giao
diện.
Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm
về ngữ nghĩa của nó thay đổi khác với C++. Trong C#, một cấu trúc được giới
hạn, là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ điều
hành và bộ nhớ so với một lớp. Một cấu trúc thì không thể kế thừa từ một lớp
hay được kế thừa nhưng một cấu trúc có thể thực thi một giao diện.
Ngôn ngữ C# cung cấp những đặc tính hướng thành phần (componentoriented), như là những thuộc tính, những sự kiện. Lập trình hướng thành phần
được hỗ trợ bởi CLR cho phép lưu trữ metadata với mã nguồn cho một lớp.
Metadata mô tả cho một lớp, bao gồm những phương thức và những thuộc tính
của nó, cũng như những sự bảo mật cần thiết và những thuộc tính khác. Mã
nguồn chứa đựng những logic cần thiết để thực hiện những chức năng của nó..
Do vậy, một lớp được biên dịch như là một khối self-contained, nên môi trường
hosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết mà
không cần những thông tin khác để sử dụng nó.
C# là ngôn ngữ này cũng hỗ trợ việc truy cập bộ nhớ trực tiếp sử dụng kiểu

con trỏ của C++ và từ khóa cho dấu ngoặc [] trong toán tử. Các mã nguồn này là
không an toàn (unsafe). Và bộ giải phóng bộ nhớ tự động của CLR sẽ không thực

24


hiện việc giải phóng những đối tượng được tham chiếu bằng sử dụng con trỏ cho
đến khi chúng được giải phóng.
2.1.2 Nền tảng ngôn ngữ C#
2.1.2.1 Kiểu dữ liệu
Điều cốt lõi của lập trình hướng đối tượng là tạo ra các kiểu mới. Kiểu là
một thứ được xem như trừu tượng. Nó có thể là một bảng dữ liệu, một tiểu trình,
hay một nút lệnh trong một cửa sổ. Tóm lại kiểu được định nghĩa như một dạng
vừa có thuộc tính chung (properties) và các hành vi ứng xử (behavior) của nó
C# là ngôn ngữ lập trình mạnh về kiểu dữ liệu, một ngôn ngữ mạnh về
kiểu dữ liệu là phải khai báo kiểu của mỗi đối tượng khi tạo (kiểu số nguyên, số
thực, kiểu chuỗi, kiểu điều khiển...) và trình biên dịch sẽ giúp cho người lập trình
không bị lỗi khi chỉ cho phép một loại kiểu dữ liệu có thể được gán cho các kiểu
dữ liệu khác. Kiểu dữ liệu của một đối tượng là một tín hiệu để trình biên dịch
nhận biết kích thước của một đối tượng (kiểu int có kích thước là 4 byte) và khả
năng của nó (như một đối tượng button có thể vẽ, phản ứng khi nhấn,...).
Tương tự như C++ hay Java, C# chia thành hai tập hợp kiểu dữ liệu chính:
Kiểu xây dựng sẵn (built- in) mà ngôn ngữ cung cấp cho người lập trình và kiểu
được người dùng định nghĩa (user-defined) do người lập trình tạo ra.
C# phân tập hợp kiểu dữ liệu này thành hai loại: Kiểu dữ liệu giá trị
(value) và kiểu dữ liệu tham chiếu (reference). Việc phân chi này do sự khác
nhau khi lưu kiểu dữ liệu giá trị và kiểu dữ liệu tham chiếu trong bộ nhớ. Đối với
một kiểu dữ liệu giá trị thì sẽ được lưu giữ kích thước thật trong bộ nhớ đã cấp
phát là stack. Trong khi đó thì địa chỉ của kiểu dữ liệu tham chiếu thì được lưu
trong stack nhưng đối tượng thật sự thì lưu trong bộ nhớ heap.

Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ các đối
tượng và chuỗi. Và tất cả các kiểu do người dùng định nghĩa ngoại trừ kiểu cấu
trúc đều là kiểu dữ liệu tham chiếu.
Ngôn ngữ C# đưa ra các kiểu dữ liệu xây dựng sẵn rất hữu dụng, phù hợp
với một ngôn ngữ lập trình hiện đại, mỗi kiểu dữ liệu được ánh xạ đến một kiểu

25


×