1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế và thi công hệ thống đếm số lượng cá giống

85 180 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 4,08 MB

Nội dung

Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng Feature Selection gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệ

Trang 1

Chương 1 TỔNG QUAN

1.1 ĐẶT VẤN ĐỀ

Theo Tổng cục Thống kê lượng thủy sản nuôi trồng 6 tháng đầu năm 2018 đạt 1.793,5 nghìn tấn, tăng 6,4% so với cùng kỳ năm trước, trong đó cá đạt 1.310,2 nghìn tấn, tăng 6,1%; tôm đạt 292,6 nghìn tấn, tăng 11,2% Nuôi cá tra là sản phẩm chủ lực của ngành Thuỷ sản Việt Nam sau con tôm Nhiều năm qua, nghề nuôi cá tra gặp thuận lợi về giá, người nuôi có lãi nên diện tích nuôi được mở rộng Tính chung 6 tháng, diện tích nuôi cá tra của cả nước ước tính đạt 14,3 nghìn ha, tăng 6,8% so với cùng kỳ năm trước, trong đó diện tích nuôi cá tra thâm canh, bán thâm canh đạt 4,5 nghìn ha, tăng 10,2%; diện tích nuôi cá tra quảng canh và quảng canh cải tiến 9,8 nghìn ha, tăng 5,3% Sản lượng cá tra 6 tháng ước tính đạt 603,1 nghìn tấn, tăng 8,1% so với cùng kỳ năm trước, trong đó Đồng Tháp đạt 191,8 nghìn tấn, tăng 4,5%; An Giang 159,8 nghìn tấn, tăng 14,7% Qua đó, số lượng cá giống đã tăng nhanh chóng về chất lượng và số lượng Toàn vùng đồng bằng sông Cửu Long

có 108 cơ sở cho sinh sản nhân tạo cá tra và gần 1.900 hộ ương dưỡng cá giống với diện tích trên 1.500 ha, sản lượng cá bột sản xuất ước đạt 16,5 tỷ con, tập trung tại các tỉnh như: An Giang, Đồng Tháp, Cần Thơ… Trong đó An Giang là tỉnh sản xuất và cung ứng cá tra giống chủ yếu của khu vực đồng bằng sông Cửu Long Hầu hết giao dịch mua bán cá bột, cá hương, cá giống hiện nay trên thị trường vẫn còn sử dụng phương pháp thủ công để ước lượng và đếm mẫu Đối với cá bột

có 3 cách: cách thứ nhất là dùng cân (loại cân 2 đĩa, cân được 1g trở lên), cân bì trước Bì là cốc, chậu thuỷ tinh hay bát có chứa một ít nước sạch Dùng vợt rớt cá bột để bắt cá, giữ vợt để cá vừa ráo nước Cân 2-5 gam cá thả vào bát nước sạch Dùng thìa canh múc đếm số cá vừa cân Lặp lại vài lần như thế, để lấy số trung bình (số con/gam) Biết số lượng cá bán, sẽ tính được khối lượng cá (bao gam), để cân và giao cho nguời mua cá Cách thứ hai: nhiều địa phương đã tự làm lấy những dụng

cụ đặc biệt, chuyên để đong cá bột, goi là cái giăng Đây là một cái thìa đặc biệt, có

Trang 2

nhỏ tương ứng với số lượng cá bột nhiều hay ít đã được tính sẵn Cách thứ ba: đổ vào cốc thuỷ tinh có chia độ 3-4 cc nước Sau đó đổ một ít cá bột đã róc nước vào cốc cho nước dâng lên 2-3 cc Đếm số cá bột trong cốc và tính ra 1 cc có bao nhiêu

cá bột Từ đó sẽ suy ra số cá bột định mua tương ứng với số cc Đối với cá hương,

cá giống: dùng phương pháp cân mẫu để 100 gam hay 1000 gam có bao con cá Từ

số lượng cá mua bán, sẽ biết được tổng số cân cá, phải giao cho người mua cá Các phương pháp này tốn nhiều nhân công, sức khỏe cá giống, đặc biệt có sự sai số trong quá trình đếm, như vậy khó có sự minh bạch giữa người bán và người mua Vì vậy, tự động hóa quá trình nhận dạng và đếm số lượng cá giống là một nhu cầu thực

tế Xuất phát từ chính nhu cầu thực tế đó mà nhóm đã đưa ra quyết định chọn đề tài:

“Thiết kế và thi công hệ thống đếm số lượng cá giống” để tiến hành nghiên cứu

và thực hiện

Để đảm bảo việc thi công mạch theo như ý tưởng, chuẩn xác và không xảy ra

sự cố bắt buộc ta phải tính toán và thiết kế Nên nhóm đề ra mục tiêu chính là thi công được hệ thống có thể đếm được số lượng cá giống trong ảnh hiển thị ra màn hình Tính toán, thiết kế từng khối của hệ thống như: khối nguồn, khối xử lý trung tâm, khối led, khối camera, khối hiển thị

1.2 MỤC TIÊU

Thiết kế hệ thống (raspberry, camera và lcd) đếm số lượng cá giống Sử dụng

mã nguồn mở OpenCV vào xử lý ảnh

1.3 NỘI DUNG NGHIÊN CỨU

- Xử lý chụp, lấy ảnh đầu vào

- Đọc và hiển thị hình ảnh (ảnh xám): sử dụng matplotlib để đọc file

- Tạo mặt nạ nhị phân cho ảnh: dùng phương pháp Otsu

Trang 3

- Làm sạch mặt nạ: loại bỏ các đóm chấm nhỏ như rong rêu, rác…

- Phân đoạn nền, tìm biên của cá

- Đếm số lượng cá

- Hiển thị ra màn hình

1.3.3 Tiến hành thử nghiệm trên hồ cá có sẵn

- Thu nhận, xử lý kết quả đạt được

- Cân chỉnh phù hợp

1.3.4 Thiết kế thi công môi trường đếm

- Chọn hồ chứa cá có màu nền, cân chỉnh mực nước phù hợp

- Điều chỉnh ánh sang (không mờ, chóa) đảm bảo ảnh chụp tốt nhất

- Lắp ráp thiết bị, hoàn thiện hệ thống

1.3.5 Thu thâp nhận xét kết quả

- Lấy kết quả so sánh với thực tế tính toán sai số

- Nhận xét nêu ưu nhược điểm của hệ thống

- Nêu hướng phát triển

1.3.6 Viết báo cáo

- Thu thập kết quả viết đề cương báo cáo

- Viết báo cáo

- Chỉnh sửa, kiểm tra lần cuối trước khi nôp quyển báo cáo

- Tiến hành báo cáo

Trang 4

Chương 2: Cơ sở lý thuyết

Trình bày các kiến thức về ngôn ngữ Python, lý thuyết về Raspberry Pi 3, lý thuyết về module camera pi, lý thuyết về màn hình lcd 16x2 được áp dụng trong đề tài

Chương 3: Tính toán và Thiết kế

Trình bày sơ đồ khối của hệ thống, tính toán thiết kế cho từng khối

