MÔ PHỎNG NHẬN DIỆN màu sắc dùng matlab (có code) .................. MÔ PHỎNG NHẬN DIỆN màu sắc dùng matlab (có code) .................. MÔ PHỎNG NHẬN DIỆN màu sắc dùng matlab (có code) .................. MÔ PHỎNG NHẬN DIỆN màu sắc dùng matlab (có code) ..................
MÔ PHỎNG NHẬN DIỆN MÀU SẮC MỤC LỤC DANH MỤC CÁC HÌNH VẼ Trang 3/17 CHƯƠNG TỔNG QUAN VỀ CHƯƠNG TRÌNH MƠ PHỎNG NHẬN DIỆN MÀU SẮC 1.1 Giới thiệu chung Nhận dạng màu sắc dùng matlab chương trình giúp người dùng phân biệt màu như: đỏ, xanh xanh dương với màu khác, phần mềm matlab hệ màu RGB Khi khởi động chương trình matlab phần mềm cửa sổ, cửa số nhận video trực tuyế từ camera, người dùng đưa vật thể có màu sắc có màu đỏ, xanh lá, xanh dương phần mềm thông báo cho người dung biết màu sắc nhận dạng 1.2 u cầu chương trình mơ nhận diện màu sắc • Tìm hiểu ảnh số • Tìm hiểu thư viện xử lý ảnh Digital Image Processing Matlab • Tìm hiểu dãy thuật nhận dạng màu sắc Matlab, thư viện Digital Image Processing Matlab • Viết phần mềm mơ nhận diện màu sắc vật thể từ cacmera Matlab 1.3 Tổng quan xử lý ảnh 1.1.1 Khái niện xử lý ảnh Xử lý ảnh phần khoa học công nghệ Xử lý ảnh ngành khoa học mẻ so với ngành khoa học khác tốc độ phát triển xử lý ảnh vượt bậc, nhiều trung tâm nghiên cứu, ứng dụng, thuộc lĩnh vực máy tính chuyên dụng riêng cho xử lý ảnh Xử lý ảnh chương trình liên quan đến nhiều lĩnh vực, cần nhiều kiến thức sở khác nên người nghiên cứu xử lý ảnh cần phải trang bị khiến thức như: xử lý tín hiệu chung, biến đổi Fourier, biến đổi Laplace, khái niệm tích chập ngồi phép biến đổi MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 4/17 có mạng nơ rong nhân tạo để hỗ trợ cho q trình phân tích nhận dạng Nhận ảnh từ Tiền xử lý Chọn điểm bên ảnh ảnh Hệ thống định Hậu xử lý Xuất kết ảnh kết luận Lưu trữ Hình 1-1: Sơ đồ bước xử lý ành 1.4 Những vấn đề hệ thống xừ lý ảnh 1.1.2 Khái niệm ảnh số Ảnh số tập hợp hữu hạn nhiều phần tử điểm ảnh với mức xám phù hợp để tạo nên ảnh gần giống với ảnh thật Số điểm ảnh thành phần xác định độ phân giải ảnh Ảnh có độ phân giải cao thể rõ nét trở nên thực tế sắc nét 1.1.1.1 Điểm ảnh (Picture Element) Một Pixel hay gọi điểm ảnh phần tử ảnh số có toạ độ (x, y) với mức độ xám màu định Mỗi phần tử ma trận gọi phần tử ảnh 1.1.1.2 Độ phân giải Độ phân giải ảnh lượng thông tin chứa tập tin ảnh kỹ thuật số hiển thị thiết bị in ra, thông thường đo pixel Sao cho mắt người nhìn thấy ảnh cách liên tục, độ phân giải ảnh phân bố theo hay chiều x y không gian - 1.1.3 Phân loại ảnh Ảnh màu: gồm loại + Hệ màu RGB: gồm màu Red, Green, Blue biễu diễn byte Ảnh RGB thường có giá trị 24bit P(x,y) = (R,G,B) + Hệ màu CMY: hệ màu bù cho hệ màu RGB MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 5/17 CMY = (1, 1, 1) – (R, G, B) - Ảnh nhị phân: giá trị xám ảnh biểu diễn giá trị Mỗi điểm ảnh biểu diễn bit - Ảnh xám: ảnh xám có giá trị nằm khoảng từ [0, 255] pixel ảnh xám biểu diễn byte CHƯƠNG NỘI DUNG ĐỀ TÀI MÔ PHỎNG NHẬN DIỆN MÀU SẮC 1.5 Sơ đồ khối Input video từ camera MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 6/17 Nhận vật có màu sắc Nhị phân hóa Đỏ, xanh, xanh dương Xuất kết Hình 2-1: Sơ đồ giải thuật 1.6 Phương pháp nhận diện Phương pháp chia thành bốn phần: • Input từ camera • Nhận dạng vật có màu sắc từ camera • Nhị phân hóa hình ảnh • Xuất kết 1.1.4 Input video từ camera Video input vào từ camera kỹ thuật số Các vật có màu sắc đưa vào camera MƠ PHỎNG NHẬN DIỆN MÀU SẮC Trang 7/17 Bước tiền xử lý dùng để làm tăng tốc độ xử lý của video làm tăng độ tương phản giảm nhiễu video 1.1.5 Nhận vật có màu sắc Camera nhận vật người dùng đưa vào Chương trình bắt đầu phân tích với dãy thuật lả dùng ảnh xám trừ ảnh gốc trừ vùng có màu đỏ, xanh lá, xanh dương 1.1.6 Nhị phân hóa Các hình ảnh video lọc lọc để tạo hình ảnh cách tính tốn mức ngưỡng Tìm giá trị nhỏ lớn pixel từ video Quá trình chuyển tất pixel video sang dạng 0-1 làm cho bước xử lý sau dễ dàng Khi màu đỏ, xanh lá, xanh dương ráng giá trị mức Còn lại tất màu khác mức Chương tình xuất giá trị mức phân tích hình 1.1.7 Xuất kết Nhận dạng cho kết vật có màu sắc như: đỏ, xanh xanh dương từ vật mang màu sắc MƠ PHỎNG NHẬN DIỆN MÀU SẮC Trang 8/17 CHƯƠNG MÔ PHỎNG VÀ KẾT QUẢ MƠ PHỎNG 1.7 Giao diện chương trình Hình 3-1: Giao diện chương trình Matlab 1.8 Input video từ camera MƠ PHỎNG NHẬN DIỆN MÀU SẮC Trang 9/17 Hình 3-2: Camera input 1.9 Các vật đưa vào camera để nhận diện Hình 3-3: Các vật có màu sắc đưa vào cho camera nhận diện 1.10 Kết mơ MƠ PHỎNG NHẬN DIỆN MÀU SẮC Trang 10/17 Hình 3-4: Các màu sắc nhận diện CHƯƠNG KẾT LUẬN 1.11 Ưu điểm • Chương trình Matlab có giao diện đơn giản giúp người dùng thao tác cách dễ dàng giao diện chương trình • Chương trình mơ nhận diện màu sắc Matlab xử lý nhanh chóng xuất kết • Màu sắc nhận diện theo yêu cầu đề 1.12 Nhược điểm • Do sử dụng camera nên khoảng cách nhận diện có giới hạn • Phụ thuộc vào điều kiện mơi trường ánh sáng • Chỉ nhận diện màu RGB MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 11/17 TÀI LIỆU THAM KHẢO [1] Lương Mạnh Bá, Nguyễn Thanh Thuỷ Nhập môn xử lý ảnh số Nhà xuất Nhà xuất Khoa học Kỹ thuật, 2003 [2] Nguyễn Kim Sách Xử lý ảnh Video số Nhà xuất Khoa học Kỹ thuật, 1997 [3] Võ Đức Khánh, Hoàng Văn Kiếm Giáo trình xử lý ảnh số Nhà xuất Đại học Quốc gia Thành phố Hồ Chi Minh MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 12/17 PHỤ LỤC A redThresh = 0.24; greenThresh = 0.05; blueThresh = 0.15; vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', 'ROI', [1 640 480], 'ReturnedColorSpace', 'rgb'); vidInfo = imaqhwinfo(vidDevice); hblob = vision.BlobAnalysis('AreaOutputPort', false, 'CentroidOutputPort', true, 'BoundingBoxOutputPort', true', 'MinimumBlobArea', 600, 'MaximumBlobArea', 3000, 'MaximumCount', 10); hshapeinsRedBox = vision.ShapeInserter('BorderColor', 'Custom', 'CustomBorderColor', [1 0], 'Fill', true, 'FillColor', 'Custom', 'CustomFillColor', [1 0], 'Opacity', 0.4); hshapeinsGreenBox = vision.ShapeInserter('BorderColor', 'Custom', % Set Green box handling 'CustomBorderColor', [0 0], 'Fill', true, 'FillColor', 'Custom', 'CustomFillColor', [0 0], 'Opacity', 0.4); hshapeinsBlueBox = vision.ShapeInserter('BorderColor', 'Custom', % Set Blue box handling 'CustomBorderColor', [0 1], 'Fill', true, 'FillColor', 'Custom', 'CustomFillColor', [0 1], 'Opacity', 0.4); htextinsRed = vision.TextInserter('Text', 'Red : %2d', % Set text for number of blobs 'Location', [5 2], 'Color', [1 0], // red color 'Font', 'Courier New', 'FontSize', 14); htextinsGreen = vision.TextInserter('Text', 'Green : %2d', % Set text for number of blobs 'Location', [5 18], 'Color', [0 0], // green color 'Font', 'Courier New', 'FontSize', 14); htextinsBlue = vision.TextInserter('Text', 'Blue : %2d', % Set text for number of blobs 'Location', [5 34], 'Color', [0 1], 'Font', 'Courier New', 'FontSize', 14); htextinsCent = vision.TextInserter('Text', '+ X:%4d, Y:%4d', 'LocationSource', 'Input port', MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 13/17 'Color', [1 0], 'Font', 'Courier New', 'FontSize', 14); hVideoIn = vision.VideoPlayer('Name', 'Final Video', 'Position', [100 100 vidInfo.MaxWidth+20 vidInfo.MaxHeight+30]); nFrame = 0; %% Processing Loop while(nFrame < 300) rgbFrame = step(vidDevice); rgbFrame = flipdim(rgbFrame,2); diffFrameRed = imsubtract(rgbFrame(:,:,1), rgb2gray(rgbFrame)); diffFrameRed = medfilt2(diffFrameRed, [3 3]); binFrameRed = im2bw(diffFrameRed, redThresh); diffFrameGreen = imsubtract(rgbFrame(:,:,2), rgb2gray(rgbFrame)); diffFrameGreen = medfilt2(diffFrameGreen, [3 3]); binFrameGreen = im2bw(diffFrameGreen, greenThreshdiffFrameBlue = imsubtract(rgbFrame(:,:,3), rgb2gray(rgbFramediffFrameBlue = medfilt2(diffFrameBlue, [3 3]); binFrameBlue = im2bw(diffFrameBlue, blueThresh); [centroidRed, bboxRed] = step(hblob, binFrameRed); centroidRed = uint16(centroidRed); [centroidGreen, bboxGreen] = step(hblob, binFrameGreen); centroidGreen = uint16(centroidGreen); [centroidBlue, bboxBlue] = step(hblob, binFrameBlue); centroidBlue = uint16(centroidBlue); rgbFrame(1:50,1:90,:) = 0; vidIn = step(hshapeinsRedBox, rgbFrame, bboxRed); vidIn = step(hshapeinsGreenBox, vidIn, bboxGreen); vidIn = step(hshapeinsBlueBox, vidIn, bboxBlue); for object = 1:1:length(bboxRed(:,1)) centXRed = centroidRed(object,1); centYRed = centroidRed(object,2); vidIn = step(htextinsCent, vidIn, [centXRed centYRed], [centXRed-6 centYRed-9]); end for object = 1:1:length(bboxGreen(:,1)) centXGreen = centroidGreen(object,1); centYGreen = centroidGreen(object,2); vidIn = step(htextinsCent, vidIn, [centXGreen centYGreen], [centXGreen-6 centYGreen-9]); end for object = 1:1:length(bboxBlue(:,1centXBlue = centroidBlue(object,1); centYBlue = centroidBlue(object,2); vidIn = step(htextinsCent, vidIn, [centXBlue centYBlue], [centXBlue-6 centYBlue-9]); end vidIn = step(htextinsRed, vidIn, uint8(length(bboxRed(:,1)))); vidIn = step(htextinsGreen, vidIn, uint8(length(bboxGreen(:,1 vidIn = step(htextinsBlue, vidIn, uint8(length(bboxBlue(:,1)))); step(hVideoIn, vidIn); nFrame = nFrame+1; end %% Clearing Memory release(hVideoIn); release(vidDevice); clear all; clc; MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 14/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 15/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 16/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 17/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 18/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC ... all; clc; MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 14/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 15/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 16/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 17/17 MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang... mang màu sắc MÔ PHỎNG NHẬN DIỆN MÀU SẮC Trang 8/17 CHƯƠNG MÔ PHỎNG VÀ KẾT QUẢ MÔ PHỎNG 1.7 Giao diện chương trình Hình 3-1: Giao diện chương trình Matlab 1.8 Input video từ camera MÔ PHỎNG NHẬN DIỆN... TRÌNH MƠ PHỎNG NHẬN DIỆN MÀU SẮC 1.1 Giới thiệu chung Nhận dạng màu sắc dùng matlab chương trình giúp người dùng phân biệt màu như: đỏ, xanh xanh dương với màu khác, phần mềm matlab hệ màu RGB