Mục lục
Chương 1 8
Tổng quan về xử lý ảnh 8
1.1 Xử lý ảnh là gì ? 8
1.2 Những vấn đề cơ bản trong hệ thống xử lý ảnh 13
1.2.1 Điểm ảnh (Picture Element) 13
1.2.2 Độ phân giải của ảnh 13
1.2.3 Mức xám của ảnh 13
1.2.5 Các thành phần cơ bản của hệ thống xử lý ảnh 15
1.3 Những vấn đề khác trong xử lý ảnh 15
1.3.1 Biến đổi ảnh (Image Transform) 15
1.3.2 Biểu diễn ảnh : 15
1.3.3 Tăng cường ảnh – khôi phục ảnh: 16
1.3.4 Phân tích ảnh – nhận dạng ảnh : 16
1.3.5 Nén ảnh 16
Chương 2 17
Ánh sáng, màu sắc và thu nhận ảnh 17
2.1 Ánh sáng. 17
2.2 Màu sắc 18
2.2.1 Hệ màu 18
2.2.2 Biểu diễn màu 21
2.2.3 Hệ tọa độ màu 22
2.3 Các thiết bị thu nhận ảnh và kỹ thuật phân tích màu. 23
2.3.1 Thiết bị thu nhận ảnh 23
2.3.2 Thiết bị nhận ảnh. 24
2.4 Lấy mẫu và lượng tử hóa ( Image Sampling and Quantization) 24
2.4.1 Lấy mẫu 25
2.4.2 Lượng tử hóa 28
2.4.3 Quét ảnh 28
Chương 3 30
Các phương pháp xử lý ảnh 30
3.1 Xử lý điểm ảnh : 30
3.1.1 Biến ảnh màu thành ảnh xám : 30
3.1.2 Lược đồ xám : 31
3.1.3 Nhị phân hóa ảnh : 31
3.2 Các phương pháp lọc ảnh : 32
3.2.1 Lọc tuyến tính : 32
3.2.2 Lọc phi tuyến : 32
3.3 Các phương pháp phát hiện biên : 33
3.4 Phân vùng ảnh : 33
3.5 Các ứng dụng trong xử lý ảnh : 34
3.5.1 Nhận dạng chữ viết, số : 34
3.5.2 Nhận dạng vân tay : 34
3.5.3 Nhận dạng khuôn mặt : 35
Chương 4: 36
Giới thiệu Video Starter Kit 36
4.1 ML 402 Board : 36
4.2 Video Input Output Daughter Card - VIODC : 37
4.3 Phần mềm ISE : 38
4.3.1 First In First Out – Fifo : 40
4.3.2 Random Access Memory – Ram : 41
4.3.3 Read Only Memory – Rom : 42
Chương 5: 44
Thực nghiệm 44
5.1 Sơ đồ khối xử lý ảnh : 44
5.2 Thu nhận dữ liệu ảnh : 45
5.3 Thuật toán đánh nhãn : 47
5.4 On Screen Display ( OSD ) : 51
5.4.1 Tạo font chữ số : 52
5.4.2 Truy xuất từ Rom : 52
5.4.3 Định vị trí hiển thị trên monitor : 53
5.5 Mô phỏng thuật toán : 54
5.7 Áp dụng thuật toán thực tế trên board : 59
5.8 Đề xuất mở rộng đề tài : 60
5.8.1 Ưu điểm : 60
5.8.2 Khuyết điểm : 60
5.8.3 Hướng phát triển : 60
63 trang |
Chia sẻ: maiphuongdc | Lượt xem: 3024 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Đếm số đối tượng trên video dùng FPGA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ước sóng khác nhau chiếu vào quả táo đỏ, hệ thống hàng tỉ phân tử sắc tố trên bề mặt của quả táo hấp thụ tất cả các bước sóng ngoại trừ bước sóng màu đỏ. Kết quả là ánh sáng phản xạ có hàm c() gây ra cảm nhận màu đỏ. Các sắc tố lấy đi những bước sóng và hỗn hợp của hai loại sắc tố khác nhau sẽ tạo ra ánh sáng phản xạ mà bước sóng ngăn hơn. Đó là hệ màu trừ (subtractive color system). Ví dụ, khi hai thứ mực có màu khác nhau được trộn để tạo một màu khác cũng được gọi là hệ màu trừ.
Ba màu cơ bản của hệ màu trừ là vàng (Y), lục lam (cyan) và tím (M), chúng là những màu thứ cấp của hệ màu cộng. Ba màu này được biểu diễn trên hình 1.6. Bằng việc trộn các màu đó với những hàm lượng thích hợp, có thể tạo ra một dãy màu rộng. Trộn màu vàng và màu lục lam tạo ra màu lục. Trộn màu vàng và màu tím tạo ra màu đỏ. Trộn màu lục lam và màu tím tạo ra màu lam. Do vậy ba màu : đỏ, lục và lam, những màu cơ bạn cũa hệ màu cộng lại là những màu thứ cấp của hệ màu trừ. Khi tất cả 3 màu Y, C, M kết hợp với nhau theo số lượng bằng nhau sẽ tạo ra màu đen, các sắc tố hấp thụ tất cả các bước sóng ánh sáng nhìn thấy.
Một điều cần chú ý là : hệ màu trừ khác một cách cơ bản với hệ màu cộng. Trong hệ màu cộng, khi chúng ta thêm các màu với các bước sóng khác nhau, ánh sáng nhận được gồm nhiều bước sóng hơn. Chúng ta bắt đầu với màu đen, tương ứng với không có ánh sáng. Khi chúng ta đi từ màu cơ bản (RGB) đến các màu thứ cấp (YCM) và rồi đến màu trắng, chúng ta làm tăng các bước sóng trong ánh sáng nhận được. Trong hệ màu trừ, chúng ta bắt đầu với màu trắng, tương ứng với không có sắc tố. Khi chúng ta đi từ màu cơ bản(YCM) đến các màu thứ cấp (RGB) rồi đến màu đen, chúng ta làm giảm những bước sóng trong ánh sáng phản xạ nhận được.
Hình 2.3 : Hệ màu trừ (YCM)
Trong một hệ màu cộng, chúng ta có thể coi ánh sáng đỏ, lục, lam là kết quả của ánh sáng trắng đi qua ba bộ lọc thông dải khác nhau. Trộn hai màu có thể coi như ánh sáng trắng đi qua một bộ lọc tổ hợp song song của hai bộ lọc thông dải tương ứng. Trong hệ màu trừ, chúng ta có thể coi các ánh sáng màu vàng, lục lam và tím như là kết quả của ánh sáng trắng đi qua ba bộ lọc chặn dải khác nhau. Trộn hai màu có thể coi là kết quả của ánh sáng trắng đi qua hai bộ lọc chặn dải tương ứng đặt nối tiếp
2.2.2 Biểu diễn màu
Ánh sáng màu là tổ hợp của ánh sáng đơn sắc. Mắt thường chỉ có thể cảm nhận được vài chục màu, song lại có thể phân biệt được tới vài ngàn màu. Có 3 thuộc tính chủ yếu trong cảm nhận màu:
Brightness: sắc màu, còn gọi là độ chói.
Hue: sắc lượng, còn gọi là sắc thái màu.
Saturation: độ bão hòa.
Với bước sóng đơn sắc, độ hue tương ứng với bước sóng λ. Độ bão hòa thay đổi nhanh nếu ta thêm lượng ánh sáng trắng.
Theo lý thuyết 3 màu, phân bố phổ mang năng lượng của một nguồn sáng màu kí hiệu là C(λ) và tổ hợp màu theo 3 nguyên tắc 3 màu được mô tả như sau:
Vẽ hình 2.3 trang 19 sách
Do đó, αi (C) = Si(λ)c(λ)d λ với i = 1,2,3.
Trong đó αi (C) gọi là đáp ứng phổ (spectral resposes).
Phương trình trên gọi là phương trình biểu diễn màu. Nếu C1() và C2() là hai phân bố phổ năng lượng tạo nên các đáp ứng phổ α1 (C1) và α2 (C2) mà αi (C1) = αi (C2) với i=1,2,3 thì hai màu C1 và C2 là như nhau
2.2.3 Hệ tọa độ màu
Như đã nói ở trên một màu là tổ hợp của các màu cơ bản theo một tỉ lệ nào đấy. Như vậy một pixel ảnh màu kí hiệu Px được viết thành:
Px =
Người ta dùng hệ tọa độ 3 màu R-G-B (tương ứng với hệ tọa độ x,y,z) để biểu diễn màu như sau:
Hình 2.4 : Hệ tọa độ màu
Trong cách biểu diễn này ta có công thức: đỏ + lục + lơ = 1. Công thức này gọi là công thức Maxwell. Trong hình vẽ trên, tam giác tạo bởi ba đường đứt đoạn gọi là tam giác Maxwell. Ta cũng có thể chuyển từ hệ tọa độ 3 màu về hệ tọa độ x-y-z.
Hệ tọa độ màu do CIE đề xuất có tác dụng như một hệ quy chiếu và không biểu diễn hết các màu. Trên thực tế, phụ thuộc vào các ứng dụng khác nhau người ta đưa ra các hệ biểu diễn màu khác nhau. Thí dụ:
Hệ RGB
Hệ CMY (Cyan Magenta Yellow): thường dùng cho in ảnh màu;
Hệ YIQ: cho truyền hình màu.
2.3 Các thiết bị thu nhận ảnh và kỹ thuật phân tích màu.
Hai thành phần cho công đoạn này là linh kiện nhạy với phổ năng lượng điện từ trường, loại thứ nhất tạo tín hiệu điện ở đầu ra tỷ lệ với mức năng lượng mà bộ cảm biến (đại diện là camera); loại thứ hai là bộ số hoá.
2.3.1 Thiết bị thu nhận ảnh
Máy chụp ảnh, camera có thể ghi lại hình ảnh (phim trong máy chụp, vidicon trong camera truyền hình). Có nhiều loại máy cảm biến (Sensor) làm việc với ánh sáng nhìn thấy và hồng ngoại như: Micro Densitometers, Image Dissector, Camera Divicon, linh kiện quang điện bằng bán dẫn. Các loại cảm biến bằng chụp ảnh phải số hoá là phim âm bản hoặc chụp ảnh. Camera Divicon và linh kiện bán dẫn quang điện có thể cho ảnh ghi trên băng từ có thể số hoá. Trong Micro Densitometer phim và ảnh chụp được gắn trên mặt phẳng hoặc cuốn quang trống.
Việc quét ảnh thông qua tia sáng (ví dụ tia Laser) trên ảnh đồng thời dịch chuyển mặt phim hoặc quang trống tương đối theo tia sáng. Trường hợp dùng phim, tia sáng đi qua phim.
Camera thường có hai kiểu: kiểu camera dùng đèn chân không và kiểu camera chỉ dùng bán dẫn. Trong lĩnh vực thu nhận ảnh, camera bán dẫn thường được dùng hơn camera đèn chân không. Camera bán dẫn cũng được gọi là CCD camera do dùng các thanh ghi dịch đặc biệt gọi là thiết bị gộp (Charge-Coupled Devices- CCDs). Các CCD này chuyển các tín hiệu ảnh sang từ bộ cảm nhận ánh sáng bổ trợ ở phía trước camera thành các tín hiệu điện mà sau đó được mã hóa thành tín hiệu TV. Loại camera chất lượng cao cho tín hiệu ít nhiễu và có độ nhậy cao với ánh sáng.
2.3.2 Thiết bị nhận ảnh.
Chức năng của thiết bị này là số hóa một băng tần số cơ bản của tớn hiệu truyền hình cung cấp từ một camera, hoặc từ một đầu máy VCR. Ảnh số sau đó được lưu trữ trong bộ đệm chính. Bộ đệm này có khả năng được địa chỉ hóa (nhờ một PC) đến từng điểm bằng phần mềm.
1. Thiết bị có khả năng số hóa ảnh ít nhất 8 bit (256 mức xám) và ảnh thu được phải có kích thước ít nhất là 512×512 điểm hoặc hơn.
2. Thiết bị phải chứa một bộ đệm ảnh để lưu trữ một hoặc nhiều ảnh có độ phân giải 512×512 điểm ảnh.
Như đã nói ở trên các thiết bị thu nhận ảnh thông thường gồm camera cộng với bộ chuyển đổi tương tự số AD (Analog to Digital) hoặc máy scanner. Các thiết bị thu nhận ảnh này có thể cho ảnh trắng đen B/W (Black & White) với mật độ từ 400 đến 1600 dpi (dot per inch) hoặc ảnh màu 600dpi. Với ảnh B/W mức màu z là 0 hoặc 1. Với ảnh xám đa cấp, mức xám biến thiên từ 0 đến 255. Ảnh màu mỗi điểm lưu trữ trong 3 byte nên ta có 28x3 = 224 màu (khoảng 16,7 triệu màu)
Khi dùng scanner, một dòng photodiot sẽ quét ngang qua ảnh và cho ảnh với độ phân giải ngang khá tốt. Đầu ra của scanner là ảnh ma trận số mà ta quen gọi là bản đồ ảnh (Bitmap). Với ảnh màu có nhiều cách hiển thị màu khác nhau. Theo lý thuyết màu do Thomas đưa ra năm 1802, mọi màu sắc đều có thể tổ hợp từ 3 màu cơ bản : Red (đỏ), Green (lục), Blue (lơ).
Nhìn chung, các hệ thống thu nhận ảnh thực hiện hai quá trình:
Cảm biến: biến đổi năng lượng quang học thành năng lượng điện
Tổng hợp năng lượng điện thành năng lượng ảnh
2.4 Lấy mẫu và lượng tử hóa ( Image Sampling and Quantization)
Yêu cầu cơ bản nhất trong xử lý ảnh số là đưa ảnh về dạng biểu diễn số thích hợp, nghĩa là ảnh phải được biểu diễn bởi một ma trận hữu hạn tương ứng với việc lấy mẫu ảnh trên một lưới rời rạc và mỗi pixel được lượng hóa bởi một số hữu hạn bit. Ảnh số được lượng tử hóa có thể được xử lý hay chuyển qua bước biến đổi số tương tự - DA( Digital to Analog) để tái hiện trên thiết bị hiện ảnh.
Một ảnh g(x, y) ghi được từ Camera là ảnh liên tục tạo nên mặt phẳng hai chiều. Ảnh cần chuyển sang dạng thích hợp để xử lí bằng máy tính. Phương pháp biến đổi một ảnh (hay một hàm) liên tục trong không gian cũng như theo giá trị thành dạng số rời rạc được gọi là số hoá ảnh. Việc biến đổi này có thể gồm hai bước:
Bước 1: Đo giá trị trên các khoảng không gian gọi là lấy mẫu
Bước 2: Ánh xạ cường độ (hoặc giá trị) đo được thành một số hữu hạn các mức rời rạc gọi là lượng tử hoá.
2.4.1 Lấy mẫu
Lấy mẫu là một quá trình, qua đó ảnh được tạo nên trên một vùng có tính liên tục được chuyển thành các giá trị rời rạc theo tọa độ nguyên. Quá trình này gồm 2 lựa chọn:
Một là: khoảng lấy mẫu.
Hai là: cách thể hiện dạng mẫu.
Lựa chọn thứ nhất được đảm bảo nhờ lý thuyết lấy mẫu của Shannon. Lựa chọn thứ hai liên quan đến độ đo (Metric) được dùng trong miền rời rạc.
Khoảng lấy mẫu (Sampling Interval)
Ảnh lấy mẫu có thể được mô tả như việc lựa chọn một tập các vị trí lấy mẫu trong không gian hai chiều liên tục. Đầu tiên mô tả qua quá trình lấy mẫu một chiều với việc sử dụng hàm delta:
Tiếp theo chúng ta định nghĩa hàm răng lược với các khoảng Δx như sau:
với r là số nguyên, Δx : khoảng lấy mẫu
Như vậy, hàm răng lược là chuỗi các xung răng lược từ (-∞ đến +∞). Giả sử hàm một chiều g(x) được mô tả (gần đúng) bằng g(rΔx ) tức là:
Khi đó tín hiệu lấy mẫu được mô hình hoá :
Hoặc tương đương :
Trong thực tế, r không thể tính được trong khoảng vô hạn (từ ∞ − đến +∞) mà là một số lượng NΔx mẫu lớn cụ thể. Như vậy, để đơn giản có thể nói hàm liên tục g(x) có thể biểu diễn trên một miền với độ dài NΔx mẫu thành chuỗi như sau:
Khoảng lấy mẫu (Sampling Interval) Δx là một tham số cần phải được chọn đủ nhỏ, thích hợp, nếu không tín hiệu thật không thể khôi phục lại được từ tín hiệu lấy mẫu.
Mặt khác (2-6) tương đương với tích chập trong miền tần số ω tức là biến đổi Fourier của gs(x) là Gs(ωx):
trong đó ωx là giá trị tần số ứng với giái trị x trong miền không gian.
Điều kiện khôi phục ảnh lấy mẫu về ảnh thật được phát biểu từ định lý lẫy mẫu của Shannon.
Định lý lấy mẫu của Shannon
Giả sử g(x) là một hàm giới hạn giải (Band Limited Function) và biến đổi Fourier của nó là G(ωx) = 0. Đối với các giá trị ωx > Wx . Khi đó g(x) có thể được khôi phục lại từ các mẫu được tạo tại các khoảng x Δ đều đặn. Tức là:
Định lý lẫy mẫu của Shannon có thể mở rộng cho không gian hai chiều. Hàm răng lược hai chiều khi đó được xác định:
Hàm lấy mẫu hai chiều thu được:
và Δx, Δy được chọn thoả mãn các điều kiện tương ứng theo định lý lấy mẫu của Shannon khi đó sẽ:
Tương tự như không gian một chiều, một tín hiệu ảnh hai chiều g(x,y) có thể xấp xỉ trong khoảng [N, M] có thể được ước lượng như sau :
2.4.2 Lượng tử hóa
Định nghĩa: Lượng tử hoá là ánh xạ từ các số thực mô tả giá trị lấy mẫu thành một giải hữu hạn các số thực. Nói cách khác, đó là quá trình số hoá biên độ.
Hình 2.5: Khuông lượng tử theo L mức xám.
Giả sử Z là một giá trị lấy mẫu (số thực) tại vị trí nào đó của mặt phẳng ảnh, và Zmin<=Z’<=Zmax và giả sử chúng ta muốn lượng hoá giá trị đó thành một trong các mức rời rạc: l1, l2,…ln tương ứng với Zmin đến Zmax (Hình 2.5). Khi đó, quá trình lượng hoá có thể thực hiện bằng cách chia toàn bộ miền vào (Zmax – Zmin) thành L khoảng, mỗi khoảng là Δl và khoảng thứ i được đặt tại điểm giữa các khoảng liền kề li. họ các giá trị z được thực hiện và mô tả bằng li theo quá trình trên đây, khi đó sai số của quá trình lấy mẫu có thể được xác định theo :
2.4.3 Quét ảnh
Phương pháp chung để lấy mẫu là quét ảnh theo hàng và mã hóa từng hàng. Về nguyên tắc, một đối tượng, phim hay giấy trong suốt sẽ được chiếu sáng liên tục để tạo nên một ảnh điện tử trên tấm cảm quang. Tùy theo loại camera mà chất liệu của tấm cảm quang này là chất quang dẫn hay chất quang truyền. Hệ thống camera ống sử dụng phương pháp scan-out-digitalizer; còn hệ thống camera CCD ( Charge Couped Device) cho ảnh ma trận. Camera CCD thực sự là thiết bị mẫu hóa tín hiệu hai chiều và gọi là phương pháp sefl-scanning matrix.
Hình 2.6 Phương pháp số hóa Scan-out
Hình 2.7 Phương pháp Self-scanning
Chương 3
Các phương pháp xử lý ảnh
Như đã biết, dữ liệu của hình ảnh sau khi thu nhận về sẽ được xử lý làm tiền đề cho các công đoạn điều khiển khác của hệ thống thị giác máy. Có rất nhiều phương pháp xử lý ảnh tùy thuộc mục đích và yêu cầu cảu hệ thống. Tuy nhiên, do cấu trúc ảnh là ma trận những điểm ảnh nên các phương pháp xử lý cơ bản đều thực hiện trên các điểm ảnh hoặc ma trận này.
3.1 Xử lý điểm ảnh :
Ảnh thu về trước xử lý thông thường là những ảnh màu, nghĩa là một pixel bao gồm thông tin ba màu cơ bản là R ( đỏ ), G ( xanh lá ), B ( xanh biển ). Ba màu này được bố trí sát nhau tạo thành các màu khả kiến. Mỗi màu R,G,B được biễu diễn bởi 8 bits. Như vậy mỗi pixel sẽ có giá trị 24 bits, biểu diễn được khoảng 16,78 triệu màu.
Dữ liệu ảnh thu về là ma trận gồm các giá trị 24 bits, điều này sẽ gây độ phức tạp rất lớn cho việc xử lý. Nhưng khi ta cần khôi phục ảnh, các pixel sẽ giữ được gần với nguyên gốc nhất. Việc có xử lý trực tiếp trên các pixel màu này hay không phụ thuộc vào mục đích khôi phục ảnh hay chỉ nhằm thu nhận dạng ảnh.
Phần lớn trường hợp, dữ liệu ảnh được xử lý nhằm thực hiện một công việc điều khiển nào đó, do đó, ảnh không cần thiết phải khôi phục. Vì vậy, ta cần giảm số bit thông tin biểu diễn 1 pixel để việc xử lý thuận lợi hơn.
3.1.1 Biến ảnh màu thành ảnh xám :
Trong ảnh xám, mỗi pixel có giá trị 8 bits thông tin. Ở mức này, cấu trúc ảnh vẫn giữ nguyên, giá trị ma trận ảnh đơn giản hơn rất nhiều. Phù hợp với quá trình xử lý chỉ quan tâm đến cấu trúc ảnh mà không cần đến màu sắc ảnh. Công thức được sử dụng phổ biến đổi ảnh màu thành ảnh xám là :
P = aCr + bCb + cCg
Trong đó Cr, Cb, Cg là các giá trị mức màu R,B,G. Tùy theo mức độ thu nhận ảnh màu gốc hoặc tùy theo các thiết bị thu nhận mà hệ số a,b,c có các giá trị khác nhau sao cho (a + b + c) <= 1.
Ví dụ về ảnh xám :
Hình 3.1: Chuyển ảnh màu thành ảnh xám
3.1.2 Lược đồ xám :
Là một biểu đồ với trục tung là mức xám, trục hoành là các pixel. Lược đồ này biểu diễn tần suất xuất hiện của các mức xám trên ảnh. Do ảnh đôi khi được chụp ở nơi quá sáng hay quá tối sẽ làm cấu trúc ảnh không rõ ràng, dựa vào lược đồ xám, ta có thể làm nổi bật cấu trúc ảnh lên.
Điều này rất cần thiết cho việc nhận dạng ảnh, nhất là với các ảnh chứa nhiều chi tiết thì lại càng quan trọng.
3.1.3 Nhị phân hóa ảnh :
Đây là cách biến đổi các giá trị pixel của ảnh sang giá trị nhị phân ( đơn giản nhất) 0 hoặc 1. Khi đó ma trận ảnh sẽ ở mức tối thiểu giá trị giúp việc xử lý đơn giản nhất nhưng đôi khi gây sai lệch cấu trúc ảnh ( do các đường viền khác biệt nhỏ dễ bị đồng hóa). Đây chỉ là bước xử lý cho các ảnh có ít chi tiết.
Để nhị phân hóa ảnh, ta dựa vào ngưỡng xám trung bình, nếu lớn hơn thì đưa giá trị về 1, nhỏ hơn thì đưa về 0 ( thực chất là mức 0 và 255, thể hiện 2 màu đen và trắng ).
Hình 3.2 : Ảnh nhị phân và ảnh xám
3.2 Các phương pháp lọc ảnh :
Hình ảnh sau khi thu nhận cần qua một bước tiền xử lý là lọc ảnh, đây là công đoạn gần như bắt buộc bởi ảnh nhận được hầu hết đều có nhiễu, mờ…
3.2.1 Lọc tuyến tính :
Trong lọc tuyến tính, thông thường là sử dụng một mặt nạ cửa sổ 3x3, 5x5, 9x9… tùy vào thuật toán hay kích thước ảnh. Ma trận mặt nạ này chứa các giá trị pixel của ảnh, pixel trung tâm sẽ được thay đổi bằng các công thức toán với các pixel lân cận.
Lọc tuyến tính tỏ ra rất hiệu quả cho công việc tách biên đối tượng bởi các thuật toán đạo hàm của nó được thực hiện ngay trên giá trị pixel như phương pháp Gradient hay Laplace.
3.2.2 Lọc phi tuyến :
Lọc phi tuyến hay được sử dụng là lọc trung vị. Sử dụng mặt nạ trượt trên ảnh, những phần tử trong mặt nạ là một chuỗi các pixel, điểm quan tâm được thay thế bằng giá trị trung vị của chuỗi, đây là phương pháp khử nhiễu rất thành công.
Cơ sở của các phương pháp lọc này là xem các giá trị pixel ở gần nhau sẽ có giá tri gần giống nhau, tức cùng có mức xám, màu sắc tương đồng… Hình ảnh sau khi lọc trở nên rõ ràng hơn, dễ nhận ra hơn bằng mắt thường và bằng giá trị pixel, giảm đáng kể các nhiễu…
3.3 Các phương pháp phát hiện biên :
Có khá nhiều nghiên cứu về việc dò và tách biên đối tượng trong xử lý ảnh, cơ bản đều là phát hiện liên kết giữa 2 vùng có mức xám khác nhau. Tuy nhiên, chưa có phương pháp nào có thể hoàn toàn tìm được biên đối tượng mà chỉ mang tính tương đối. Sau đây là một số phương pháp thông dụng được sử dụng : Sobel, bộ tách biên Roberts, Prewitt… sử dụng cách tính vi phân tương tự Laplace.
Hình 3.3: Lọc Biên
3.4 Phân vùng ảnh :
Là bước xác định vật thể trong ảnh, bằng cách trích lọc ra vùng có cùng tính chất dựa vào sự đồng nhất về mức xám giữa những pixel. Sau khi phân vùng ảnh, ta sẽ có được vật thể xác định trên ảnh tách biệt với các chi tiết thừa trong hình. Hạn chế là ta chỉ nhận được các vật thể tách biệt nhau, còn với ảnh nhiều chi tiết, kết quả phân vùng ảnh sẽ không chính xác.
Đối với cấu trúc ảnh nhị phân, các pixel chỉ mang giá trị 0 hoặc 1 nên việc phân vùng ảnh rất quan trọng nhằm loại bỏ nhiễu, phân tách các vật thể gần nhau hay định rõ một vật thể với các đường lien kết nhỏ.
Phương pháp khà thi nhất cho việc phân vùng ảnh nhị phân là làm mảnh và làm đầy :
Làm mảnh : loại bỏ hoàn toàn các nhiễu trong vật thể hay trên biên, tách biệt các vật với nhau.
Làm đầy : đưa các vùng ảnh khôi phục như ban đầu.
Tùy theo mục đích và yêu cầu hệ thống, ta có thể sử dụng một vài các bước trên để lấy thông tin cần thiết cho việc xử lý ảnh. Đó có thể chỉ đơn giản là nhận biết sự khác nhau giữa 2 hình nhằm xác định sự chuyển động, hoặc phức tạp cần đến độ chính xác cao như nhận biết dấu vân tay, đối tượng định trước….
3.5 Các ứng dụng trong xử lý ảnh :
3.5.1 Nhận dạng chữ viết, số :
Nhận dạng chữ viết ngày càng phát tiển và ngày càng trở nên quan trọng vì nhiều lý do như sự bất tiện của bàn phím, thời gian xử lý các văn bản cũ kéo dài nếu phải nhập lại bằng bàn phím, sự phát triển các thiết bị cảm ứng…
Cơ bản của việc nhận dạng này là dùng các thuật toán để tìm ra các đặc điểm đặc trưng của cá thể riêng biệt trong quần thể, rồi xem đó ứng với mẫu kí tự tương tự nhất.
Do đó, khi nhận dạng kí tự, nhất thiết phải tạo ra cơ sở dữ liệu từ điển của các kí tự ban đầu và trải qua các bước sau :
Xử lý dữ liệu ban đầu : do các kí tự khi thu nhận về đều ở dạng thô, mờ, nhiễu…, nếu không xử lý làm rõ ràng thì xác suất thành công thấp.
Phân tích dữ liệu để lấy ra các đặc điểm : là bước quan trọng nhất, ứng với từng loại kí tự khác nhau sẽ có những cách xử lý khác nhau.
Tạo từ điển : sao lưu tạo thành cơ sở cho những xử lý sau này.
3.5.2 Nhận dạng vân tay :
Đang được sử dụng rộng rãi trong nhiều lĩnh vực : an ninh, quân sự, bảo mật cá nhân. Ngày nay nhiều thiết bị đã được trang bị nhận diện vân tay để đảm bảo như cầu bảo mật dữ liệu cá nhân như: máy tính, điện thoại di động, mấy chấm công, các hệ thống cửa tự động …
Vân tay giống như một tham số sinh học bất biến theo tuổi tác đặc trưng cho mỗi người. Ngoài đặc trưng về loại của vân tay (vân tay thường được chia thành 5 loại chính: Whorl, Left Loop, Right Loop, Arch, Tented Arch), các vân tay được phân biệt chủ yếu nhờ các điểm đặc biệt trên ảnh vân tay. Các điểm này gọi là các chi tiết điểm của ảnh vân tay. Có hai loại chi tiết điểm thường được sử dụng là kết thúc điểm (ending) và điểm rẽ nhánh (bifucation)
3.5.3 Nhận dạng khuôn mặt :
Đây là công nghệ rất quen thuộc với những người sử dụng máy ảnh và máy tính cá nhân đặc biệt mà máy tính xách tay vì sự tiện lợi của nó, chỉ cần 1 chiếc webcam bạn có thể đăng nhập vào máy tính mà không cần gõ username và password. Nhưng độ bảo mật của phương pháp này không cao vì dễ bị virus tấn công.
Chương 4:
Giới thiệu Video Starter Kit
4.1 ML 402 Board :
Để chạy một ứng dụng, ta sử dụng Board ML 402, chuyên về xử lý ảnh. Board hỗ trợ rất nhiều cổng thu nhận data ảnh thông dụng, cũng như thiết lập được các cấu hình cao hiện nay như 1024x768, 1280x1024 hay 1600x1200..., tốc độ khung hình lý tưởng mức xấp xỉ tần số 60 Hz mức độ phân giải cao nhất. Thực chất board ML 402 không đi riêng một mình mà sử dụng kèm card thu nhận ảnh là VIODC ( Video Input Output Daughter Card ) :
Hình 4.1 : Video Starter Kit
Do trong thực nghiệm ta không sử dụng nhiều đến board ML 402, chỉ sử dụng đến VIODC là đủ, nên để tránh dài dòng không cần thiết, board ML 402 chỉ giới thiệu qua, còn các tính năng hỗ trợ không nhắc đến. ( Tài liệu về ML 402 được đính kèm nếu muốn tham khảo )
4.2 Video Input Output Daughter Card - VIODC :
Card màn hình này tuy hỗ trợ các cổng ra vào cho board ML 402 nhưng vẫn có thể hoạt động độc lập đối với các ứng dụng không cần quá nhiều tài nguyên phần cứng. Đối với các cổng thu nhận và xuất data ảnh như trên hình, ta thấy rõ VIODC hỗ trợ rất nhiều chuẩn giao tiếp thông dụng hiện nay, tỉ như VGA, camera, SDI ... Đáng chú ý nhất là VIODC tích hợp sẵn Xilinx XCV2P7 FPGA để có thể cấu hình và hoạt động độc lập, lý tường cho các thí nghiệm và mô phỏng.
Đề tài sử dụng dữ liệu lấy từ CPU thông qua cổng VGA input đi qua VIODC và trở ra ngõ VGA output đưa ra monitor. Sau đây là cấu tạo phần cứng ngõ vào VGA :
Hình 4.2: VGA Input
Chip AD9887A dùng để chuyển các tín hiệu Analog nhận được sang dạng Digital, theo bus data đưa sang cho FPGA. Đường tín hiệu I2C Control là bus giao tiếp trao đổi điều khiển giữa FPGA và AD9887A, các tùy chỉnh điều khiển này nằm trong diver có sẵn của board, ở đây ta không cần chú ý gì nhiều mà chỉ cần chỉnh cấu hình độ phân giải hoạt động cho board phù hợp với CPU. Đó chính là các switch.
Hình 4.3 : VGA Output
Tương tự như trên, chip ADV7123 dùng chuyển từ tín hiệu Digital sang Analog đẩy ra cổng VGA truyền đến cho monitor. Ở trên ngõ vào sau khi chuyển đổi chỉ bao gồm 8 bits một màu R, G, B, nhưng gõ ra lại là 10 bits mỗi màu. 2 bits chênh lệch này được thêm vào từ quá trình điều khiển riêng của driver.
4.3 Phần mềm ISE :
Hỗ trợ mô phỏng cho lập trình nhúng của Xilinx. Cũng tương tự như nhiều công cụ khác, ISE tạo môi trường cho các ngôn ngữ lập trình nhúng như Verilog, VHDL,... kể cả công cụ mô phỏng ISE Simulator. Đề tài sử dụng phiên bản Xilinx ISE 10.1.
Hình 4.4: Giao diện ISE
Khi viết code project, ISE cũng hỗ trợ tạo ra các nhân IP Core tương tự như các module con để sử dụng, khi cấu hình, phần cứng tương ứng với core được ISE hỗ trợ cũng tự tạo ra tải xuống board. Điều này giúp giảm thời gian rất nhiều cho việc tạo ra các module hay sử dụng như Ram, Fifo, bộ tính toán,... Sau đây là một số IP Core được sử dụng trong đề tài :
Hình 4.5 Giao diện ISE
4.3.1 First In First Out – Fifo :
Bộ Fifo là vùng nhớ không bao gồm địa chỉ, hoạt động theo nguyên tắc data vào trước sẽ được lấy ra trước. Hai tín hiệu dùng điều khiển việc ghi vào, lấy ra là write_enable và read_enable. Write_enable cùng tích cực với data để lưu dữ liệu vào, read_enable tích cực để data output có giá trị lấy ra. Ngoài ra còn có tín hiệu khác như empty báo trống bộ nhớ, full báo đầy bộ nhớ,... Trong thiết kế, Fifo thường sử dụng cho việc lưu trữ tạm thời dữ liệu nhằm lấy ra sử dụng sau. Điều đương nhiên là tín hiệu ra đồng bộ theo clock, tức nếu yêu cầu đọc ra read_enable tích cực thì phải sau 1 clock data output mới có giá trị.
Hình 4.6: Giao diện tạo Fifo
4.3.2 Random Access Memory – Ram :
Là bộ nhớ được sử dụng nhiều nhất trong thiết kế phần cứng nói chung. Ram bao gồm địa chỉ chứa dữ liệu, thuận tiện cho việc lưu trữ và lấy ra theo ý muốn. Các tín hiệu của Ram đương nhiên là phải có data input và output, write_enable cho phép chi dữ liệu vào. Ram không cần tín hiệu cho phép đọc ra, bởi nó có sẵn đường tín hiệu vào ra riêng biệt, đồng thời dữ liệu trong Ram vẫn không mất đi cho đến khi được reset hoặc ghi đè lên. Bên cạnh đó còn một vài tín hiệu khác tùy theo yêu cầu sử dụng mà thêm vào hoặc bỏ bớt, thuận tiện cho nhiều mục đích khác nhau. Việc lấy data output trong Ram cũng phải đồng bộ theo clock, địa chỉ đọc ra thay đổi thì sau 1 clock, dữ liệu tại ô nhớ đó mới được đưa ra ngoài.
Hình 4.7: Giao diện tạo Ram
4.3.3 Read Only Memory – Rom :
Rom tương tự như Ram, khác biệt ở chỗ Rom chứa sẵn dữ liệu trong vùng nhớ, chỉ có thể đọc ra mà không thể ghi vào. Tín hiệu điều khiển Rom chỉ đơn giản bao gồm địa chỉ và data output. Điều này có nghĩa là khi ngắt nguồn, dữ liệu trong Ram sẽ mất đi nhưng trong Rom thì không. Khi tạo Rom, ta nạp dữ liệu vào theo dạng như sau :
Hình 4.8: Tạo font chữ số làm dữ liệu cho Rom
Hình 4.9: Tạo dữ liệu trong Rom
Trong đó, “memory_initialization_radix = 2” khai báo hệ số của dữ liệu, dạng nhị phân 1 bit, nếu là 10 là dạng thập phân, 16 là dạng thập lục phân. Memory_initialization_vector chỉ dữ liệu trong Rom, dữ liệu này tạo thành từ font có sẵn.
Hình 4.10: Giao diện tạo Rom
Chương 5:
Thực nghiệm
5.1 Sơ đồ khối xử lý ảnh :
Dữ liệu hình ảnh được đi qua các bước xử lý chính như sau :
Hình 5.1: Đường đi của data
Signal Input là các tín hiệu hình ảnh thu nhận từ các thiết bị có khả năng truy xuất ảnh như camera, cổng VGA của máy tính… Trong đề tài này, ta lấy data từ cổng VGA của CPU, bởi khung hình nhận được sẽ không có nhiễu và chủ động hơn trong việc tinh chỉnh các thông số độ phân giải.
Counter là module xử lý chính của đề tài. Tại đây số lượng vật thể được xác định và chứa đựng các thông số quan trọng khác dùng cho việc mở rộng đề tài nếu có sau này. Để ứng dụng thực tế hơn, ta có thể thêm vào bộ lọc giúp lấy được khung hình rõ ràng từ các cam