Chương 4: Thi công hệ thống

Thi công bể chứa cá

Thi công mạch theo thiết kế Lập trình điều khiển cho Pi Kiểm tra, chạy thử nghiệm và tinh chỉnh lỗi

Chương 5: Kết quả, Nhận xét và Đánh giá

Trình bày kết quả đã đạt được và đưa ra những bàn luận về sản phẩm

Chương 6: Kết luận và hướng phát triển

Kết luận chung về đề tài và hướng phát triển của nó

Trang 5

Chương 2 CƠ SỞ LÝ THUYẾT

2.1 GIỚI THIỆU VỀ HỆ THỐNG XỬ LÝ ẢNH

2.1.1 Giới thiệu chung

Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng cho nó

Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm nay Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác Đầu tiên phải kể đến xử lý tín hiệu số là một môn học hết sức cơ bản cho xử lý tín hiệu chung, các khái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các

bộ lọc hữu hạn… Thứ hai, các công cụ toán như đại số tuyến tính, sác xuất, thống

kê Một số kiến thứ cần thiết như trí tuệ nhân tạo, mạng nơron nhân tạo cũng được

đề cập trong quá trình phân tích và nhận dạng ảnh

Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh và phân tích ảnh Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được truyền qua cáp từ Luân đôn đến New York từ những năm 1920 Vấn đề nâng cao chất lượng ảnh có liên quan tới phân bố mức sáng và độ phân giải của ảnh Việc nâng cao chất lượng ảnh được phát triển vào khoảng những năm

1955 Điều này có thể giải thích được vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh sô thuận lợi Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử

lý, nâng cao chất lượng, nhận dạng ảnh phát triển không ngừng Các phương pháp tri thức nhân tạo như mạng nơ ron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được áp dụng rộng rãi và thu nhiều kết quả khả quan

Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh Đầu tiên, ảnh tự

Trang 6

ảnh) Trước đây, ảnh thu qua Camera là các ảnh tương tự (loại camera ống kiểu CCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng được lấy

ra từ camera, sau đó nó được chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo Mặt khác, ảnh cũng có thể tiếp nhận từ vệ tinh; có thể quét từ ảnh chụp bằng máy quét ảnh

Hình 2.1 Các bước cơ bản trong xử lý ảnh

Sơ đồ này bao gồm các thành phần sau:

a Phần thu nhận ảnh (Image Acquisition)

Ảnh có thể nhận qua camera màu hoặc đen trắng Thường ảnh nhận qua camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh 25 dòng), cũng có loại camera đã số hoá (như loại CCD – Change Coupled Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh Camera thường dùng là loại quét dòng; ảnh tạo ra có dạng hai chiều Chất lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh)

b Tiền xử lý (Image Processing)

Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn

c Phân đoạn (Segmentation) hay phân vùng ảnh

Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích, nhận dạng ảnh Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong

bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để nhận dạng Đây là

Trang 7

phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này

d Biểu diễn ảnh (Image Representation)

Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với các vùng lận cận Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký

tự giúp phân biệt ký tự này với ký tự khác

e Nhận dạng và nội suy ảnh (Image Recognition and Interpretation)

Nhận dạng ảnh là quá trình xác định ảnh Quá trình này thường thu được bằng cách so sánh với mẫu chuẩn đã được học (hoặc lưu) từ trước Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể được nội suy thành mã điện thoại Có nhiều cách phân loai ảnh khác nhau về ảnh Theo lý thuyết về nhận dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:

- Nhận dạng theo tham số

- Nhận dạng theo cấu trúc

Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người…

f Cơ sở tri thức (Knowledge Base)

Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu Trong

Trang 8

học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp nhận

và xử lý ảnh theo cách của con người Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ con người

2.1.2 Các khái niệm cơ bản trong xử lý ảnh

a Điểm ảnh (Picture Element)

Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính (số), ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và

độ sáng (mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y)

Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh

b Độ phân giải của ảnh

Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân

bố theo trục x và y trong không gian hai chiều

c Mức xám của ảnh

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

Trang 9

Đị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 có thể biểu diễn dưới dạng tín hiệu 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 độ của ảnh tại vị trí đó

Hình 2.2 Biểu diễn mức xám của ảnh số

Trong hình 2.2, một lưới chia ô vuông tưởng tượng được đặt lên ảnh Độ lớn mỗi ô vuông của lưới xác định kích thước của một điểm ảnh Mức xám của một điểm được tính bằng cường độ sáng trung bình tại mỗi ô vuông này Mắt lưới càng nhỏ thì chất lượng ảnh càng cao Trong kỹ thuật truyền hình tiên tiến, (mục đích là cung cấp cho người xem), hình ảnh cần chất lượng cao với độ phân giải gấp hai lần

so với các chuẩn hiện nay

Trong kỹ thuật tương tự, một bức ảnh thường được biểu diễn dưới dạng các

Trang 10

thông tin về cường độ sáng dọc theo một đường nằm ngang trong ảnh gốc Ảnh trên một chiếc TV được hiện lên qua các dòng quét này Mặc dù thuật ngữ "tương tự" được dùng để mô tả cho các ảnh quét liên tiếp nhưng thực tế ảnh chỉ tương tự dọc theo hướng nằm ngang Nó là rời rạc khi xét theo hướng dọc và chính vì vậy mà tín hiệu ảnh là tín hiệu lai nửa tương tự, nửa số

Ảnh đen trắng chỉ bao gồm 2 màu: màu đen và màu trắng Người ta phân mức đen trắng đó thành L mức nếu sử dụng số bit B=8 bit để mã hóa mức đen trắng (hay mức xám) thì L được xác định:

L=2B (trong ví dụ của ta L=28= 256 mức) (2.1)

Nếu L bằng 2, B=, nghĩa là chỉ có 2 mức: mức 0 và mức 1, còn gọi là ảnh nhị

phân Mức 1 ứng với màu sáng, còn mức 0 ứng với màu tối Nếu L lớn hơn 2 ta có

ảnh đa cấp xám Nói cách khác, với ảnh nhị phân mỗi điểm ảnh được mã hóa trên 1 bit, còn với ảnh 256 mức, mỗi điểm ảnh được mã hóa trên 8 bit Như vậy, với ảnh đen trắng: nếu dùng 8 bit (1 byte) để biểu diễn mức xám, số các mức xám có thể biểu diễn được là 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 0 biểu diễn cho mức cường độ đen nhất và

255 biểu diễn cho mức cường độ sáng nhất

Ảnh nhị phân khá đơn giản, các phần tử ảnh có thể coi như các phần tử logic Ứng dụng chính của nó được dùng theo tính logic để phân biệt đối tượng ảnh với nền hay để phân biệt điểm biên với điểm khác

Ả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:

Trang 11

Giả sử có điểm ảnh p tại toạ độ (x, y) P có 4 điểm lân cận gần nhất theo chiều

đứng và ngang (có thể coi như lân cận 4 hướng chính: Đông, Tây, Nam, Bắc) {(x-1, y); (x, y-1); (x, y+1); (x+1, y)} = N4 (p) (2.2)

