Báo cáo Hệ cơ sở dữ liệu đa phương tiện
Quá trình xử lý ảnh
● Thu nhận ảnh:
Đặc điểm của kho ảnh:
- Có bao nhiêu ảnh? 100
- 15 loại hoa, chia vào 15 folder khác nhau.
- Mỗi ảnh chỉ có 1 bông hoa.
- Kích thước bao nhiêu?
- Tại sao lấy kích thước này?
- Mỗi loại hoa thì có nhiều hình dạng và màu sắc khác nhau, có
ảnh chụp gần và ảnh chụp xa, mỗi loại có nhiều màu sắc.
● Tiền xử lý
-resize ảnh (64x64) , đổi đuôi về jpg
❖ Lọc trung bình - Median Filter
● Ý tưởng
- Với lọc trung bình, mỗi điểm ảnh (Pixel) được thay thế bằng trung
bình trọng số của các điểm trong vùng lân cận.- Giả sử rằng có 1 ma trận lọc (Kernel) (3x3) quét qua từng điểm ảnh
của ảnh đầu vào Isrc. Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm
ảnh tương ứng trong vùng (3x3) của ảnh gốc đặt vào ma trận lọc
(Kernel). Giá trị điểm ảnh của ảnh đầu ra Idst là giá trị trung bình
của tất cả các điểm trong ảnh trong ma trận lọc (Kernel).
● Thuật toán
- 1 ảnh đầu vào với I(x,y) là giá trị điểm ảnh tại 1 điểm (x,y) và
1 ngưỡng θ.
● Bước 1: Tính tổng các thành phần trong ma trận lọc
(Kernel).
● Bước 2: Chia lấy trung bình của tổng các thành phần trong
ma trận được tính ở trên với số lượng các phần tử của cửa
sổ lọc ra 1 giá trị Itb(x, y).
● Bước 3: Hiệu chỉnh:
o Nếu I(x,y) - Itb(x,y) > θ thì I(x,y) = Itb(x,y).
o Nếu I(x,y) - Itb(x,y) <= θ thì I(x,y) = I(x,y).
● Chú ý
- θ là 1 giá trị cho trước và có thể có hoặc không tùy thuộc vào
mục đích.
● Tác dụng
- Trong lọc trung bình, thường ưu tiên cho các hướng để
bảo vệ biên của ảnh khỏi bị mờ khi làm trơn ảnh. Các kiểu
ma trận lọc (Kernel) được sử dụng tùy theo các trường
hợp khác nhau. Các bộ lọc trên là bộ lọc tuyến tính theo
nghĩa là điểm ảnh ở tâm cửa sổ sẽ được thay bởi tổ hợp
các điểm lân cận chập với ma trận lọc (Kernel).
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 1 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 1](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-1_dlgTESdOnA.jpg)
Trang 1
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 2 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 2](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-2_rLW6OeFHJb.jpg)
Trang 2
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 3 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 3](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-3_4ShGsQMyaG.jpg)
Trang 3
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 4 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 4](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-4_pNn1x1tVvl.jpg)
Trang 4
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 5 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 5](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-5_RaNHaeyOoz.jpg)
Trang 5
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 6 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 6](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-6_EuYjBR4IqO.jpg)
Trang 6
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 7 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 7](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-7_e3XGeJ89hP.jpg)
Trang 7
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 8 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 8](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-8_FFcYuv1b53.jpg)
Trang 8
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 9 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 9](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-9_1eNLxw16E8.jpg)
Trang 9
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 10 Báo cáo Hệ cơ sở dữ liệu đa phương tiện trang 10](https://s1.ebooks.com.vn/yetwygzggocsqsc5/image/2022/01/09/4576/bao-cao-he-co-so-du-lieu-da-phuong-tien-trang-10_glOx4Vq8jL.jpg)
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Báo cáo Hệ cơ sở dữ liệu đa phương tiện
![Báo cáo Hệ cơ sở dữ liệu đa phương tiện Báo cáo Hệ cơ sở dữ liệu đa phương tiện](https://s1.ebooks.com.vn/yetwygzggocsqsc5/thumb/2022/01/09/bao-cao-he-co-so-du-lieu-da-phuong-tien_LTMBU5WVVI.jpg)
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN HỆ CƠ SỞ DỮ LIỆU ĐA PHƯƠNG TIỆN THÀNH VIÊN NHÓM 08 HỌ VÀ TÊN : Nguyễn Như Tuấn MSV : B17DCCN659 HỌ VÀ TÊN : Nguyễn Thị Dung MSV : B17DCCN155 HỌ VÀ TÊN : Phạm Quốc Đạt MSV : B17DCCN118 GIẢNG VIÊN HƯỚNG DẪN: TS. Nguyễn Đình Hóa Mục Lục Câu 1: Đặc điểm của kho ảnh: 4 Câu 2: Kỹ thuật xử lý và phân loại ảnh hoa đang hiện hành 5 I. Kĩ thuật xử lý ảnh 5 1.Quá trình xử lý ảnh 5 Lọc trung bình - Median Filter 5 2.Đặc trưng của ảnh 6 3.Ảnh và biểu diễn ảnh: 6 II. Các phương pháp xử lý ảnh hiện nay 7 III. Kỹ thuật phân loại ảnh 8 1.Tìm hiểu về SVM 8 2.Tìm Hiểu về KNN 16 IV. Phương pháp rút trích đặc trưng hình ảnh HOG 18 Câu 3. Xây dựng hệ thống 23 V. Xây dựng hệ thống 23 1. Sơ đồ khối 23 2. Quá trình thực hiện 23 1. Bước 1: Tiền xử lý 23 2. Bước 2: Trích rút đặc trưng 24 3.Bước 3: Huấn luyện mô hình (Phân loại ảnh) 29 4. Bước 4: Nhận dạng ảnh 32 4.1 Kết quả train và test: 32 4.2 Kết quả tìm kiếm hình ảnh từ 1 hình ảnh: 32 4.3 Code 32 Yêu Cầu 1. Hãy sưu tầm ít nhất 100 bức ảnh về ít nhất 15 loại hoa khác nhau mỗi ảnh chỉ gồm 1 bông hoa, các bức ảnh đều có cùng kích thước. 2. Tìm hiểu các kỹ thuật xử lý và phân loại ảnh hoa đang hiện hành 3. Xây dựng hệ thống nhận dạng ảnh hoa - Đầu vào: 1 bông hoa thuộc loại hoa đã có và chưa có. - Đầu ra: nhãn của hoa a. Sơ đồ khối Quy trình thực hiện b. Trình bày thuộc tính được sử dụng để nhận dạng nhãn và Kỹ thuật để trích rút các thuộc tính đó c. Cách lưu trữ các thuộc tính ảnh hoa Các nhận dạng ảnh hoa dựa trên các thuộc tính đó 4. Demo và đánh giá kq đạt dc Câu 1: Đặc điểm của kho ảnh: - Có khoảng 200 ảnh - 15 loại hoa, chia vào 15 folder khác nhau. - Mỗi ảnh chỉ có 1 bông hoa. - Kích thước 64*64 - Mỗi loại hoa thì có nhiều hình dạng và màu sắc khác nhau, có ảnh chụp gần và ảnh chụp xa, mỗi loại có nhiều màu sắc. Câu 2: Kỹ thuật xử lý và phân loại ảnh hoa đang hiện hành I. Kĩ thuật xử lý ảnh 1. Quá trình xử lý ảnh ● Thu nhận ảnh: Đặc điểm của kho ảnh: - Có bao nhiêu ảnh? 100 - 15 loại hoa, chia vào 15 folder khác nhau. - Mỗi ảnh chỉ có 1 bông hoa. - Kích thước bao nhiêu? - Tại sao lấy kích thước này? - Mỗi loại hoa thì có nhiều hình dạng và màu sắc khác nhau, có ảnh chụp gần và ảnh chụp xa, mỗi loại có nhiều màu sắc. ● Tiền xử lý -resize ảnh (64x64) , đổi đuôi về jpg ❖ Lọc trung bình - Median Filter ● Ý tưởng - Với lọc trung bình, mỗi điểm ảnh (Pixel) được thay thế bằng trung bình trọng số của các điểm trong vùng lân cận. - Giả sử rằng có 1 ma trận lọc (Kernel) (3x3) quét qua từng điểm ảnh của ảnh đầu vào Isrc. Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong vùng (3x3) của ảnh gốc đặt vào ma trận lọc (Kernel). Giá trị điểm ảnh của ảnh đầu ra Idst là giá trị trung bình của tất cả các điểm trong ảnh trong ma trận lọc (Kernel). ● Thuật toán - 1 ảnh đầu vào với I(x,y) là giá trị điểm ảnh tại 1 điểm (x,y) và 1 ngưỡng θ. ● Bước 1: Tính tổng các thành phần trong ma trận lọc (Kernel). ● Bước 2: Chia lấy trung bình của tổng các thành phần trong ma trận được tính ở trên với số lượng các phần tử của cửa sổ lọc ra 1 giá trị Itb(x, y). ● Bước 3: Hiệu chỉnh: o Nếu I(x,y) - Itb(x,y) > θ thì I(x,y) = Itb(x,y). o Nếu I(x,y) - Itb(x,y) <= θ thì I(x,y) = I(x,y). ● Chú ý - θ là 1 giá trị cho trước và có thể có hoặc không tùy thuộc vào mục đích. ● Tác dụng - Trong lọc trung bình, thường ưu tiên cho các hướng để bảo vệ biên của ảnh khỏi bị mờ khi làm trơn ảnh. Các kiểu ma trận lọc (Kernel) được sử dụng tùy theo các trường hợp khác nhau. Các bộ lọc trên là bộ lọc tuyến tính theo nghĩa là điểm ảnh ở tâm cửa sổ sẽ được thay bởi tổ hợp các điểm lân cận chập với ma trận lọc (Kernel). 2.Đặc trưng của ảnh ● Đặc trưng màu sắc ● Đặc trưng kết cấu ● Đặc trưng hình dạng ● Đặc trưng cục bộ bất biến 3.Ảnh và biểu diễn ảnh: ● Ảnh trong thực tế là một ảnh liên tục cả về không gian và giá trị độ sáng. Để có thể xử lý ảnh bằng máy tính thì cần thiết phải tiến hành số hóa ảnh ● Quá trình số hóa biến đổi các tín hiệu liên tục sang tín hiệu rời rạc thông qua quá trình lấy mẫu (rời rạc hóa về không gian) và lượng tử hóa các thành phần giá trị mà về nguyên tắc bằng mắt thường không thể phân biệt được hai điểm liền kề nhau ● màn hình khụng liên tục mà gồm các điểm nhỏ, gọi là pixel. Mỗi pixel gồm một tập tọa độ (x, y) và màu. ● Ảnh có thể được biểu diễn theo một trong hai mô hình: mô hình Vector hoặc mô hình Raster o Mô hình Vector: Ngoài mục đích tiết kiệm không gian lưu trữ, dễ dàng hiển thị và in ấn, các ảnh biểu diễn theo mô hình vector cũng có điểm dễ dàng lựa chọn, sao cho, di chuyển, tìm kiếm o Mô hình Raster: Ảnh được biểu diễn dưới dạng ma trận các điểm ảnh ▪ mỗi điểm ảnh có thể được biểu diễn bởi một hay nhiều bit ▪ Mô hình Raster thuận lợi cho việc thu nhận, hiển thị và in ấn II. Các phương pháp xử lý ảnh hiện nay ● Nhiễu xạ không đẳng hướng: thường được gọi là khuếch tán Perona-Malik. Phương pháp nà ... hông gian dữ liệu lớp dương thỏa mãn Tiếp theo ta chọn hai siêu phẳng lề đi qua điểm thuộc lớp âm và đi qua điểm thuộc lớp dương đều song song với • : + b =-1 • : + b =1 Khoảng cách từ đến là Khoảng cách từ đến là m = + được gọi là mức lề Siêu phẳng tối ưu mà chúng ta cần chọn là siêu phẳng phân tách có lề lớn nhất. Lý thuyết học máy đã chỉ ra rằng một siêu phẳng như vậy sẽ cực tiểu hóa giới hạn lỗi mắc phải. 4. Bước 4: Nhận dạng ảnh 4.1 Kết quả train và test: 4.2 Kết quả tìm kiếm hình ảnh từ 1 hình ảnh: 4.3 Code Code.py import glob from cv2 import cv2 import numpy as np def create_images_array(load_img_paths): imgs = [] # dn win_size = (64, 64) block_size = (16, 16) block_stride = (4, 4) cell_size = (4, 4) bins = 9 # load anh for load_img_path in load_img_paths: img = cv2.imread(load_img_path) # loc trung binh img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) figure_size = 9 img = cv2.blur(img,(figure_size, figure_size)) # hog gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.resize(gray, win_size) hog = cv2.HOGDescriptor(win_size, block_size, block_stride, cell_size, bins) img = hog.compute(gray) imgs.append(img) return np.array(imgs, np.float32) def main(): # path anh train LOAD_TRAIN_IMG0S_PATH = 'train/0/*' LOAD_TRAIN_IMG1S_PATH = 'train/1/*' LOAD_TRAIN_IMG2S_PATH = 'train/2/*' LOAD_TRAIN_IMG3S_PATH = 'train/3/*' LOAD_TRAIN_IMG4S_PATH = 'train/4/*' LOAD_TRAIN_IMG5S_PATH = 'train/5/*' LOAD_TRAIN_IMG6S_PATH = 'train/6/*' LOAD_TRAIN_IMG7S_PATH = 'train/7/*' LOAD_TRAIN_IMG8S_PATH = 'train/8/*' LOAD_TRAIN_IMG9S_PATH = 'train/9/*' LOAD_TRAIN_IMG10S_PATH = 'train/10/*' LOAD_TRAIN_IMG11S_PATH = 'train/11/*' LOAD_TRAIN_IMG12S_PATH = 'train/12/*' LOAD_TRAIN_IMG13S_PATH = 'train/13/*' LOAD_TRAIN_IMG14S_PATH = 'train/14/*' # path luu du lieu SAVE_TRAINED_DATA_PATH = 'data/svm_trained_data.xml' # path anh test LOAD_TEST_IMG0S_PATH = 'test/0/*' LOAD_TEST_IMG1S_PATH = 'test/1/*' LOAD_TEST_IMG2S_PATH = 'test/2/*' LOAD_TEST_IMG3S_PATH = 'test/3/*' LOAD_TEST_IMG4S_PATH = 'test/4/*' LOAD_TEST_IMG5S_PATH = 'test/5/*' LOAD_TEST_IMG6S_PATH = 'test/6/*' LOAD_TEST_IMG7S_PATH = 'test/7/*' LOAD_TEST_IMG8S_PATH = 'test/8/*' LOAD_TEST_IMG9S_PATH = 'test/9/*' LOAD_TEST_IMG10S_PATH = 'test/10/*' LOAD_TEST_IMG11S_PATH = 'test/11/*' LOAD_TEST_IMG12S_PATH = 'test/12/*' LOAD_TEST_IMG13S_PATH = 'test/13/*' LOAD_TEST_IMG14S_PATH = 'test/14/*' # lay anh train load_img0_paths = glob.glob(LOAD_TRAIN_IMG0S_PATH) load_img1_paths = glob.glob(LOAD_TRAIN_IMG1S_PATH) load_img2_paths = glob.glob(LOAD_TRAIN_IMG2S_PATH) load_img3_paths = glob.glob(LOAD_TRAIN_IMG3S_PATH) load_img4_paths = glob.glob(LOAD_TRAIN_IMG4S_PATH) load_img5_paths = glob.glob(LOAD_TRAIN_IMG5S_PATH) load_img6_paths = glob.glob(LOAD_TRAIN_IMG6S_PATH) load_img7_paths = glob.glob(LOAD_TRAIN_IMG7S_PATH) load_img8_paths = glob.glob(LOAD_TRAIN_IMG8S_PATH) load_img9_paths = glob.glob(LOAD_TRAIN_IMG9S_PATH) load_img10_paths = glob.glob(LOAD_TRAIN_IMG10S_PATH) load_img11_paths = glob.glob(LOAD_TRAIN_IMG11S_PATH) load_img12_paths = glob.glob(LOAD_TRAIN_IMG12S_PATH) load_img13_paths = glob.glob(LOAD_TRAIN_IMG13S_PATH) load_img14_paths = glob.glob(LOAD_TRAIN_IMG14S_PATH) # load anh train imgs0 = create_images_array(load_img0_paths) imgs1 = create_images_array(load_img1_paths) imgs2 = create_images_array(load_img2_paths) imgs3 = create_images_array(load_img3_paths) imgs4 = create_images_array(load_img4_paths) imgs5 = create_images_array(load_img5_paths) imgs6 = create_images_array(load_img6_paths) imgs7 = create_images_array(load_img7_paths) imgs8 = create_images_array(load_img8_paths) imgs9 = create_images_array(load_img9_paths) imgs10 = create_images_array(load_img10_paths) imgs11 = create_images_array(load_img11_paths) imgs12 = create_images_array(load_img12_paths) imgs13 = create_images_array(load_img13_paths) imgs14 = create_images_array(load_img14_paths) imgs = np.r_[imgs0, imgs1, imgs2,imgs3,imgs4,imgs5,imgs6,imgs7,imgs8,imgs9,imgs10,imgs11, imgs12,imgs13,imgs14] # tao label labels0 = np.full(len(load_img0_paths), 0, np.int32) labels1 = np.full(len(load_img1_paths), 1, np.int32) labels2 = np.full(len(load_img2_paths), 2, np.int32) labels3 = np.full(len(load_img3_paths), 3, np.int32) labels4 = np.full(len(load_img4_paths), 4, np.int32) labels5 = np.full(len(load_img5_paths), 5, np.int32) labels6 = np.full(len(load_img6_paths), 6, np.int32) labels7 = np.full(len(load_img7_paths), 7, np.int32) labels8 = np.full(len(load_img8_paths), 8, np.int32) labels9 = np.full(len(load_img9_paths), 9, np.int32) labels10 = np.full(len(load_img10_paths), 10, np.int32) labels11 = np.full(len(load_img11_paths), 11, np.int32) labels12 = np.full(len(load_img12_paths), 12, np.int32) labels13 = np.full(len(load_img13_paths), 13, np.int32) labels14 = np.full(len(load_img14_paths), 14, np.int32) labels = np.array([np.r_[labels0, labels1, labels2,labels3,labels4,labels5,labels6,labels7,labels8,labels 9,labels10,labels11,labels12,labels13,labels14,]]) # train du lieu svm = cv2.ml.SVM_create() svm.setType(cv2.ml.SVM_C_SVC) svm.setKernel(cv2.ml.SVM_LINEAR) svm.setGamma(1) svm.setC(1) svm.setTermCriteria((cv2.TERM_CRITERIA_COUNT, 100, 1.e-06)) svm.train(imgs, cv2.ml.ROW_SAMPLE, labels) # luu du lieu svm.save(SAVE_TRAINED_DATA_PATH) # lay anh test test_img0_paths = glob.glob(LOAD_TEST_IMG0S_PATH) test_img1_paths = glob.glob(LOAD_TEST_IMG1S_PATH) test_img2_paths = glob.glob(LOAD_TEST_IMG2S_PATH) test_img3_paths = glob.glob(LOAD_TEST_IMG3S_PATH) test_img4_paths = glob.glob(LOAD_TEST_IMG4S_PATH) test_img5_paths = glob.glob(LOAD_TEST_IMG5S_PATH) test_img6_paths = glob.glob(LOAD_TEST_IMG6S_PATH) test_img7_paths = glob.glob(LOAD_TEST_IMG7S_PATH) test_img8_paths = glob.glob(LOAD_TEST_IMG8S_PATH) test_img9_paths = glob.glob(LOAD_TEST_IMG9S_PATH) test_img10_paths = glob.glob(LOAD_TEST_IMG10S_PATH) test_img11_paths = glob.glob(LOAD_TEST_IMG11S_PATH) test_img12_paths = glob.glob(LOAD_TEST_IMG12S_PATH) test_img13_paths = glob.glob(LOAD_TEST_IMG13S_PATH) test_img14_paths = glob.glob(LOAD_TEST_IMG14S_PATH) test_imgs0 = create_images_array(test_img0_paths) test_imgs1 = create_images_array(test_img1_paths) test_imgs2 = create_images_array(test_img2_paths) test_imgs3 = create_images_array(test_img3_paths) test_imgs4 = create_images_array(test_img4_paths) test_imgs5 = create_images_array(test_img5_paths) test_imgs6 = create_images_array(test_img6_paths) test_imgs7 = create_images_array(test_img7_paths) test_imgs8 = create_images_array(test_img8_paths) test_imgs9 = create_images_array(test_img9_paths) test_imgs10 = create_images_array(test_img10_paths) test_imgs11 = create_images_array(test_img11_paths) test_imgs12 = create_images_array(test_img12_paths) test_imgs13 = create_images_array(test_img13_paths) test_imgs14 = create_images_array(test_img14_paths) test_imgs = np.r_[test_imgs0, test_imgs1, test_imgs2, test_imgs3,test_imgs4,test_imgs5,test_imgs6,test_imgs7,test_im gs8,test_imgs9,test_imgs10,test_imgs11,test_imgs12,test_imgs13 ,test_imgs14] # chay test test_labels0 = np.full(len(test_img0_paths), 0, np.int32) test_labels1 = np.full(len(test_img1_paths), 1, np.int32) test_labels2 = np.full(len(test_img2_paths), 2, np.int32) test_labels3 = np.full(len(test_img3_paths), 3, np.int32) test_labels4 = np.full(len(test_img4_paths), 4, np.int32) test_labels5 = np.full(len(test_img5_paths), 5, np.int32) test_labels6 = np.full(len(test_img6_paths), 6, np.int32) test_labels7 = np.full(len(test_img7_paths), 7, np.int32) test_labels8 = np.full(len(test_img8_paths), 8, np.int32) test_labels9 = np.full(len(test_img9_paths), 9, np.int32) test_labels10 = np.full(len(test_img10_paths), 10, np.int32) test_labels11 = np.full(len(test_img11_paths), 11, np.int32) test_labels12 = np.full(len(test_img12_paths), 12, np.int32) test_labels13 = np.full(len(test_img13_paths), 13, np.int32) test_labels14 = np.full(len(test_img14_paths), 14, np.int32) test_labels = np.array([np.r_[test_labels0, test_labels1, test_labels2,test_labels3,test_labels4,test_labels5,test_label s6,test_labels7,test_labels8,test_labels9,test_labels10,test_l abels11,test_labels12,test_labels13,test_labels14]]) svm = cv2.ml.SVM_load(SAVE_TRAINED_DATA_PATH) predicted = svm.predict(test_imgs) # in man hinh print("test labels:", test_labels) print("predicted:", predicted[1].T) score = np.sum(test_labels == predicted[1].T)/len(test_labels[0]) print("Score:", score) if __name__ == '__main__': main() timkiem.py import glob from cv2 import cv2 import numpy as np from matplotlib import pyplot as plt from PIL import Image, ImageFilter path0 = glob.glob("train/0/*.jpg") path1 = glob.glob("train/1/*.jpg") path2 = glob.glob("train/2/*.jpg") path3 = glob.glob("train/3/*.jpg") path4 = glob.glob("train/4/*.jpg") path5 = glob.glob("train/5/*.jpg") path6 = glob.glob("train/6/*.jpg") path7 = glob.glob("train/7/*.jpg") path8 = glob.glob("train/8/*.jpg") path9 = glob.glob("train/9/*.jpg") path10 = glob.glob("train/10/*.jpg") path11 = glob.glob("train/11/*.jpg") path12 = glob.glob("train/12/*.jpg") path13 = glob.glob("train/13/*.jpg") path14 = glob.glob("train/14/*.jpg") cv_img = [] SAVE_TRAINED_DATA_PATH = 'data/svm_trained_data.xml' imgs = [] img = cv2.imread('1.jpg') win_size = (64, 64) block_size = (16, 16) block_stride = (4, 4) cell_size = (4, 4) bins = 9 img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) figure_size = 9 img = cv2.blur(img,(figure_size, figure_size)) # hog gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.resize(gray, win_size) hog = cv2.HOGDescriptor(win_size, block_size, block_stride, cell_size, bins) img = hog.compute(gray) imgs.append(img) imgs = np.array(imgs,np.float32) svm = cv2.ml.SVM_load(SAVE_TRAINED_DATA_PATH) predicted = svm.predict(imgs) print(predicted[1].T) kq = predicted[1].T if kq == 0: for img in path0: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 1: for img in path1: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 2: for img in path3: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 3: for img in path3: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 4: for img in path4: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 5: for img in path5: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 6: for img in path6: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 7: for img in path7: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 8: for img in path8: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 9: for img in path9: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 10: for img in path10: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 11: for img in path11: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 12: for img in path12: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 13: for img in path13: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() elif kq == 14: for img in path14: n = cv2.imread(img) cv_img.append(n) plt.figure(figsize=(15,6)) plt.subplot(131) plt.imshow(cv_img[0]) plt.xticks([]), plt.yticks([]) plt.subplot(132) plt.imshow(cv_img[1]) plt.xticks([]), plt.yticks([]) plt.subplot(133) plt.imshow(cv_img[2]) plt.xticks([]), plt.yticks([]) plt.show() else: print("k tim dc anh") print(type(kq)) print(kq)
File đính kèm:
bao_cao_he_co_so_du_lieu_da_phuong_tien.pdf