MÔ PHỎNG NHẬN DIỆN mầu sắc dùng visual studio 2013 (có code) ....... MÔ PHỎNG NHẬN DIỆN mầu sắc dùng visual studio 2013 (có code) ....... MÔ PHỎNG NHẬN DIỆN mầu sắc dùng visual studio 2013 (có code) ....... MÔ PHỎNG NHẬN DIỆN mầu sắc dùng visual studio 2013 (có code) .......
Trang 2DANH MỤC CÁC TỪ VIẾT TẮT V DANH MỤC CÁC BẢNG BIỂU VI LỜI MỞ ĐẦU VII
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 GIỚI THIỆU 1
1.2 YÊU CẦU 1
CHƯƠNG 2 GIỚI THIỆU VỀ THƯ VIỆN OPENCV 2
2.1 GIỚI THIỆU 2
2.2 SƠ LƯỢC VỀ CẤU TRÚC CỦA THƯ VIỆN OPENCV 3
2.3 CÀI ĐẶT OPENCV CHO VISUAL STUDIO 2013 4
CHƯƠNG 3 GIỚI THIỆU VỀ XỬ LÝ ẢNH 7
3.1 ẢNH SỐ 7
3.1.1 Điểm ảnh (Picture Element) 7
3.1.2 Độ phân giải của ảnh 7
3.1.3 Mức xám của ảnh 7
3.2 PHÂN LOẠI ẢNH 8
3.2.1 Ảnh đen trắng 8
3.2.2 Ảnh nhị phân 8
3.2.3 Ảnh màu 8
3.3 CÁC GIAI ĐOẠN XỬ LÝ ẢNH 11
3.3.1 Phần thu nhận ảnh (Image Acquisition) 12
3.3.2 Tiền xử lý (Image Processing) 12
3.3.3 Phân đoạn (Segmentation) hay phân vùng ảnh 12
3.3.4 Biểu diễn ảnh (Image Representation) 12
Trang 34.1 CHƯƠNG TRÌNH GIẢI THUẬT 14
4.2 CÁC PHÉP TOÁN HÌNH THÁI HỌC 15
4.3 KẾT QUẢ MÔ PHỎNG 16
CHƯƠNG 5 NHẬN XÉT 18
5.1 ƯU ĐIỂM 18
5.2 NHƯỢC ĐIỂM 18
5.3 HƯỚNG PHÁT TRIỂN 18
TÀI LIỆU THAM KHẢO 19
Trang 4HÌNH 2-2: CẤU TRÚC CỦA OPENCV [2] 3
HÌNH 2-3: CỬA SỔ THÔNG TIN VỀ HỆ THỐNG CỦA WINDOWS 4
HÌNH 2-4: CỬA SỔ THUỘC TÍNH CỦA HỆ THỐNG 5
HÌNH 3-1: KHÔNG GIAN MÀU RGB [3] 9
HÌNH 3-2: KHÔNG GIAN MÀU HSV [4] 10
HÌNH 3-3: HÌNH ẢNH KHI CHUYỂN ĐỔI CÁC KHÔNG GIAN MÀU [5] 11
HÌNH 3-4: CÁC BƯỚC CƠ BẢN TRONG XỬ LÝ ẢNH [6] 11
HÌNH 3-5: SƠ ĐỒ PHÂN TÍCH VÀ XỬ LÝ ẢNH [7] 13
HÌNH 4-1: CHƯƠNG TRÌNH GIẢI THUẬT 14
HÌNH 4-2: TẠO CÁC THANH TRƯỢT TRÊN CỬA SỔ TRACBARS 16
HÌNH 4-3: HÌNH ẢNH VẬT THỂ SAU KHI CO GIÃN 16
HÌNH 4-4: HÌNH ẢNH CHUYỂN SANG KHÔNG GIAN MÀU HSV 17
HÌNH 4-5: KẾT QUẢ XÁC ĐỊNH MÀU CỦA VẬT THỂ 17
Trang 5OpenCV Open Source Computer Vision
Trang 7càng phát triển Việc kết hợp giữa xử lý ảnh với các kỹ thuật khác như công nghệthông tin, truyền thông, điện tử, điều khiển tự động, cơ khí…đãtạo ra nhiều sảnphẩm ứng dụng trong đời sống hàng ngày cũng như trong khoa học, an ninh, y học,quân sự.
Trang 8CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu
Trong sản xuất công nghiệp cũng như nông nghiệp, việc kiểm tra ngoại quan(Visual Check) đối với sản phẩm là vô cùng cần thiết Công việc này giúp cho sảnphẩm trước khi tung ra thị trường có chất lượng đồng đều, loại bỏ những sản phẩmkhông phù hợp trong quá trình sản xuất và phân loại các sản phẩm thành từng nhómkhác nhau Ví dụ: phân loại rau quả thành quả chín quả xanh, phân loại gạch thànhloại 1, 2, 3 Hiện nay việc kiểm tra này chủ yếu do con người đảm nhiệm vì vậy đểtránh sai sót do yếu tố con người và để đạt được năng suất cao, việc tự động hóakhâu kiểm tra ngoại quan là vô cùng cần thiết Xuất phát từ nhu câu thực tiễn ứngdụng công nghệ xử lý ảnh để thay thế cho khâu kiểm tra ngoại quan do con ngườithực hiện Có nhiều phương pháp kiểm tra nhưng trong đề tài này sẽ giới thiệuphương pháp theo hướng nhận diện màu sắc của đối tượng, sử dụng phần mềmVisual Studio 2013 kết hợp với thư viện OpenCV
1.2 Yêu cầu
Để thực hiện được đề tài cần:
- Tìm hiểu các vấn đề về ảnh số, xử lý ảnh số
- Tìm hiểu thư viện xử lý ảnh OpenCV trên nền C++
- Tìm hiểu về giải thuật nhận diện màu sắc
- Viết phần mềm mô phỏng nhận diện màu sắc của vật thể từ camera trênnền C++
Trang 9CHƯƠNG 2 GIỚI THIỆU VỀ THƯ VIỆN OPENCV
Hình 2-1: Lịch sử phát triển của OpenCV [1]
OpenCV bắt đầu từ những năm 1999, đến năm 2000 được giới thiệu trong một hộinghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, nhưng năm 2006bản OpenCV version 1.0 mới chính thức được công bố và bản OpenCV version 1.1vào năm 2008 được ra đời Tháng 10 năm 2009, bản OpenCV version 2.0 ra đời.Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bở WillowGarage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ Robot Cho đếnnay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận vàđược sự hưởng ứng rất lớn của cộng đồng
Trang 101.4 Sơ lược về cấu trúc của thư viện OpenCV
Cấu trúc của OpenCV được chia làm 5 phần chính:
Hình 2-2: Cấu trúc của OpenCV [2]
CXCORE chứa các định nghĩa kiểu dữ liệu cơ sở, đại số tuyến tính, phương pháp
thống kê, chức năng duy trì, điều khiển chuỗi và một số các chức năng đồ họa đượcdùng để vẽ trên ảnh
CV chứa các thuật toán về xử lý ảnh, định kích cỡ camera và các chức năng hình
CVCAM chứa các giao diện cho video truy cập trên nền Windows 32 bits.
Các chức năng của OpenCV tập trung vào thu thập ảnh, xử lí ảnh và các thuật toánphân tích dữ liệu ảnh, bao gồm:
- Truy xuất ảnh và phim: Đọc ảnh số từ camera, từ file, ghi ảnh và phim
- Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: Ma trận, vector, chuỗi
- Xử lí ảnh căn bản: Các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu,phóng to thu nhỏ và hiệu chỉnh histograms
Trang 11- Xử lí cấu trúc: Tìm viền, nhận chuyển động, thay đổi trong không gian 3D,đối chiếu bản mẫu, xấp xỉ các đơn vị hình học cơ sở, mặt phẳng, đa giác,ellipse, đường thẳng
- Phân tích dữ liệu ảnh: Nhận dạng thực thể, theo dõi các chi tiết và phân tíchchuyển động
- Tạo giao diện đơn giản: Hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt
để chỉnh thông số
- Chức năng vẽ, chú thích lên ảnh
1.5 Cài đặt OpenCV cho Visual Studio 2013
Để cài đặt OpenCV3.0 cho visual studio 2013 ta cần làm các bước sau:
Bước 1: Cài đặt biến môi trường của Windows
- Nhấp trỏ phải vào “Mycomputer” chọn “ Properties” Với windows 7 của sổhiện ra như sau:
Hình 2-3: Cửa sổ thông tin về hệ thống của Windows
- Nhấp chọn “Advanced system settings” Cửa sổ cài đặt hiện ra, ta chọn thẻ
“Advanced”
Trang 12Hình 2-4: Cửa sổ thuộc tính của hệ thống
- Nhấp chọn nút “Environment Variables…” Sau đó nhấp chọn nút New trongUser variables và đặt như sau:
variable name: OPENCV_DIRvalue: C:\OpenCV\build\x86\vc12
- Chọn Path trong System variables, nhấp chọn nút Edit thêm vào
%OPENCV_DIR%\bin vào variable value
Bước 2: Thêm thư viện OpenCV vào visual sutido 2013
- Trong mục additional include directories thêm vào $(OPENCV_DIR)\ \ \include
- Chọn Linker >> General, trong mục additional libbrary directories thêmvào $(OPENCV_DIR)\Lib
Trang 13- Chọn Linker >> Input, trong mục Edit Additional Dependencies thêm vàoOpenCV_ts300d.lib; OpenCV_world300d.lib.
Trang 14CHƯƠNG 3 GIỚI THIỆU VỀ XỬ LÝ ẢNH
1.6 Ảnh số
Ảnh số là tập hợp hữu hạn các điểm ảnh có mức xám phù hợp dùng để mô tả ảnhgần với ảnh thật Số điểm ảnh sẽ xác định được độ phân giải của ảnh Ảnh có độphân giải cao thì ảnh trở nên thực và sắc nét hơn
1.1.1 Điểm ảnh (Picture Element)
Hình ảnh là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính, ảnh cầnphả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ộttập hợp điểm phù hợp với ảnh thật về không gian và mức xám Khoảng cách giữacác điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giớigiữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọitắt là Pixel Trong ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y) có độ xám haymàu nhất định
1.1.2 Độ phân giải của ảnh
Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh trên một ảnh số được hiểnthị, khoảng cách giữa các điểm ảnh là một khoảng thích hợp mà mắt người vẫn thấyđược sự liên tục của ảnh Khoảng cách đó tạo nên độ phân giải, nó phân bố theotrục x và y trong không gian hai chiều
Trang 15Nế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 là một số nguyên nằm trong khoảng từ 0 đến 255, trong
đó mức 0 là mức cường độ đen nhất và 255 là mức cường độ sáng nhất
1.1.5 Ảnh nhị phân
Ảnh chỉ có 2 mức đen trắng phân biệt, mỗi điểm ảnh được biểu diễn chỉ là mức 0hoặc mức 1 Ả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 ảnhvới nền hay để phân biệt điểm biên với điểm khác
1.1.6 Ảnh màu
Ảnh màu theo lý thuyết của Thomas là ảnh tổ hợp từ 3 màu cơ bản: đỏ (R), lục (G),lam (B) và thường thu nhận trên các dải băng tần khác nhau Để biểu diễn cho mộtđiểm ảnh màu cần 24 bit, 24 bit này được chia thành ba khoảng 8 bit Mỗi màu cũngphân thành L cấp màu khác nhau Mỗi khoảng này biểu diễn cho cường độ sáng củamột trong các màu chính
Không gian màu
Không gian màu là một mô hình toán học dùng để mô tả các màu sắc trong thực tếđược biểu diễn dưới dạng số học Có ba không gian màu cơ bản là: RGB, HSV vàCMYK Trong đề tài này ta chỉ xét tới không gian màu RGB và HSV
Không gian màu RGB
RGB là không gian màu rất phổ biến được dùng trong đồ họa máy tính và nhiềuthiết bị kĩ thuật số khác.không gian màu này là sự kết hợp giữa ba màu cơ bản màu
đỏ (R), lục (G) và lam (B) để mô tả tất cả các màu sắc khác
Nếu như một ảnh số được mã hóa bằng 24bit, nghĩa là 8 bit cho kênh R, 8 bit chokênh G, 8 bit cho kênh B, thì mỗi kênh này màu này sẽ nhận giá trị từ 0 - 255 Vớimỗi giá trị khác nhau của các kênh màu kết hợp với nhau ta sẽ được một màu khácnhau, như vậy ta sẽ có tổng cộng 255 x 255 x 255 = 1.66 triệu màu sắc
Ví dụ: Màu đen là sự kết hợp của các kênh màu (R, G, B) với giá trị tương ứng (0,
0, 0) màu trắng có giá trị (255,255, 255), màu vàng có giá trị (255, 255, 0), màu tím
Trang 16Hình 3-1: không gian màu RGB [3]
Không gian màu HSV
HSV là không gian màu được dùng nhiều trong việc chỉnh sửa ảnh, phân tích ảnh vàmột phần của lĩnh vực thị giác máy tính Hệ không gian này dựa vào 3 thông số:
- H (Hue): Màu sắc
- S (Saturation): độ đậm đặc, sự bảo hòa
- V (value): giá trị cường độ sáng
Không gian màu này thường được biểu diễn dưới dạng hình trụ hoặc hình nón.Vòng tròn từ 0 -360 độ là trường biểu diễn màu sắc (Hue), bắt đầu từ màu đỏ (redprimary) tới màu xanh lục (green primary) nằm trong khoảng 0-120 độ, từ 120 - 240
độ là màu xanh lục tới lam (green primary - blue primary) Từ 240 - 360 là từ màuđen tới lại màu đỏ
Hình 3-2: Không gian màu HSV [4]
Chuyển đổi RGB sang HSV và ngược lại
Giả sử ta có một điểm màu có giá trị trong hệ RGB là (R, G, B) ta chuyển sangkhông gian HSV như sau:
Đặt M = Max(R, G, B), m = Min(R, G, B) và C = M - m
Nếu M = R, H' = (G - B)/C mod 6
Trang 17cv::cvtColor(cv::InputArray src, cv::OutputArray dst, int code)
Trong đó, src, dst là ảnh gốc và ảnh thu được sau khi chuyển đổi không gian màu,code là mã chuyển đổi không gian màu Trong đề tài này ta sẽ chuyển không gianmàu RGB sang không gian màu HSV
Hình 3-3: Hình ảnh khi chuyển đổi các không gian màu [5]
1.8 Các giai đoạn xử lý ảnh
Xử lý ảnh là một phân ngành trong xử lý số tín hiệu với tín hiệu xử lý là ảnh Xử lýảnh gồm bốn lĩnh vực chính là xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén
Trang 18sống như: photoshop, nén ảnh, nén video, nhận dạng biển số xe, nhận dạng khuônmặt, nhận dạng chữ viết, xử lý ảnh thiên văn, ảnh y tế,
Hình 3-4: Các bước cơ bản trong xử lý ảnh [6]
1.1.7 Phần thu nhận ảnh (Image Acquisition)
Ảnh được nhận qua camera màu hoặc đen trắng Thường ảnh nhận qua camera làảnh tương tự, cũng có loại camera đã số hoá là loại photodiot tạo cường độ sáng tạimỗi điểm ảnh Chất lượng một ảnh nhận được phụ thuộc vào thiết bị thu và môitrường
1.1.8 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õ nét hơn
1.1.9 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ễnphân tích, nhận dạng ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào côngđoạn này
1.1.10 Biểu diễn ảnh (Image Representation)
Ảnh sau khi phân vùng chứa các điểm ảnh và mã liên kết với các vùng lận cận Cầnphải biến đổi các số liệu này thành dạng thích hợp cho các bước sử lý tiếp theo
Trang 19Nhận dạng ảnh là quá trình so sánh ảnh với mẫu chuẩn đã được lưu từ trước Nộisuy là phán đoán theo ý nghĩa trên cơ sở nhận dạng Có 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
1.1.12 Cơ sở tri thức (Knowledge Base)
Trong nhiều khâu xử lý và phân tích ảnh ngoài nhiều khâu hiện nay đã xử lý theocác phương pháp trí tuệ con người Đó là kết quả của việc áp dụng cơ cơ sở trithức
1.1.13 Mô tả
Ảnh sau khi số hoá sẽ được lưu vào bộ nhớ, hoặc chuyển sang các khâu tiếp theo đểphân tích Ảnh được lưu trữ được mô tả lại theo các đặc trưng như: biên ảnh(Boundary), vùng ảnh (Region) Một số phương pháp biểu diễn thường dùng:
- Biểu diễn bằng mã chạy (Run-Length Code)
- Biểu diễn bằng mã xích (Chaine -Code)
- Biểu diễn bằng mã tứ phân (Quad-Tree Code)
Hình 3-5: Sơ đồ phân tích và xử lý ảnh [7]
Trong thực tế, các quá trình sử dụng ảnh số không nhất thiết phải qua hết các khâu
đó tùy theo đặc điểm ứng dụng Ở hình trên ảnh sau khi được số hóa được nén, lưu
Trang 20sau khi số hóa có thể bỏ qua công đoạn nâng cao chất lượng chuyển tới khâu phânđoạn hoặc bỏ tiếp khâu phân đoạn chuyển trực tiếp tới khâu trích chọn đặc trưng.
CHƯƠNG 4 CHƯƠNG TRÌNH MÔ PHỎNG NHẬN DIỆN MÀU SẮC
1.9 Chương trình giải thuật
Hình 4-1: Chương trình giải thuật
Dựa vào chương trình giải thuật có thể hiểu chương trình mô phỏng nhận diện màu
Trang 21- Bắt đầu chương trình camera hoạt động
- Các khung ảnh theo dõi sẽ được bật lên
- Sau đó khung ảnh không gian màu RGB được chuyển thành khônggian màu HSV
- Chương trình bắt đầu tìm kiếm vật thể
- Nếu vật thể được tìm thấy thì sẽ được gán giá trị màu HSV nhỏ nhất
và HSV lớn nhất, giá trị này được vẽ lên vật thể cùng màu với màucủa vật thể Đồng thời vật thể sẽ được gán tên màu
- Nếu như có quá nhiều vật thể, vì số vật thể tối đa là 50 nếu vượt quámúc này thì sẽ không xac định được vật thể, khung hình sẽ được gánchữ TOO MUCH NOISE!
1.10 Các phép toán hình thái học
Các phép toán hình thái học là những phép toán liên quan tới cấu trúc hình học củacác đối tượng trong ảnh Các phép toán hình thái học tiêu biểu bao gồm phép giãn
nở (dialation) phép co (erosion), phép mở (opening) và phép đóng (closing) Trong
đề tài này ta chỉ xét phép giãn nở và phép co
Trong OpenCV, các phép toán hình thái học trong ảnh được cài đặt trong hàm
cv::morphologyEx, riêng phép giãn nở và phép co có thể gọi trực tiếp từ hàmcv::dilate và cv::erode:
morphologyEx(const Mat& src, Mat& dst, int op, const Mat& element, Pointanchor, int iterations, int borderType, const Scalar& borderValue)
với src, dst là ảnh đầu vào và ảnh sau phép xử lý hình thái học, op là kiểu lựa chọnphép hình thái học, element là cấu trúc phần tử ảnh
Cấu trúc phần tử ảnh được gán trong hàm:
getStructuringElement(int shape, Size ksize, Point anchor)Với shape là kiểu hình khối, ksize là kích thước của hình khối và là khích thước củahai số nguyên lẻ, anchor là điểm neo
Xử lý video
Trang 22Để đọc video từ một file video hoặc một thiết bị webcam, camera ta dùng hàmcv::VideoCapture Để lấy ra được các frame ảnh trong video, ta dùng hàmread(cv::Mat& img)
1.11 Kết quả mô phỏng
Hình 4-2: Tạo các thanh trượt trên cửa sổ Tracbars
Trang 23Hình 4-4: Hình ảnh chuyển sang không gian màu HSV
Trang 24Hình 4-5: Kết quả xác định màu của vật thể
Trang 25CHƯƠNG 5 NHẬN XÉT
1.12 Ưu điểm
Khả năng đọc màu, quan sát phát hiện tối tượng nhanh, các thông số tính toán hinểthị rõ ràng có thể phát triển trên cơ sở phân biệt màu sắc, hình dạng của đối tượngqua camera
1.13 Nhược điểm
Nhược điểm của đề tài là sử dụng máy tính nên tốn một khoảng không gian cầnthiết Do vùng màu xanh đặt giá trị chưa chính xác nên xảy ra tình trạng nhiễu màu.Màu đỏ và vàng được xác định chính xác hơn màu xanh lá và xanh lục
Đề tài chỉ mới mang tính minh họa cho hướng ứng dụng xử lý ảnh số trong sản xuất
và đời sống
1.14 Hướng phát triển
Đề tài cần được cải tiến cho quét vật thể trong một diện tích rộng hơn, xây dựng các
mô hình thực, phân tích và loại bỏ nhiễu ánh sáng bên ngoài, xử dụng các chip côngnghệ ASIC, FPGA, vi xử lý, vi điều khiển thay thế cho máy vi tính để phù hợp vớiyêu cầu thực tế trong các dây chuyền sản xuất trong của nhà máy xí nghiệp Ví dụnhư: phân loại gạch chính, phế phẩm và kiểm tra lỗi Ngoài ra chương trình có thểứng dụng trên các dây chuyền khác như: Phân loại gạo, cà chua, tiêu, lò nướngbánh mì, tôm…Hệ thống dễ vận hành và sửa chữa dễ dàng mà không cần đến trình
độ chuyên gia Với công nghệ tự động, khả năng giám sát giải quyết bài toán thủcông hiện nay
TÀI LIỆU THAM KHẢO