Trong đó: số 1 là giá trị logic; N4 (p) tập 4 điểm lân cận của p

Hình 2.3 Lân cận các điểm ảnh của tọa độ (x, y)

Các lân cận chéo: các điểm lân cận chéo NP (p) (có thể coi lân cận chéo là 4

hướng: Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)

NP (p) = {(x+1, y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)} (2.3)

Tập kết hợp: N8 (p) = N4 (p) + NP (p) là tập hợp 8 lân cận của điểm ảnh p

Chú ý: Nếu (x, y) nằm ở biên (mép) ảnh; một số điểm sẽ nằm ngoài ảnh

Định nghĩa: Khoảng cách D (p, q) giữa hai điểm ảnh p toạ độ (x, y), q toạ độ (s,

t) là hàm khoảng cách (Distance) hoặc Metric nếu:

1 D (p, q) ≥ 0 (Với D (p, q) = 0 nếu và chỉ nếu p=q)

2 D (p, q) = D (q, p)

3 D (p, z) ≤ D (p, q) + D (q, z); z là một điểm ảnh khác

Khoảng cách Euclide: Khoảng cách Euclide giữa hai điểm ảnh p(x, y) và q(s, t)

được định nghĩa như sau:

De (p, q) = [(x - s) 2+ (y - t) 2] 1/2 (2.4)

Trang 12

Khoảng cách khối: Khoảng cách D4 (p, q) được gọi là khoảng cách khối đồ thị (CityBlock Distance) và được xác định như sau:

D4 (p, q) = | x - s | + | y - t | (2.5) Giá trị khoảng cách giữa các điểm ảnh r: giá trị bán kính r giữa điểm ảnh từ tâm điểm ảnh đến tâm điểm ảnh q khác Ví dụ: Màn hình CGA 12” (12”*2,54cm = 30,48cm = 304,8mm) độ phân giải 320*200; tỷ lệ 4/3 (Chiều dài/Chiều rộng) Theo định lý Pitago về tam giác vuông, đường chéo sẽ lấy tỷ lệ 5 phần (5/4/3: đường chéo/chiều dài/chiều rộng màn hình); khi đó độ dài thật là (305/244/183) chiều rộng màn hình 183mm ứng với màn hình CGA 200 điểm ảnh theo chiều dọc Như vậy, khoảng cách điểm ảnh lân cận của CGA 12” là ≈ 1mm

Khoảng cách D8 (p, q) còn gọi là khoảng cách bàn cờ (Chess-Board Distance) giữa điểm ảnh p, q được xác định như sau:

D8 (p, q) = max (| x-s |, | y-t |) (2.6) 2.1.3 Các vấn đề khác trong xử lý ảnh

a Thu nhận ảnh

Thu nhận ảnh: 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á

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

Ảnh thu được sau quá trình số hóa thường được lưu lại cho các quá trình xử

Trang 13

nhiều định dạng ảnh khác nhau từ ảnh đen trắng (với định dạng IMG), ảnh đa cấp xám cho đến ảnh màu: (BMP, GIF, JPEG…) Tuy các định dạng này khác nhau, song chúng đều tuân theo một cấu trúc chung nhất Nhìn chung, một tệp ảnh bất kỳ thường bao gồm 3 phần: header, data compression, palette color

b Nhiễu

Ảnh sau quá trình thu nhận thường không tránh khỏi nhiễu, nhiễu gây ra bởi ánh sáng tác động lên chính bản thân chất liệu và trong đó một phần nhỏ do thiết bị thu nhận ảnh đã tạo nên các đặc trưng riêng cho mỗi chất liệu Có thể nói, nhiễu được xem như thành phần không mong muốn có trong ảnh, nhiễu là một hiện tượng ngẫu nhiên luôn luôn có mặt trên mọi hệ thống xử lí tín hiệu thực Nhiễu xuất hiện trong ảnh bởi nhiều nguyên nhân như do sự thay đổi độ nhạy của đầu dò, do sự biến đổi của môi trường, do chính bản thân chất liệu sinh ra, do sai số lượng tử hóa hay sai số truyền Tất cả các nguyên nhân gây ra nhiễu ở trên đã sinh ra nhiễu được phân thành

các loại chính như sau:

Nhiễu độc lập với dữ liệu ảnh (Independent Noise): là một loại nhiễu cộng

(additive noise) ảnh thu được f(i,j) là tổng của ảnh đúng (true image) và nhiễu n(i,j): f(i,j) = s(i,j) + n(i,j)

Nhiễu phụ thuộc vào dữ liệu (Data dependent noise): nhiễu xuất hiện khi

có sự bức xạ đơn sắc nằm rải rác trên bề mặt ảnh, độ lởm chởm trên bề mặt tùy thuộc vào bước sóng của điểm ảnh Do có sự giao thoa giữa các sóng ảnh nên làm xuất hiện những vết lốm đốm trên ảnh

Nhiễu Gauss: nhiễu này có được do bản chất rời rạc của bức xạ (hệ thống

ghi ảnh bằng cách đếm các photon (lượng tử ánh sáng) Là nhiễu cộng và độc lập (independent, additivenoise) – nhiễu n (i, j) có phân phối Gauss (trung bình = zero) được mô tả bởi độ lệch chuẩn (standard deviation), hay phương sai Mỗi pixel trong ảnh nhiễu là tổng giá trị pixel đúng (true pixel) và pixel ngẫu nhiên

Trang 14

Nhiễu muối – tiêu (Salt & Pepper noise): nhiễu này sinh ra do xảy ra sai số

trong quá trình truyền dữ liệu Những pixel đơn được đặt luân phiên mang giá trị zero hay giá trị maximum tạo ra hình chấm dạng muối tiêu trên ảnh

Đã có nhiều phương pháp đã được đề xuất để loại bỏ nhiễu ra khỏi ảnh Trong đó, phương pháp lọc trung vị (Median filter) đầu tiên mang lại hiệu suất lọc khá tốt Tiếp sau đó là các bộ lọc phát triển dựa trên Median filter như Adaptive Median filter, Weighted Median filter, Center-Weighted Median filter, Alpha-Trim Mean filter… Dù đã có nhiều cải tiến nhưng những bộ lọc này vẫn còn nhiều nhược điểm là xử lý toàn bộ các pixel trong ảnh và vì vậy làm mất hoặc mờ đi các chi tiết ảnh.

2.1.4 Các phương pháp xử lý đối tượng trong ảnh

Nâng cao chất lượng ảnh là bước cần thiết trong xử lý ảnh nhằm hoàn thiện một số đặc tính của ảnh Nâng cao chất lượng ảnh gồm hai công đoạn khác nhau: tăng cường ảnh và khôi phục ảnh Tăng cường ảnh nhằm hoàn thiện các đặc tính của ảnh như:

- Lọc nhiễu, hay làm trơn ảnh

- Tăng độ tương phản, điều chỉnh mức xám của ảnh

- Làm nổi biên ảnh

Các thuật toán triển khai việc nâng cao chất lượng ảnh hầu hết dựa trên các

kỹ thuật trong miền điểm, không gian và tần số

a Chuyển qua ảnh xám

Đơn vị cơ bản của một bức ảnh là điểm ảnh (pixel), mỗi điểm ảnh có thể được biểu diễn bằng n bytes dưới các hệ màu khác nhau Việc chuyển đổi giữa các hệ màu thông thường được thực hiện thông qua các phép biến đổi ma trận Xét đến phương thức chuyển đổi từ ảnh 24 bit RGB sang ảnh 8 bit đa mức xám, để thực hiện yêu cầu trên, thông thường ta sử dụng cách chuyển đổi từ ảnh 24 bit RGB sang ảnh 8bit GrayScale

Trang 15

GrayScale: là một hệ thống màu có mô hình màu đơn giản nhất với 256 cấp độ

xám biến thiên từ màu đen đến màu trắng Sản phẩm được xuất ra sẽ có màu trắng đen

Được sử dụng cả trong công nghiệp in lẫn dùng trong việc thể hiện ảnh lên các thiết bị số

Ảnh xám (Gray image) hay còn gọi là ảnh đơn sắc (Monochromatic), mỗi giá trị điểm ảnh (Pixel) trong ma trận điểm ảnh mang giá trị từ 0 đến 255

Trong không gian màu RGB, để có một ảnh xám cần có phải có giá trị kênh màu Red(x, y) = Green(x, y) = Blue(x, y) (Với x, y lần lượt là tọa độ của điểm ảnh)

Hình 2.4 Chuyển đổi hệ thống màu RGB sang Grayscale

Công thức tính cường độ sáng tại một điểm ảnh từ ảnh RGB:

Ix, y = 0.3086 * Redx, y + 0.6094 * Greenx, y + 0.0820 * Bluex, y (2.7)

Trang 16

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)

Tôi có công thức khác tính cường độ sáng tại một điểm ảnh từ ảnh RGB:

I(x, y) = (2 * Red(x, y) + 5 * Green(x, y) + 1 * Blue(x, y)) / 8 (2.9) Chú ý:

Các phép toán trong số nguyên (Int) nhanh hơn rất nhiều trong số thực (Float)

Trong OpenCV, hệ thống màu có thứ tự các kênh màu là Blue-Green-Red Các thông số dùng để tính toán cường độ sáng cho ảnh xám như: 0.3086, 0.6094, 0.0820… Được coi là những con số đẹp do người ta nghiên cứu ra Các con

số này có thể thay đổi Chúng ta hoàn toàn có thể chọn một giá trị một kênh màu hoặc chia trung bình cộng của 3 kênh màu để tìm cường độ sáng tại một điểm ảnh (Pixel)

Lưu ý rằng 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 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

Trang 17

Hình 2.5 Ảnh minh họa nàng Lena

b Phân ngưỡng (Threshold)

Khi xử lý trực tiếp ảnh từ không gian màu (RGB, HIS…) hoặc ảnh xám (gray) đôi khi chúng ta phải tiếp nhận một số lượng lớn thông tin từ ảnh Điều này có thể gây khó khăn cho việc xây dựng thuật toán và làm giảm tốc đọ xử lý Vì thế có lớp thuật toán phân ngưỡng để chuyển ảnh đầu vào (ảnh màu hoặc ảnh xám) về không gian ảnh nhị phân: chỉ gồm hai giá trị 0 hoặc 1, hoặc 0 và 255 tùy theo quy định của cấu trúc ảnh Theo đó, giá trị 0 sẽ là giá trị ứng với những điểm đen trên ảnh và giá trị 1 (hoặc 255) sẽ là giá trị ứng với những điểm trắng Nhằm làm đơn giản hóa quá trình tính xử lý

Phân ngưỡng với ngưỡng cố định: nếu pixel có giá trị lớn hơn giá trị

ngưỡng thì nó được gán 1 giá trị (thường là 1), ngược lại nhỏ hơn giá trị ngưỡng thì

nó được gán 1 giá trị khác (thường là 0)

Hàm sử dụng là threshold, tham số đầu tiên là 1 ảnh xám, tham số thứ 2 là giá trị ngưỡng, tham số thứ 3 maxval là giá trị được gán nếu giá pixel lớn hơn giá trị ngưỡng, tham số thứ 4 là loại phân ngưỡng Tùy theo các loại phân ngưỡng mà pixel được gán giá trị khác nhau:

 THRESH_BINARY

Nếu giá trị pixel lớn hơn ngưỡng thì gán bằng maxval

Ngược lại bằng gán bằng 0

Trang 18

Nếu giá trị pixel lớn hơn ngưỡng thì gán bằng 0

Ngược lại bằng gán bằng maxval

 THRESH_TRUNC

Nếu giá trị pixel lớn hơn ngưỡng thì gán giá trị bằng ngưỡng

Ngược lại giữ nguyên giá trị

 THRESH_TOZERO

Nếu giá trị pixel lớn hơn ngưỡng thì giữ nguyên giá trị

Ngược lại gán bằng 0

 THRESH_TOZERO_INV

Nếu giá trị pixel lớn hơn ngưỡng thì gán giá trị bằng 0

Ngược lại giữ nguyên

Hình 2.6 Ví dụ minh họa với ngưỡng bằng 127

Ưu điểm của thuật toán đơn giản dễ lập trình

Trang 19

Nhược điểm là khó chọn ngưỡng thích nghi với nhiều loại ảnh trong các điều kiện ánh sáng khác nhau

Adaptive Thresholding (phân ngưỡng thích nghi): phương pháp phân

ngưỡng ở trên không phù hợp cho nhiều trường hợp, như là ánh sáng không đồng đều trên ảnh Trong trường hợp đó chúng ta dùng hàm adaptive Threshold Phương thức này tính giá trị trung bình của các n điểm xung quanh pixel đó rồi trừ cho C chứ không lấy ngưỡng cố định (n thường là số lẻ, còn C là số nguyên bất kỳ)

Ngoài các tham số giống như phân ngưỡng thường, adaptiveThreshold có thêm các tham số:

 ADAPTIVE_THRESH_MEAN_C: giá trị của pixel phụ thuộc vào các pixel lân cận

 ADAPTIVE_THRESH_GAUSSIAN_C: giá trị của pixel cũng phụ thuộc vào các pixel lân cận, tuy nhiên được khử nhiễu

 Block Size: số pixel lân cận dùng để tính toán

 C: hằng số trừ đi giá trị trung bình

Hình 2.7 Ví dụ minh họa cho các phương pháp phân ngưỡng khác nhau Phân ngưỡng Otsu: Otsu là tên một nhà nghiên cứu người Nhật đã nghĩ ra ý

Trang 20

của ảnh đầu vào nhằm thay thế cho việc sử dụng ngưỡng cố định (fixed hay const) Phương pháp này cho kết quả là mỗi ảnh khác nhau có một ngưỡng tương ứng khác

nhau bằng các bước xử lý như sau:

 Chọn một giá trị khởi tạo cho T (nên chọn giá trị mang tính công thức, ví dụ

T = (min + max) / 2, T = giá trị trung bình tránh dùng các giá trị mang tính định lượng thiết lập cứng)

 Phân hoạch ảnh sử dụng T kết quả của bước này sẽ tạo ra 2 nhóm điểm ảnh: G1 chứa tất cả các điểm ảnh với giá trị (intensity) > T và G2 chứa các điểm ảnh với giá trị (intensity) <= T

 Tính trung bình (Average hay Mean) m1 và m2 của các điểm ảnh thuộc G1

và G2

 Tính lại T dựa vào m1 và m2: T = (m1 + m2) / 2

 Lặp lại bước 2 đến 4 cho tới khi nào giá trị chênh lệch giữa T củ và T mới là không đáng kể (nhỏ hơn một giá trị cho trước deltaT) DeltaT thường được

sử dụng là sai số từ các phép tính toán trong quá trình xử lý Trong trường hợp này T được tính ở 4 sẽ có phép sai số là 1 / 2 * (giá trị đơn vị của điểm ảnh)

Hình 2.8 Ảnh xám của nàng Lena

Trang 21

Hình 2.9 Ảnh nàng Lena sau khi phân ngưỡng Ostu

c Tách biên và phân vùng ảnh

Biên của ảnh:

Điểm Biên: Một điểm ảnh được coi là điểm biên nếu có sự thay đổi nhanh

hoặc đột ngột về mức xám (hoặc màu) Ví dụ trong ảnh nhị phân, điểm đen gọi là điểm biên nếu lân cận nó có ít nhất một điểm trắng

Đường biên (đường bao: boundary): tập hợp các điểm biên liên tiếp tạo

thành một đường biên hay đường bao

Ý nghĩa của đường biên trong xử lý: ý nghĩa đầu tiên: đườ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 Thứ hai, 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

Tầm quan trọng của biên: để thấy rõ tầm quan trọng của biên, xét ví dụ sau:

khi người họa sỹ muốn vẽ một danh nhân, họa sỹ chỉ cần vẽ vài đường nứt tốc họa mà không cần vẽ một cách đầy đủ

Mô hình biểu diễn đường biên, theo toán học: điểm ảnh có sự biến đổi mức xám u(x) một cách đột ngột theo hình dưới

Trang 22

Hình 2.10 Một số kiểu đường biên thông dụng

Các khái niệm và định nghĩa tóm tắt trên là cơ sở giúp ta hiểu và dùng để hiểu cách xây dựng, thiết kế các kỹ thuật phát hiện biên ảnh

Từ định nghĩa toán học của biên người ta sử dụng hai phương pháp phát hiện biên như sau (phương pháp chính):

Phương pháp phát hiện biên trực tiếp: phương pháp này chủ yếu dựa vào sự

biến thiên độ sáng của điểm ảnh để làm nổi biên bằng kỹ thuật đạo hàm

 Nếu lấy đạo hàm bậc nhất của ảnh: ta có phương pháp Gradient

 Nếu lấy đạo hàm bậc hai của ảnh: ta có phương pháp Laplace

Hai phương pháp này được gọi chung là phương pháp dò biên cục bộ Ngoài ra, người ta còn sử dụng phương pháp “đi theo đường bao” dựa vào công cụ toán học

là nguyên lý quy hoạch động và đượng gọi là phương pháp 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

Phương pháp phát hiện biên gián tiếp: Nếu bằng cách nào đấy, chúng ta thu

được các vùng ảnh khác nhau thì đường phân cách giữa các vùng đó chính là biên Nói cách khác, việc xác định đường bao của ảnh được thực hiện từ ảnh đã được phân vùng 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ỏ

Phân vùng ảnh:

Phân vùng ảnh là bước then chốt trong xử lý ảnh Giai đoạn này nhằm phân tích ảnh thành những thành phần có cùng tính chất nào đó dựa theo biên hay các vùng liên thông Tiêu chuẩn để xác định các vùng liên thông có thể là cùng mức

Trang 23

xám, cùng màu hay cùng độ nhám Trước hết cần làm rõ khái niệm "vùng ảnh" (Segment) và đặc điểm vật lý của vùng

Vùng ảnh là một chi tiết, một thực thể trong toàn cảnh Nó là một tập hợp các điểm có cùng hoặc gần cùng một tính chất nào đó: mức xám, mức màu, độ nhám… Vùng ảnh là một trong hai thuộc tính của ảnh Nói đến vùng ảnh là nói đến tính chất bề mặt Đường bao quanh một vùng ảnh (Boundary) là biên ảnh Các điểm trong một vùng ảnh có độ biến thiên giá trị mức xám tương đối đồng đều hay tính kết cấu tương đồng

Dựa vào đặc tính vật lý của ảnh, người ta có nhiều kỹ thuật phân vùng: phân vùng dựa theo miền liên thông gọi là phân vùng dựa theo miền đồng nhất hay miền kề; phân vùng dựa vào biên gọi là phân vùng biên Ngoài ra còn có các kỹ thuật phân vùng khác dựa vào biên độ, phân vùng dựa theo kết cấu

Thuật toán đếm và tách các đối tượng chồng lấp với Watershed là một trong những phương pháp gián tiếp tìm biên của đối tượng dính nhau hoặc đè chồng lên nhau Đếm đối tượng có hình dạng đơn giản và không dính nhau khá là dễ Chỉ cần lấy biên từ ảnh nhị phân thì chúng ta có thể biết được số lượng đường biên Nhưng nếu đối tượng dính nhau hoặc đè chồng, thì khó hơn 1 chút

Watershed là thuật toán xử lý hình ảnh nhằm tách đối tượng khỏi background Thuật toán có input là ảnh xám và 1 ảnh gọi là ảnh marker Ảnh marker là ảnh mà bạn cho thuật toán Watershed biết đâu là đối tượng foreground và background

Ảnh marker là ảnh có cùng size với ảnh xám

Ví dụ minh họa cho thuật toán Watershed như sau: hình phía trên (ảnh gốc với marker) là ảnh xám được đánh dấu thủ công để tách con đường ra khỏi cảnh Đưa ảnh nguồn và ảnh đánh dấu vào thì thuật toán sẽ thực hiện việc phân đoạn con đường như hình phía dưới (con đường đã được phân đoạn với thuật toán Watershed)

Trang 24

Hình 2.11 Ảnh minh họa thuật toán Watershed

2.2 TÌM HIỂU HỀ ĐIỀU HÀNH RASPBIAN, NGÔN NGỮ PYTHON, THƯ VIỆN OPENCV

2.2.1 Hệ điều hành raspbian

Raspberry Pi có rất nhiều hệ điều hành hỗ trợ, trong đó có Raspbian là hệ điều hành chính thức của Raspberry Pi Foundation, ngoài ra có 7 hệ điều hành khác (Ubuntu Mate, Snappy Core Ubuntu, Window 10 Iot Core, Osmc, OpenElec Pinet, RiscOS) được xác nhận hỗ trợ và kha khá hệ điều hành do các nhà phát triển tự tối

ưu

Rapbian là một hệ điều hành cơ bản dễ sử dụng, phổ biến nhất và do chính Raspberry Pi Foundation cung cấp Hơn thế nữa, Raspbian là phiên bản không chính thức của Debian Wheezy – một phiên bản Linux có tiếng Raspbian rất đơn giản và quen thuộc Nó cũng được hãng khuyến cáo sử dụng, nhất là cho người mới bắt đầu làm quen với RPI Raspbian có dung lượng sau khi giải nén là khoảng gần 4GB, cần tối thiểu 1 cái thẻ 4GB để có thể sử dụng Raspbian

Trang 25

Raspbian được hướng đến người dùng có mục đích:

 Sử dụng Raspberry Pi như máy tính văn phòng để lướt web, soạn văn bản, check mail và thi thoảng nghe nhạc/xem phim

 Nghiên cứu phát triển các thiết bị điều khiển tự động

 Sử dụng như một máy chủ cung cấp các dịch vụ như web, file server, printer server

 Raspbian hoạt động rất ổn định, tốc độ nhanh (đặc biệt là trên Raspberry Pi 3) Tốc độ khởi động thử nghiệm Raspbian với Raspberry Pi 3, sử dụng thẻ Toshiba Exceria 48MB/s thì chỉ 7s Nhược điểm của nó là giao diện đơn giản, cổ điển và không hào nhoáng

2.2.2 Ngôn ngữ python

Python là ngôn ngữ lập trình được sử dụng rất phổ biến ngày nay để phát triển nhiều loại ứng dụng phần mềm khác nhau như các chương trình chạy trên desktop, server, lập trình các ứng dụng web Ngoài ra Python cũng là ngôn ngữ ưa thích trong ngành khoa học về dữ liệu (data science) cũng như là ngôn ngữ phổ biến để xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồm machine learning Được tạo ra bởi Guido Van Rossum, thiết kế bắt đầu vào cuối những năm 1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991

Đặc Điểm Nổi Bật Của Python

 Python là ngôn ngữ dễ học: ngôn ngữ Python có cú pháp đơn giản, rõ ràng sử dụng một số lượng không nhiều các từ khoá, do đó Python được đánh giá là một ngôn ngữ lập trình thân thiện với người mới học

 Python là ngôn ngữ dễ hiểu: mã lệnh (source code hay đơn giản là code) viết bằng ngôn ngữ Python dễ đọc và dễ hiểu Ngay cả trường hợp bạn chưa biết

gì về Python bạn cũng có thể suy đoán được ý nghĩa của từng dòng lệnh trong source code

 Python có khả năng tương thích cao (highly portable): Cchương trình phần mềm viết bằng ngôn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhau bao gồm Windows, Mac OSX và Linux

Trang 26

 Khả năng mở rộng và có thể nhúng: giả sử một ứng dụng đòi hỏi sự phức tạp rất lớn, chúng ta có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn ngữ khác (có thể gọi được từ C) vào code Python Điều này sẽ cung cấp cho các ứng dụng những tính năng tốt hơn cũng như khả năng scripting mà những ngôn ngữ lập trình khác khó có thể làm được

 Ngôn ngữ thông dịch cấp cao: không giống như C/C++, với Python chúng ta không phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vô nghĩa Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngôn ngữ máy tính có thể hiểu Một ứng dụng viết bằng ngôn ngữ Python có thể bao gồm một hoặc nhiều tập tin khác nhau Các tập tin chứa

mã lệnh Python sẽ có phần mở rộng là py (ví dụ hello.py, test.py ) Mã lệnh Python được viết tuân theo các quy tắc được quy định sẵn Ứng dụng python

sẽ được biên dịch bằng phần mềm có tên là Python Interpreter

'L' unsigned

Trang 27

Mã kiểu C Type Python Type Kích thước tối thiểu tính

theo byte

2.2.3 Thư viện OpenCV

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở chuyên dùng để xử lý các vấn đề liên quan đến thị giác máy tính OpenCV được thiết kế một cách tối ưu, sử dụng tối đa sức mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thông thường OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau, nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS

Thư viện OpenCV có thể được chia thành 2 phần (module) chính Phần căn bản (basic) là mã nguồn được nhóm phát triển xây dựng và kiểm định toàn diện, gồm các thuật toán đã được thế giới công nhận và đánh giá dựa trên cơ sở lý thuyết chắc chắn Phần mở rộng (contribution) được nhiều tổ chức khoa học khác nhau trên thế giới đóng góp, gồm nhiều thuật toán cập nhật được xây dựng dựa trên các công trình nghiên cứu, bài báo mới đăng trong thời gian gần đây Do vậy các thuật toán trong phần mở rộng có độ ổn định và tối ưu không cao Từ phiên bản 3.0, phần

mở rộng được tách riêng không còn được gộp chung với thư viện mặc định OpenCV là thư viện mã nguồn mở được đóng gói thành tập tin nén Tùy vào phiên bản dành cho các hệ điều hành khác nhau mà tập tin nén này có định dạng tương ứng Thư viện OpenCV cung cấp cho người dùng các cấu trúc dữ liệu, đối tượng và hàm bằng cách khai báo nguyên mẫu (prototype) của chúng trong các tập tin thư viện C/C++ (*.h, *.hpp…) và định nghĩa chi tiết trong các tập tin mã nguồn (*.c,

*.cpp) Với mức độ sử dụng OpenCV, ta chỉ cần giải nén các tập tin đã được biên dịch sẵn rồi thực hiện các thao tác cài đặt đường dẫn cho thích hợp để hệ điều hành tìm đến đúng vị trí của các tập tin thư viện Ở mức độ cao hơn, nếu muốn hiệu chỉnh sửa đổi thuật toán hay sử dụng phần mở rộng của OpenCV ta cần phải biên dịch mã nguồn trực tiếp trên máy trước khi cài đặt

Trang 28

Các thành phần chính:

 core Các hàm cơ bản

 imgproc Xử lý ảnh

 imgcodecs Đọc và ghi tập tin ảnh

 videoio Đọc và ghi đa phương tiện

 highgui Giao diện người dùng bậc cao

 video Phân tích video

 calib3d Hiệu chuẩn thiết bị ghi hình và tái cấu trúc 3D

 features2d Bộ khung các đặc trưng 2D

 objdetect Nhận dạng đối tượng

 ml Học máy

 flann Gom nhóm và tìm kiếm trong nhiều chiều

 photo Các thuật toán chụp ảnh

 stitching Vá ảnh

 cudaarithm Các toán tử trên ma trận

 cudabgsegm Phân đoạn nền ảnh

 cudacodec Mã hóa/giải mã video

 cudafeatures2d Phát hiện và mô tả đặc trưng

Trang 29

Các thành phần mở rộng:

 aruco Phát hiện ArUco Marker

 bgsegm Các phương pháp phân đoạn đối tượng mới

 bioinspired Các mô hình thị giác sinh học và các công cụ phái sinh

 ccalib Tùy chọn hiệu chuẩn mẫu cho tái cấu trúc 3D

 cvv GUI cho thao tác bắt lỗi trực quan của các chương trình thị giác máy tính

 datasets Thư viện hỗ trợ làm việc với các bộ dữ liệu khác nhau

 dnn Bộ thư viện mạng neural học sâu

 dpm Các mô hình biến dạng từng phần

 face Nhận dạng mặt người

 fuzzy Xử lý ảnh dựa vào lý thuyết mờ

 hdf Nhập xuất dữ liệu cho định dạng HDF (Hierarchical Data Format)

 line_descriptor Mô tả nhị phân cho các đường thẳng trích chọn từ một ảnh

 matlab Liên kết với MATLAB

 optflow Các thuật toán dòng quan học

 plot Hàm vẽ cho dữ liệu ma trận

 reg Đăng kí ảnh

 rgbd Xử lý chiều sâu trong hệ màu RGB

 saliency API xử lý vùng lồi trên ảnh

 sfm Cấu trúc từ chuyển động

 stereo Các thuật toán tín hiệu nổi tương tự

 structured_light API cho tính cấu trúc của ánh sáng

 surface_matching Khớp bề mặt

 text Phát hiện và nhận dạng chữ trong cảnh tự nhiên

 tracking Các phương pháp theo vết

 xfeatures2d Tính năng đặc trưng 2D mở rộng

 ximgproc Xử lý ảnh mở rộng

Trang 30

OpenCV bao gồm một số module khác nhau, mỗi module có các chức năng riêng biệt và bổ sung cho nhau Chẳng hạn như, "Core" cung cấp cho người dùng cấu trúc dữ liệu cơ sở và các tính năng, trong khi thành phần "Imgproc" có tính năng xử lý hình ảnh, bao gồm lọc ảnh (cả tuyến tính và phi tuyến tính), cũng như các tuỳ chọn chỉnh sửa ảnh khác (thay đổi kích thước, biến dạng ) và chuyển đổi không gian màu Bên cạnh những tính năng có thể khai thác từ Photoshop thì bộ chỉnh sửa ảnh đến từ OpenCV cũng khá thú vị, hơn nữa chức năng của nó cũng có phần đơn giản hơn Photoshop cho nên bạn dễ dàng xử lý hơn

Ở module "Video", OpenCV cung cấp cho bạn một số thuật toán mạnh nhằm ước tính chuyển động, theo dõi đối tượng và thực hiện phương pháp tách cảnh nền Module "Calib3d" bao gồm nhiều thuật toán hình học multiple-view, cung cấp một

số tính năng chẳng hạn như hiệu chỉnh camera hoặc xây dựng lại đồ hoạ 3D

Module "Features2d" bao gồm bộ mô tả và bộ tương hợp mô tả cũng như công cụ phát hiện tính năng Với thư viện "Objdetect", người dùng có thể tìm các đối tượng khác nhau từ các lớp xác định trước (ví dụ xe hơi, khuôn mặt, ánh mắt )

OpenCV còn bao gồm "Highgui", một module được thiết kế để quay video,

mã hoá giải mã hình ảnh và video Module "GPU" bao gồm các thuật toán nhằm tăng tốc GPU Ngoài ra, chương trình còn bao gồm thư viện trợ giúp, cụ thể là

FLANN hay Google test wrapper

2.3 GIỚI THIỆU PHẦN CỨNG

2.3.1 Raspberry Pi 3 Model B V1.2

Raspberry Pi là từ để chỉ các máy tính chỉ có một board mạch (hay còn gọi là

máy tính nhúng) kích thước chỉ bẳng một thẻ tín dụng, được phát triển tại Anh bởi Raspberry Pi Foundation với mục đích ban đầu là thúc đẩy việc giảng dạy về khoa học máy tính cơ bản trong các trường học và các nước đang phát triển Board mạch Raspberry Pi3 Model B này gồm vi xử lý Broadcom BCM2837, ARMv8 (64bit) quad-core kết hợp với nhiều linh kiện khác để có thể dễ dàng lập trình và xây dựng các dự án Cùng với đó là sự hỗ trơ từ nhiều mã nguồn mở và những ưu điểm mà Raspberry mang lại nên Raspberry Pi3 Model B là board mạch mà nhóm cần sử dụng trong đề tài

Trang 31

Hình 2.12 Mặt trước của board Raspberry Pi3 Model B

Raspberry Pi3 Model B là môt dòng cơ bản thích hơp cho những người mới bắt đầu học lập trình

Bảng 2.2 Thông số kỹ thuật của Raspberry Pi3 Model B

Vi xử lý Broadcom BCM2837, ARMv8 (64bit)

quad-core

CPU Broadcom VideoCore IV, OpenGL ES

2.0,OpenVG 1080p60 , 400 MHz

RAM (chia xẻ với CPU) 1GB LPDDR2 (900Mhz)

Trang 32

10/100mb Ethernet wifi 802.11 n Bluetooth 4.1 CSI, DSIVideo & audio 1080p HDMI, stero audio 3.5mm jack

Bảng cho ta cái nhìn tổng quát về Raspberry Pi3 Model B với những thông

số chính về điện áp hoạt động, điện áp đầu vào, số lượng chân vào ra, các dòng DC trên các I/O, bộ nhớ, tốc độ xử lý của board

Hình 2.13 Sơ đồ thành phần chính của Raspberry Pi3 Model B

Chức năng các linh kiện của board mạch:

- Cổng USB: 4 cổng USB này cho phép gắn 4 thiết bị USB khách nhau như chuột, bàn phím…

- Cổng Ethernet: Cổng Ethernet để nhanh chóng thiết lập và truy cập internet

- Audio/Video: kết hợp giắc cắm âm thanh 3.5mm và video tổng hơp

- Cổng CSI camera: cho phép module camera cắm vào trực tiếp

Trang 33

- Nguồn vào Micro USB: công cấp nguồn vào cho Raspberry

- Cổng DSI: cho phép màn hình cắm vào trực tiếp

- Khe cắm thẻ MicroSD: cắm thẻ chứa hê điều hành sẽ khởi động khi ta cấp nguồn cho Rasperry

- Bluetooth: hỗ trợ Bluetooth 4.1 Bluetooth năng lượng thấp (BLE)

- Chân GPIO: hỗ trợ 40 chân vào ra

2.3.2 Module camera Raspberry Pi V1.3

Camera Raspberry Pi cắm trực tiếp vào đầu nối CSI trên Raspberry

Pi Nó có thể cung cấp hình ảnh độ phân giải tinh thể rõ nét 5MP hoặc quay video HD 1080p ở tốc độ 30 khung hình / giây! Tùy chỉnh được thiết kế và sản xuất bởi Tổ chức Raspberry Pi ở Anh, Camera Raspberry Pi có cảm biến Omnivision 5647 5MP trong một module lấy nét cố định Module gắn với Raspberry Pi, bằng cách sử dụng cáp 15 Pin Ribbon, với Giao diện nối tiếp camera MIPI 15 chân chuyên dụng (CSI), được thiết kế đặc biệt để giao tiếp với máy ảnh Bus CSI có khả năng tốc độ dữ liệu cực cao và nó mang dữ liệu điểm ảnh tới bộ xử lý BCM2837

Hình 2.14 Module camera Raspberry Pi V1.3 Các tính năng của Raspberry Pi Camera Board:

 Hoàn toàn tương thích với Raspberry Pi3 Model B

Trang 34

như tiết kiệm được thời gian trong việc phát triển ứng dụng của mình

Trang 35

Hình 2.15 LCD 16x2

 VSS: cực âm nguồn cho LCD - GND: 0V

 VDD: cực dương nguồn LCD - 5V

 Constrast Voltage (Vo): điều khiển độ sáng màn hình

 Register Select (RS): lựa chọn thanh ghi

 Enable: Cho phép ghi vào LCD

 D0 - D7: 8 chân trao đổi dữ liệu với các vi điều khiển, với 2 chế độ sử dụng

o Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7

o Chế độ 4 bit: Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7

 Backlight (Backlight Anode (+) và Backlight Cathode (-)): Tắt bật đèn màn hình LCD

Trang 36

2.3.4 Module I2C

Hình 2.16 Module I2C

Thông thường, để điều khiển và hiển thị được kí tự từ vi điều khiển xuất ra màn hình 16x02 bạn cần tới 7-8 dây nối đến chân vi điều khiển Điều này gây ra rất nhiều phiền toái: đi sai dây, mạch rườm ra, khó viết code

Những điều này được mạch điều khiển màn hình khắc phục hoàn toàn vì số

lượng dây tín hiệu giảm còn duy nhất 2 dây Bằng việc sử dụng giao tiếp I2C, việc

điều khiển trực tiếp màn hình được chuyển sang cho IC xử lý nằm trên mạch Bạn chỉ việc gửi các mã lệnh cùng nội dung hiển thị, do vậy giúp vi điều khiển có nhiều thời gian để xử lý các tiến trình phức tạp khác

I2C, viết tắt của từ tiếng Anh “Inter-Integrated Circuit”, là một loại bus nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips Ban đầu, loại bus này chỉ được dùng trong các linh kiện điện tử của Philips Sau đó, do tính ưu việt và đơn giản của nó, I2C đã được chuẩn hóa và được dùng rộng rãi trong các mô đun truyền thông nối tiếp của vi mạch tích hợp ngày nay

Trang 37

Hình 2.17 Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và

chế độ nhanh (Fast mode)

Hình 2.18 Hoạt động của SDA, SCL khi truyền nhận dữ liệu

Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL) SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và chỉ theo một hướng Như ta thấy trên hình vẽ trên, khi một thiết bị ngoại

vi kết nối vào đường bus I2C thì chân SDA của nó sẽ nối với dây SDA của bus, chân SCL sẽ nối với dây SC Mỗi dây SDA hãy SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở kéo lên (pullup resistor) Sự cần thiết của các điện trở kéo này là vì chân giao tiếp I2C của các thiết bị ngoại vi thường là dạng cực máng hở (opendrain hay opencollector) Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong khoảng 1K đến 4.7k

Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất)

để phân biệt, nó còn được cấu hình là thiết bị chủ hay tớ Thiết bị chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ-tớ giao tiếp thì thiết bị

Trang 38

trình giao tiếp Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong việc giao tiếp

Thông số kỹ thuật

- Kích thước: 41.5mm (L) x 19mm (W) x 15.3mm (H)

- Trọng lượng: 5g

- Điện áp hoạt động: 2.5-6V

- Giao tiếp I2C

- Jump Chốt: Cung cấp đèn cho LCD hoặc ngắt

- Biến trở xoay độ tương phản cho LCD

Giao tiếp I2C chỉ sử dụng duy nhất 2 dây tín hiệu: SDA và SCL giúp tiết kiệm chân trên vi điều khiển

Tốc độ truyền dữ liệu lên đến 400Kbps

Dữ liệu truyền nhận đảm bảo tính toàn vẹn vì sử dụng cơ chế phản hồi (ACK) trên mỗi byte dữ liệu

Có khả năng kết nối nhiều thiết bị với nhau: trên mạch có sẵn các mối hàn A0, A1, A2 để thay đổi địa chỉ của module

Địa chỉ mặc định: 0x27, có thể mắc vào I2C bus tối đa 8 module (3bit address set)

Để điều khiển độ tương phản của màn hình, bạn xoay biến trở màu xanh

Trang 39

Chương 3 TÍNH TOÁN VÀ THIẾT KẾ

3.1 GIỚI THIỆU

Để đảm bảo việc thi công mạch theo như ý tưởng, chuẩn xác và không xảy ra

sự cố bắt buộc ta phải tính toán và thiết kế Với đề tài “Thiết kế và thi công hệ thống đếm số lượng cá giống” mục tiêu chính là thi công được hệ thống có thể

đếm được số lượng trong ảnh hiển thị ra màn hình

- Thiết kế sơ đồ khối của hệ thống

- Tính toán, thiết kế từng khối của hệ thống như: khối nguồn, khối xử lý trung tâm, khối led, khối camera, khối hiển thị

3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG

3.2.1 Thiết kế sơ đồ khối hệ thống

Hình 3.1 Sơ đồ khối của hệ thống

Trang 40

Thông qua sơ đồ khối này, nhóm sẽ thiết kế từng khối rồi sau đó sẽ kết hợp các khối lại để đạt được mục đích cuối cùng là hoàn thành mạch đếm số lượng cá giống

Chức năng của từng khối:

- Khối nguồn: khối nguồn, khối xử lý trung tâm, khối led, khối camera, khối

hiển thị hoạt động

- Khối camera: dùng để chụp ảnh đầu vào

- Khối xử lý trung tâm: là trung tâm xử lý của mạch, thực hiện công việc

như: xử lý ảnh đầu vào, lọc nhiễu biến đổi ảnh, đếm số lượng

- Khối Led: dùng để cung cấp ánh sáng cho hệ thống đảm bảo cường độ sáng

cho ảnh

- Bể chứa cá: là môi trường dùng để chứa cá cần đếm

- Khối hiển thị: dùng để hiển thị kết quả đếm ra màn hình

Hoạt động của hệ thống:

Sau khi cấp nguồn, khối led sẽ sáng Điều khiển camera chụp ảnh cá truyền đến khối xử lý trung tâm Khối xử lý trung tâm bắt đầu xử lý ảnh gồm các bước: lọc nhiễu, chuyển về ảnh xám, cân bằng ảnh, phân ngưỡng, tách biên, đếm và xuất ra màn hình Khối màn hình hiển thị số lượng cá giống trong các lần đếm

3.2.2 Tính toán và thiết kế hệ thống

Việc tính toán thiết kế là công việc không thể thiếu khi thực hiện bất cứ đề tài nào Chính công việc này sẽ quyết định phần lớn đến kết quả của đề tài Mọi thiết bị, linh kiện cần được tính toán lựa chọn kỹ lưỡng mới đem đến kết quả tốt cho

đề tài

Ngày đăng: 21/05/2019, 15:45

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w